摘要: 作为Android应用程序开发者都知道android是一个“碎片化”的世界。多种系统版本、多种尺寸、多种分辨率、多种机型,还有不同的厂商定制的不同ROM,你开发的应用会在不可预期的手机上报错。这给开发适配带来不小的难度。这篇文章会告诉我们怎么解决这个问题。1、Android碎片化1.1、andr... 阅读全文
posted @ 2014-08-01 13:18 张兴业 阅读(4037) 评论(0) 推荐(3) 编辑
摘要: Android L 开发者预览支持库提供两个新的Widgets,RecyclerView和CardView。使用这两个Widgets可以显示复杂的Listview和卡片布局,这两个Widgets默认使用Material design。RecyclerView RecyclerView是一个更高... 阅读全文
posted @ 2014-07-07 15:43 张兴业 阅读(747) 评论(0) 推荐(0) 编辑
摘要: 原文:http://blog.csdn.net/xyz_lmn/article/details/35552103 Material Design是google io开发者大会推出的新的设计语言,Material Design不像Android过去采用的Holo风格那样深沉,增加或修改了阴影动画功能... 阅读全文
posted @ 2014-06-28 14:19 张兴业 阅读(1191) 评论(1) 推荐(1) 编辑
摘要: 距离swift发布10天了,也简单看了一下swift的语法,个人感觉相对于object-c很是简单明了。Swift的出现并不能说明iOS开发简单了很多,有可能会变得复杂,你需要学习两门编程语言,因为在程序员的世界里,务实并不是最重要的,在找工作中,可能面试官会问你OC的知识,还有Swift的知识... 阅读全文
posted @ 2014-06-12 23:59 张兴业 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 遇到的问题:1)ANR2)ListView 卡顿,不流畅3)Activity启动慢4)动画不流畅,启动前卡顿5)自定义view启动慢6) OOM7)数据库大量操作8)长时间运行后,程序变慢基本思想:1)语言层解决问题,语法上提高性能2)合理的数据结构和算法3)布局优化,布局深度控制4)工作线程与UI... 阅读全文
posted @ 2014-05-31 13:56 张兴业 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 这篇文章转自国外一个技术大牛的博客,首先感谢这位大牛的无私奉献。 Android应用中有一名位 Google书报摊的应用,他实现了一种新的ActionBar风格。当用户初始进入该界面的时候,为一个透明的 ActiionBar ,这样利用充分的空间显示大图片,如果用户滚动页面需要查看内容... 阅读全文
posted @ 2014-04-25 08:12 张兴业 阅读(3920) 评论(4) 推荐(4) 编辑
摘要: 周末升级了墨迹天气,看着引导界面做的不错,模仿一下,可能与原作者的代码实现不一样,但是实现的效果还是差不多的。先分享一篇以前的文章,android动画的基础知识,《Android UI开发第十二篇——动画效果Animation(一)》,写的不好,读者也可以自行搜索下android动画相关知识。模... 阅读全文
posted @ 2014-04-24 22:17 张兴业 阅读(1912) 评论(1) 推荐(0) 编辑
摘要: 做支付的都知道Square,一个伟大的支付公司,2009年成立,前几天估值已达到50亿美元。手机刷卡器就是从Square开始的。尽管中国地区对支付行业有很多的限制,还是有很多的中国特色的“Square”出现,例如,比较早的乐刷、盒子支付,包括我们的刷卡器产品,晚一些的拉卡拉、银联等等。这里不讨论... 阅读全文
posted @ 2014-04-24 10:20 张兴业 阅读(1485) 评论(0) 推荐(2) 编辑
摘要: 显示图像时,很多个性化显示,圆形或圆角、气泡等等,我们这一篇文章探讨一下圆形和气泡的显示,仿照易信中的实现,先看下效果图:代码:public class RoundImageView extends ImageView { public RoundImageView(Context conte... 阅读全文
posted @ 2014-04-03 19:41 张兴业 阅读(359) 评论(0) 推荐(0) 编辑
摘要: Android的View绘制是从根节点(Activity是DecorView)开始,他是一个自上而下的过程。View的绘制经历三个过程:Measure、Layout、Draw。基本流程如下图:performTraversals函数,具体的可以参考一下源代码:private void performTraversals() { final View host = mView; ... host.measure(childWidthMeasureSpec, childHeightMeasureSpec); ... host.layout(0, 0, host.ge... 阅读全文
posted @ 2014-03-19 20:57 张兴业 阅读(417) 评论(0) 推荐(0) 编辑
摘要: ScrollTricks是一个开源控件,实现了两个简单功能:1、Quick Return:向上滑动时,View也向上滑动并且消失,当向下滑动时,View马上出现。例如Google Now的搜索功能。2、Sticky:类似的同步滚动,特定的View最多滑动到顶部并保持固定不动。例如大众点评或美团的“立即购买”功能。 ScrollTricks的... 阅读全文
posted @ 2014-03-19 20:56 张兴业 阅读(775) 评论(0) 推荐(0) 编辑
摘要: 大家都知道Android中加载view是从Activity的onCreate方法调用setContentView开始的,那么View的具体加载过程又是怎么的呢?这一节我们做一下分析。首先追踪一下代码:Activity中:public void setContentView(int layoutResID) { getWindow().setContentView(layoutResID);}public Window getWindow() { return mWindow;}final void attach { mWindow = PolicyManager.make... 阅读全文
posted @ 2014-03-05 21:04 张兴业 阅读(800) 评论(0) 推荐(0) 编辑
摘要: Android中触摸事件传递过程中最重要的是dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()方法。这个是困扰初学者的问题之一,我开始也是。这里记录一下dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()的处理过程,以供记忆。 dispatchTouchEvent是处理触摸事件分发,事件(多数情况)是从Activity的dispatchTouchEvent开始的。执行super.dispatchTouchEvent(ev),事件向下分发。 onInte... 阅读全文
posted @ 2014-03-05 21:04 张兴业 阅读(1757) 评论(0) 推荐(0) 编辑
摘要: SurfaceView也是继承自View,它和我们以前接触到的View(Button、TextView等)最大的不同是,SurfaceView可以有一个单独的线程进行绘制,这个线程区别于UI线程(主线程),因此SurfaceView绘制并不占用主线程资源。 SurfaceView实现通常是自定义,继承SurfaceView并实现SurfaceHolder.Callback接口。使用SurfaceView,所有的绘图工作必须得在Surface 被创建之后才能开始,所以Callback 中的surfaceCreated 和surfaceDestroyed 就成了绘图处理代码的边界。实现Sur... 阅读全文
posted @ 2014-03-05 21:03 张兴业 阅读(800) 评论(0) 推荐(0) 编辑
摘要: 前面介绍过使用HierarchyViewer和Android lint来优化我们的程序,这一篇算是总结性的,借助一个小例子来说用怎么优化应用布局。这个例子是android官网给出的,作者也当一把翻译。 多数开发者可能会这样认为,使用基本的布局结构会产生高效的布局性能,其实这个想法是不完全正确的。我们每一个添加到应用的控件和布局,都需要初始化、布局、绘制,这些多是需要时间降低显示速度的。另外,嵌套多个使用layout_weight属性的LinearLayout实例会花费更大的代价,因为每一个子布局都要测量两次。如果这种布局使用在ListView或者GridView中,渲染时会更耗时。 下面,.. 阅读全文
posted @ 2013-12-30 19:14 张兴业 阅读(1432) 评论(2) 推荐(1) 编辑
摘要: 作为移动应用开发者,我们总希望发布的apk文件越小越好,不希望资源文件没有用到的图片资源也被打包进apk,不希望应用中使用了高于minSdk的api,也不希望AndroidManifest文件存在异常,lint就能解决我们的这些问题。Android lint是在ADT 16提供的新工具,它是一个... 阅读全文
posted @ 2013-12-27 11:21 张兴业 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 作为移动应用开发者,我们总希望发布的apk文件越小越好,不希望资源文件没有用到的图片资源也被打包进apk,不希望应用中使用了高于minSdk的api,也不希望AndroidManifest文件存在异常,lint就能解决我们的这些问题。Android lint是在ADT 16提供的新工具,它是一个代码扫描工具,能够帮助我们识别代码结构存在的问题,主要包括:1)布局性能(以前是layoutopt工具,可以解决无用布局、嵌套太多、布局太多)2)未使用到资源3)不一致的数组大小4)国际化问题(硬编码)5)图标的问题(重复的图标,错误的大小)6)可用性问题(如不指定的文本字段的输入型)7)manifes 阅读全文
posted @ 2013-12-27 11:07 张兴业 阅读(1928) 评论(0) 推荐(0) 编辑
摘要: Android入门还是很简单的,看两本书,翻阅几篇文章,搭建了开发环境就算入门了。可是怎样开发一款完备的android应用呢,开发一款高端的android应用又需要那些知识呢,作者根据几年的开发经验做了一点总结,有不足之处也请读者补充。一、网络开发技能 开发的应用肯定会联网,在移动互联网时代,单机应用会越来越少。如果我们开发的应用缺少与服务器的交互,内容上不会丰富,更有可能的是我们无法控制到应用,得不到用户及用户反馈。网络连接中用的最多的无非是Http或者Tcp。Android中http使用提供了三个包,我们常用的是HttpClient、HttpURLConnection。网络上也有对htt. 阅读全文
posted @ 2013-12-26 11:05 张兴业 阅读(4143) 评论(10) 推荐(6) 编辑
摘要: 先说些题外话,希望路过的各位支持,博主有幸成为2013年度博客之星的候选人,期待你的一票,谢谢。投票猛击:http://vote.blog.csdn.net/blogstaritem/blogstar2013/xyz_lmn 进入正题,我们这一篇文章会提到为什么使用HierarchyViewer,怎么使用HierarchyViewer,后者内容会多一下。为什么使用HierarchyViewer 不合理的布局会使我们的应用程序UI性能变慢,HierarchyViewer能够可视化的角度直观地获得UI布局设计结构和各种属性的信息,帮助我们优化布局设计。HierarchyViewer是我们优化程.. 阅读全文
posted @ 2013-12-25 23:17 张兴业 阅读(1478) 评论(1) 推荐(2) 编辑
摘要: 先说些题外话,希望路过的各位支持,博主有幸成为2013年度博客之星的候选人,期待你的一票,谢谢。投票猛击:http://vote.blog.csdn.net/blogstaritem/blogstar2013/xyz_lmn 进入正题,我们这一篇文章会提到为什么使用HierarchyViewer,怎么使用HierarchyViewer,后者内容会多一下。为什么使用HierarchyViewer 不合理的布局会使我们的应用程序UI性能变慢,HierarchyViewer能够可视化的角度直观地获得UI布局设计结构和各种属性的信息,帮助我们优化布局设计。HierarchyViewer是我们优... 阅读全文
posted @ 2013-12-25 23:09 张兴业 阅读(7614) 评论(0) 推荐(0) 编辑
摘要: 这篇文章的效果也是大家常见的,各种通讯应用的对话列表都是这种方式,像微信、whatsapp、易信、米聊等。我们这篇文章也权当为回忆,形成简单的笔记。这篇文章参考了2009年Google IO中的《TurboChargeYourUI-How to make your AndroidUI fast and efficient》和2010年Google IO中的《The World of List View》。像2009年Google IO的资料还是很前沿的,那会android开发资料很少,最重要的就是参考google发布的各种资料。 在《TurboChargeYourUI-How to make. 阅读全文
posted @ 2013-12-22 20:03 张兴业 阅读(1696) 评论(9) 推荐(3) 编辑
摘要: 亲爱的小伙伴们,作者在6号至20号,一直在休假中,出去也没带电脑,今天回家意外的发现自己有幸成为“CSDN 2013年度博客之星评选”的候选人,在此也谢谢各位小伙伴们的支持,谢谢CSDN的鼓励。我的投票地址如下,同时分享几张出去玩拍的美景。投票地址:http://vote.blog.csdn.net/blogstaritem/blogstar2013/xyz_lmn美图:更多0 阅读全文
posted @ 2013-12-22 12:41 张兴业 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 亲爱的小伙伴们,作者在6号至20号,一直在休假中,出去也没带电脑,今天回家意外的发现自己有幸成为“CSDN 2013年度博客之星评选”的候选人,在此也谢谢各位小伙伴们的支持,谢谢CSDN的鼓励。我的投票地址如下,同时分享几张出去玩拍的美景。投票猛击:http://vote.blog.csdn.net/blogstaritem/blogstar2013/xyz_lmn美图: 阅读全文
posted @ 2013-12-21 19:20 张兴业 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 为了应用的推广、传播,很多的应用中都有“分享”功能,一个按钮,点击后会出现短信、微博等等一切实现了分享功能的应用列表。这一篇文章主要介绍怎么调用分享功能和怎么实现分享接口让自己应用出现分享列表中。Android应用中能很方便的完成这些功能,这也正是Android的伟大之处,他能很简单的完成应用之间的沟通以相互整合。调用分享功能1、分享文本分享功能使用的隐式启动Activity的方法,这里的Action使用的是ACTION_SEND。[java]view plaincopyprint?IntentsendIntent=newIntent();sendIntent.setAction(Intent 阅读全文
posted @ 2013-11-26 21:52 张兴业 阅读(4750) 评论(2) 推荐(1) 编辑
摘要: 使用一些浏览器或者输入法应用时会有一些手势操作,还可以自定义手势。这些神奇的操作是怎么做的呢?这一篇重点记录手势的识别和创建。这篇的内容使用到的是android.gesture包,具体的例子参考的是Sample中GestureBuilder程序。1、手势创建 手势创建主要用到GestureOverlayView和GestureLibrary。GestureOverlayView的父类为android.widget.FrameLayout,是手势绘图区。GestureLibrary类主要对手势进行保存、删除等操作的,存放手势的仓库。下面给出创建手势的例子,如下图,可以定义如图手势打开csdn.. 阅读全文
posted @ 2013-11-25 21:27 张兴业 阅读(1588) 评论(0) 推荐(0) 编辑