android 剩余,关于android:android-剩余部分
一、指标
把握ConvertView的原理和应用【重点】
把握ViewHolder的原理和应用【重点】
学会创立Activity的个别步骤
学会利用Intent实现界面跳转
学会利用Intent实现界面间传值【重点】
ListView在每次调用getView办法中都要执行2个耗时。
解决方案:在getView办法中应用convertView和ViewHolder
inflate办法耗时:convertView解决
findViewById办法耗时:ViewHolder解决
二、应用ConvertView进行优化
ConvertView工作原理:
Android渲染ListView遵循以下准则:
无论总量多少,Android只渲染以后屏幕的item项。
被渲染过的item项,他的视图对象会被保留到Recycler中,新华如屏幕的item项将从Recycler中间接回去缓存的视图,而不是再通过inflate办法反射获取。
论断:
无论总量多少,Recycler中只须要缓存N+1个视图对象,即可保障整个ListView的显示(N为一屏所显示的item数量)
无论总量多少,inflate办法最多调用N+1次。
三、应用ViewHolder进行二级优化
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
ViewHolder holder = null;
if(convertView == null){
convertView = inflater.inflate(R.layout.item, null);
holder = new ViewHolder();
holder.logo = convertView.findViewById(R.id.logo);
holder.title = convertView.findViewById(R.id.title);
holder.version = convertView.findViewById(R.id.version);
holder.size = convertView.findViewById(R.id.size);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
Map map = list.get(position);
holder.logo.setImageResource((Integer)map.get("logo"));
holder.title.setText((String)map.get("title"));
holder.version.setText((String)map.get("version"));
holder.size.setText((String)map.get("size"));
return convertView;
}
public class ViewHolder {
ImageView logo;
TextView title;
TextView version;
TextView size;
}
ViewHolder的工作原理:
ViewHolder缩小耗时的原理
ViewHolder是一个自定义的类,它存储了通过findViewById获取来的空间对象。
当ConvertView被新建时,ViewHolder也随之一起缓存到Recycler中
当ConvertView被从新利用时,ViewHolder也被随之取出,从而能够间接给各个控件赋值,而无需再次调用findViewById办法。
论断
无论总量多少,findViewById办法最多调用N+1组(N为一屏显示的item数)
android 剩余,关于android:android-剩余部分相关推荐
- Unity获取Android手机的RAM和剩余RAM和ROM
Unity获取Android手机的RAM和剩余RAM和ROM 前言 一.Android工程方法的实现 二.生成aar 三.Untiy中的调用 前言 项目工作需要,在游戏APP运行时,获取当前手机的剩余 ...
- android 模板 ui布局,Android UI布局
一.线性布局-LinearLayout(至上而下布局) 其中 android:orientation="vertical"意思为垂直 方向的线性布局,此处的"vertic ...
- 【Android 应用开发】Android 开发错误集锦
1. eclipse的Device中不显示手机 在eclipse中连接不上手机,出现adb server didn't ACK fail to start daemon 错误. 出现这种原因是因为a ...
- android使组件居中,Android图文居中显示控件使用方法详解
最近项目中用到了文字图标的按钮,需要居中显示,如果用TextView实现的方式,必须同时设置padding和drawablePadding.如下: android:layout_width=" ...
- android app 主界面,android ViewPager实现App主界面Tab菜单页面切换和点击事件
Tabhost实现页面滑动切换比较麻烦,这里介绍一下viewPage 控件. 实现了三屏滑动带标题点击和tab页面内按钮的的点击事件实现: viewPage 的优点是可以滑动切换缺点是MainAct ...
- android屏幕适配流程,Android屏幕适配姿势
GitHub地址 为什么要屏幕适配? device_framentation.png 统计 碎片化 品牌机型碎片化 屏幕尺寸碎片化 操作系统碎片化 为了保证用户获得一致的用户体验效果,使得某一元素在A ...
- android 自动 键盘,关于Android中的软键盘
InputMethodService为我们的输入法创建了一个Dialog,并且将该Dialog的Window的某些参数(如Gravity)进行了设置,使之能够在底部或者全屏显示.当我们点击输入框时,系 ...
- android 底部tab效果,Android 仿微信底部渐变Tab效果
先来看一下效果图 除了第三个的发现Tab有所差别外,其他的基本还原了微信的底部Tab渐变效果 每个Tab都是一个自定义View,根据ImageView的tint属性来实现颜色渐变效果,tint属性的使 ...
- android鸿洋布局,Android基础ConstrainLayout约束布局的介绍和使用
写在前面:之前稍微复杂的设计实现,我们都可能会借助于嵌套实现,我们知道嵌套越多,性能就越低.而我们布局一般都是在xml里面进行实现,拖拽的话估计现在android开发者都不会去使用.为了提升开发者的可 ...
- android内存占用分析,Android App性能评测分析-内存篇
1.内存了解 在Android App的性能优化的各个部分里,内存方面的知识较多且不易理解,内存的问题绝对是最令人头疼的一部分,需要对内存基础知识.内存分配.内存管理机制等非常熟悉,才能排查问题. 1 ...
最新文章
- vs2019装了WDK后,编译其他vc工程,提示无法打开文件msvcprtd.lib
- c语言判断素数squ,poj1811——Prime Test//素数判断+整数分解因子
- P3804-[模板]后缀自动机【SAM】
- opcua协议服务器端口号,opc ua服务器 数据配置
- android responsebody转json_SpringBoot 项目开发是如何返回 json 数据以及数据封装
- pygame.error: video system not initialized的解决办法
- 3进制计算机发展,三进制计算机(中国三进制计算机)
- applet 打印的属性和配置
- java复习二十一天[多线程终]
- Map中的keySet方法
- 教你如何鉴别原装和组装线孔耳机
- Retrofit使用简介
- config语言和config.in文件
- ExpandableTextView——一个可折叠的Textview
- 2022秋招前端面试题(五)(附答案)
- 微信小程序状态码列表
- 高德地图-web端根据地理编码和逆地理编码
- GD32f303之rs485配置
- 科研 | 认知电子战简介
- android饼状图简书,自定义 view 练手 - 简单的饼状图
热门文章
- 六种方式实现hibernate查询
- 已知数组存放一批QQ号码,QQ号码最长为11位,最短为5位String[] strs = {“12345“,“67891“,“12347809933“,“98765432102“,“67891“,“1
- OJ1060: 逆序数字(C语言)
- windows apche php mysql zend_Windows XP上安装配置 Apache+PHP+Mysql+Zend
- 信息奥赛一本通(1325:【例7.4】 循环比赛日程表)
- 信息学奥赛一本通(1188:菲波那契数列(2))
- Sightseeing Cows(POJ-3621)
- Primes on Interval(CF-237C)
- 数列分块入门 4(LibreOj-6280)
- 高橋君とカード / Tak and Cards(AtCoder-2037)