Archive for 四月 2014

每天进步一点点 2013-04-25

1、避免创建不必要的对象。最好能重用对象,而不是每次在需要的时候就创建一个功能相同的新对象。如果对象是不可变的,或者已知不会变,都可以重用。
2、消除过期引用。虽然Java有垃圾回收,但垃圾回收基于引用计数,只有对象没有被其他对象引用时,才能被回收。特别注意在数组以及集合中,他们包含的对象都被数组以及集合类引用,需要手工从数组或集合类对象中删除或设为null,否则只能等到引用他们的数组或集合对象被回收。这是引发内存泄露的原因。还有事件监听器,setListener的时候增加了listener的引用,如果没有显示地清除listener,也可能会导致无法回收listener,建议只保存listener的weak reference。总结一下,一个对象,如果被生命周期长于自己的对象引用,就可能发生内存泄露,原因在于只要引用者不释放,被引用者就无法回收。
3、不要使用finalizer方法。释放回收资源应该在不需要的时候主动执行,别想靠这个方法在gc时回收。finalizer不知道什么时候,也不一定会执行。Q:为什么设计这个方法?

Android开发:创建自定义视图–自定义绘画

翻自:http://developer.android.com/training/custom-views/custom-drawing.html
对一个自定义视图来说,最重要的是它的外观,根据你的应用需求,自定义绘画可以很简单也可以很复杂。本课覆盖了最普通的一些操作。
覆盖onDraw()方法
绘制一个自定义视图,最重要的一步是覆盖onDraw()方法。onDraw()方法的参数是一个View可以用于绘制自己的Canvas对象,Canvas类定义了绘制文本,线条,位图和其他很多图元。你可以在onDraw()中用这些方法创建自己的UI。
在你调用任何绘画方法前,创建一个Paint对象是很必要的。下一节详细讨论Paint.
Continue reading ‘Android开发:创建自定义视图–自定义绘画’ »

Android开发:创建自定义视图–创建一个View类

翻自:http://developer.android.com/training/custom-views/create-view.html
设计良好的定制视图与其他精心设计的类相似。它用一种易于使用的接口封装了一些特殊的方法集合,它高效使用内存和CPU等等。除了良好的设计以外,一个定制视图应该:
符合Android标准
提供定制的可在xml布局中使用的风格属性
发送可访问性事件(针对盲人等)
兼容多个Android平台
Continue reading ‘Android开发:创建自定义视图–创建一个View类’ »

Android开发:UI最佳实践 创建自定义视图

翻自:http://developer.android.com/training/custom-views/index.html
创建自定义视图
Android已经包含了大量的用于展示数据和用户交互的View类,但有时你的应用有内建View类不能满足的特别需要,本课程教你如何创建自己的强健的,可复用的View.

课程:
创建一个View类
创建一个像内建View一样的类,有自定义属性并且支持ADT布局编辑器
自定义绘画(覆盖OnDraw方法)
使用Android图形系统让你的应用与众不同
让View可以交互
用户期望一个View可以流畅响应,并且很自然地使用手势。本节讨论如何使用手势检测,物理和动画,给你的用户一种专业的感觉。
优化View
如果卡,不管你的UI有多漂亮,用户也不会喜欢。学会如何避免一般的性能问题,如何使用硬件加速让你的定制绘画运行更快。

Android开发:屏幕适配-实现可适配的UI Flow(交互方式)

翻自http://developer.android.com/training/multiscreen/adaptui.html
UI flow大致是交互方式的意思,本节讲的是根据不同的layout,在代码中判断,并实现不同的交互方式。
应用当前显示的界面依靠布局,但UI flow可以是不同的。举例来说,如果你的应用是双栏的,在左栏的item上点击将会在右栏上显示内容;如果这是单栏的,内容会在自身上显示(或者是开了个不同的Activity)
判断当前布局
由于你每个布局的实现有些不同,要做的第一件事可能就是先判断当前用户浏看到的是哪个布局。举例来说,你可能需要知道用户是在单栏还是双栏模式。你可以通过判断一个view是否存在,是否可见来实现。
Continue reading ‘Android开发:屏幕适配-实现可适配的UI Flow(交互方式)’ »

Android开发:屏幕适配-支持不同的屏幕密度

翻自:http://developer.android.com/training/multiscreen/screendensities.html
本课程向你展示如何通过提供不同的资源和使用与分辨率无关的测量单位(除px以外的)来支持不同的屏幕密度
Continue reading ‘Android开发:屏幕适配-支持不同的屏幕密度’ »

Android开发:屏幕适配-支持不同的屏幕尺寸

翻自Android官方文档:http://developer.android.com/training/multiscreen/screensizes.html
本节向你展示用以下方法支持不同的屏幕尺寸:
1、确保你的布局可以调整大小以适应不同屏幕
2、根据屏幕配置提供适当的UI布局
3、确保正确的布局应用到正确的屏幕
4、提供正确缩放的图片(不同的屏幕,图片大小不同)
Continue reading ‘Android开发:屏幕适配-支持不同的屏幕尺寸’ »

Android开发:UI最佳实践-为兼容多种屏幕设计(屏幕适配)

翻自Android官方文档:http://developer.android.com/training/multiscreen/index.html
Android运行在几百种不同屏幕尺寸的设备上,小到手机,大到电视机。所以,设计你的应用使它能够兼容所有的屏幕尺寸,让尽可能多的用户可以使用是非常重要的。
适配不同的设备类型是不够的。每种屏幕尺寸为用户交互提供了不同的可能和挑战,所以,为了满足用户并且让他们印象深刻,你的就算必须超越"支持多种屏幕":必须为每种屏幕配置优化用户体验。
本课程向你展示如何实现为不同屏幕配置优化的用户交互。
每堂课的范例代码演示了为多屏优化的最佳实践。你可以下载,并应用到你的程序中。
本课程和相关的鸽子使用Fragment,Android 3.0以下版本需要下载support包
范例下载:http://developer.android.com/shareables/training/NewsReader.zip
1、支持不同的屏幕尺寸
本课程将引导您如何设计一个适配多个不同屏幕尺寸的布局(使用dp,RelativeLayout,屏幕尺寸和方向界定符,别名过滤器和点9图片)

2、支持不同的屏幕密度
本节向你展示如何支持有不同像素密度的屏幕(使用密度独立像素,提供适用不同密度的图片)注:后面的好理解,不同的drawable下放不同size的图片,前面的什么意思?

3、实现适配的UI Flow(个人理解UI Flow就是交互流程)
这节课向你展示了如何以适配多个屏幕大小/密度组合(运行时检测活动布局,根据当前的布局,处理屏幕配置更改)实现UI Flow的方式。注:个人理解,就是在Java代码中动态改layout