网站大量收购闲置独家精品文档,联系QQ:2885784924

Android技能总结全解.doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android技能总结全解

自定义控件,做过控件风格的个性化自定义 按钮控件Button和ImageButton 状态开关按钮ToggleButton 单选复选按钮RadioButton和RadioGroup 单选按钮和复选按钮CheckBox和RadioButton 图片控件ImageView 时钟控件AnalogClock和DigitalClock 进度条ProgressBar和日期与时间选择控件DatePicker和TimePicker等 2、继承已有的控件,实现自定义控件: 安卓中的空间都是继承View类来实现的,重写onDraw方法来绘制我们所需要的控件 Tips: 在已有的控件基础上,通过重写相关方法来实现需求 继承view或viewgroup类,绘制所需的控件,一般通过继承已有的控件,来自定义控件要简单一点 自定义控件图示: 自定义控件方式: 1、方式1: 继承已有的控件;添加自定义的方法,监听器等;对外提供接口。如:滑动开关的例子 2、方式2: 继承View;重写onDraw方法,绘制自定义的样式;添加自定义的方法,监听器等;对外提供接口。如:显示3D效果的例子 ListView的优化并可以熟练应用 ListView的工作原理 首先来了解一下ListView的工作原理(可参见/abased-410889.htm),如图: 1、如果你有几千几万甚至更多的选项(item)时,其中只有可见的项目存在内存(内存内存哦,说的优化就是说在内存中的优化!!!)中,其他的在Recycler中 2、ListView先请求一个type1视图(getView)然后请求其他可见的项目。convertView在getView中是空(null)的 3、当item1滚出屏幕,并且一个新的项目从屏幕低端上来时,ListView再请求一个type1视图。convertView此时不是空值了,它的值是item1。你只需设定新的数据然后返回convertView,不必重新创建一个视图 一、复用convertView,减少findViewById的次数 1、优化一:复用convertView Android系统本身为我们考虑了ListView的优化问题,在复写的Adapter的类中,比较重要的两个方法是getCount()和getView()。界面上有多少个条显示,就会调用多少次的getView()方法;因此如果在每次调用的时候,如果不进行优化,每次都会使用View.inflate(….)的方法,都要将xml文件解析,并显示到界面上,这是非常消耗资源的:因为有新的内容产生就会有旧的内容销毁,所以,可以复用旧的内容。 优化: 在getView()方法中,系统就为我们提供了一个复用view的历史缓存对象convertView,当显示第一屏的时候,每一个item都会新创建一个view对象,这些view都是可以被复用的;如果每次显示一个view都要创建一个,是非常耗费内存的;所以为了节约内存,可以在convertView不为null的时候,对其进行复用 2、优化二:缓存item条目的引用——ViewHolder findViewById()这个方法是比较耗性能的操作,因为这个方法要找到指定的布局文件,进行不断地解析每个节点:从最顶端的节点进行一层一层的解析查询,找到后在一层一层的返回,如果在左边没找到,就会接着解析右边,并进行相应的查询,直到找到位置(如图)。因此可以对findViewById进行优化处理,需要注意的是: 》》》》特点:xml文件被解析的时候,只要被创建出来了,其孩子的id就不会改变了。根据这个特点,可以将孩子id存入到指定的集合中,每次就可以直接取出集合中对应的元素就可以了。 优化: 在创建view对象的时候,减少布局文件转化成view对象的次数;即在创建view对象的时候,把所有孩子全部找到,并把孩子的引用给存起来 ①定义存储控件引用的类ViewHolder 这里的ViewHolder类需要不需要定义成static,根据实际情况而定,如果item不是很多的话,可以使用,这样在初始化的时候,只加载一次,可以稍微得到一些优化 不过,如果item过多的话,建议不要使用。因为static是Java中的一个关键字,当用它来修饰成员变量时,那么该变量就属于该类,而不是该类的实例。所以用static修饰的变量,它的生命周期是很长的,如果用它来引用一些资源耗费过多的实例(比如Context的情况最多),这时就要尽量避免使用了。 class ViewHolder{ //定义item中相应的控件 } ②创建自定义的类:ViewHolder holder = null; ③将子view添加到holder中: 在创建新的listView的时候,创建新的ViewHol

文档评论(0)

6952225 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档