美文网首页
布局属性和优化

布局属性和优化

作者: Summer_27d1 | 来源:发表于2018-05-16 12:05 被阅读0次

常用UI的布局
1.LinearLayout: 线性布局
用来控制其子View以水平和垂直方式展开
2.RelativeLayout: 相对布局
用来控制其子view以相对定位的方式进行布局显示
3.FrameLayout: 帧布局
每一个子view都代表一个画布,后面出现的会覆盖前面的画面
通过view的android:layout_gravity属性来指定子视图的位置

  1. 常用视图的属性:
    1.视图的常用属性


    image.png

内边距的属性:


image.png

外边距的属性


image.png

只针对RelativeLayout:
相对兄弟视图定位
同方向对齐属性:


image.png
反对向对齐属性:
image.png

相对于父视图:

image.png

对于权重:


image.png

ListView的理解使用

image.png
image.png

经常使用的适配器:
ArrayAdaptater


image.png
image.png
image.png
image.png image.png

BaseAdapter: 需要重写四个方法:


image.png

四个方法:
1.getCount() : 得到集合的个数
2.getItem() : 根据position得到对应的数据对象
3.getItemId(): 返回对应数据的ItemID
4.getView(): 得到Item视图对象
其中 convertView可以复用
为null 没有复用,我们必须加载布局,并赋值,不为null,直接用此视图对象
后面:找到子view找到对应的数据,设置数据 给listView的Item点击监听
listView.setOnItemClickListenner(listener)
item的长按监听
listView.setOnLongItemClickListener(listener)
--------------优化--------------

第0层:
不优化

       每次都会执行getView(),都会执行  convertView=View.inflate(R.layout.XXX);

问题:效率太低,再快速滑动时会有卡顿,在数据多的时候甚至内存溢出

第1层:
复用convertView

if(convertView==null){
convertView=View.inflate(R.layout.XXX); //n+1
}
问题: 每次执行getview()都需要执行convertView.findViewByid()得到子view

第二层:
使用ViewHolder,减少findViewByid()的次数 减到n+1次
ViewHolder holder=null;
if(convertView==null){
convertView=View.inflate(R.layout.XXX); //n+1
holder=new ViewHolder();
holder.imageView=(ImageView)convertView.findViewById(xxx);
holder.textView=(TextView)convertView.findViewById(yyy);
convertView.setTag(holder);
}else{

holder=(ViewHolder)convertView.getTag();
}

person p= data.get(position);//之前创建的类
holder.imageView.setImageResource(p.getIco());
holder.textView.setText(p.getName());

static class ViewHolder(){
ImageView imageView;
TextView textView;
}
问题1:
对于联网获取列表数据,如果数据量太大(比如超过100000)条甚至更多一次取出来显示,太慢太消耗流量
问题2.对于联网获取列表数据,如果包含图片数据,每次请求获取显示,太慢太耗流量
第三层:
图片三级缓存处理(LRu算法)
1.内存缓存,优先加载,速度最快
2.本地缓存,次优先加载。速度稍快
3.网络缓存,最后加载,速度由网络速度决定(浪费流量)

第4层:
对数据列表进行分页加载显示
1.自己做:通过Scroll监听
listView。setOnScrollListener(scrollListenter),当到达底部时加载下一页列表数据并显示
2.使用第三方开源框架:Aandroid-PullToRefresh或其他

Style和Theme
1.style: 多个视图标签属性的集合
好处:复用标签属性
目标: 布局文件中的视图标签
Theme: 本质也是style
好处:复用标签属性
目标:功能清单文件中整个应用Activity

相关文章

  • 布局属性和优化

    常用UI的布局1.LinearLayout: 线性布局用来控制其子View以水平和垂直方式展开2.Relati...

  • 第15章 Android性能优化

    布局优化使用RelativeLayout,减少嵌套 :用于布局重用,只支持android:layout_开头的属性...

  • 你会经常遇见的android性能优化方面知识总结

    项目源码 目录 布局优化 绘制优化 内存泄漏优化 ListView和Bitmap优化 布局优化 减少布局文件的层级...

  • android ListView优化

    android listView优化关键点 属性设置:取消快速滚动对图片缓存; adapter优化; 布局文件:布...

  • Android性能优化1

    1.布局优化2.绘制优化3.响应速度优化和ANR日志分析 布局优化 布局优化思想就是,尽量减少布局文件的层级,以便...

  • Android 布局优化

    布局优化主要从以下几点进行着手 减少布局层次 和 复杂度 优化绘制流程 按需加载布局 减少布局层次 和 复杂度 首...

  • Android 性能优化篇

    布局优化 布局优化的思路是减少布局层次。 1.同等层次的情况下,能使用 LinearLayout 和 FrameL...

  • Android性能优化汇总(逐步更新中...)

    Android中的性能优分为以下几个方面:布局优化、网络优化、安装包优化、内存优化。 一.布局优化 布局优化的本质...

  • Android性能优化

    Android性能优化包括布局优化、绘制优化、内存优化、线程优化、响应速度优化、Bitmap优化和ListView...

  • Android面试题:性能优化

    文章目录 布局优化绘制优化内存优化响应速度优化线程优化 布局优化 核心思想:减少布局的层级优化方式: 多嵌套情况可...

网友评论

      本文标题:布局属性和优化

      本文链接:https://www.haomeiwen.com/subject/munudftx.html