总结



 3.常用的UI布局
  1). LinearLayout: 线性布局
         用来控制其子View以水平或垂直方式展开显示
2). RelativeLayout:相对布局
  用来控制其子View以相对定位的方式进行布局显示
3). FrameLayout:帧布局
  每一个子 View都代表一个画面,后面 出现的会覆盖前面的画面
  通过子View的android:layout gravity属性来指定子视图的位置
 4.常用的视图标签的属性
1).  视图的常用属性
  届性名 作用
  id  为控件指定相应的ID @+id/idname
layout_ width  指定当前视图的宽度
layout height   指定当前视图的宽度
  text  指定控件当中显示的文字
textSize  指定控件当中字体的大小
  background      指定该控件所使用的背景(图片|颜色)
  ayout gravity   控件本身相对于父视图的位置
grivity      指定控件中的内容的基本位置


内边距属性
  android:padding
  android:paddingLeft
  android:paddingTop
android:paddingRight
android:paddingBottom
外边距属性
  android:layout lmargin
  androidlayout marginLeft
androidlayout marginTop
android:layout marginRight
android:ayout marginBottom
  2).只针对RelativeLayout
  相对兄弟视图定位
  同方向对齐属性
  androidlayout. alignleft
android:layout alignTop
  android:layout alignRight
android:layout alignBottom
反方向对齐属性
  androidlayout toleftOf
androidlayout toRightOf
android;layout above
android;layout below


相对父视图定位
  与父视图同方向对齐属性
  android:layout alignParentLeft
android: layout. alignParentTop
android: layout alignParentRight
android:layout alignParentBottom
相对父视图居中属性
  android;layout centerInParent
android:layout tenterVertical
android; layout CenterHorizontal


3).只针对LinearLayout
  orientation(方向)
layout_ weight(权重)
layout_ weight(权 重)的值
  =0(默认值):指定多大空间就占据多大的空间
  >0:将父视图中的可用空间进行分割,传越大权重就越大,占据的比例就会越大
Layout_ weight的使用场景
  将布局的宽度或高度平均分成几个等份
  垂直方向上占用中间所有空间或水平方向上占用中间所有空间
5.ListView的使用
1).理解
ListView是-秧用来晶示多↑个可滑幼項(tem)列表的的ViwGroup
  需要使用Adapter将集合数据和毎-个ltem所対座的布局功杰活配到ListView中豆示一
  湿示列表: listViewsetAdapter(adapter)
  更新列表: adapter.notifyDataSetChanged()




2).使用
  a. ArravAdapter :  显示简单文本列表
  ArrayAdapter(Context context,  intresource, T[] objects)
  b. SimpleAdpater :显示复杂列表
  SimpleAdapter(Context context, List<? extends Map<String, ?>> data,int resource, String[] from, int[] to) {
  C. BaseAdpater (抽象的):显示复杂列表
  int getCount() :得到集合数据的个数,决定了能显示多少行
  0bject getI tem(int position) :根据position得到对应的数据对象
  View getView(int positi on,  View convertView,ViewGroup parent)
  //根据position返回对应的带数据的I tem视图对象
position:下标
convertView:可复用的Item视图对象
为null;没有可复用的我们必须加载一个item的布局文件,并赋值给convertView
不为null:直接使用视图对象
后面:找到子View,找到对应的数据,设置数据
  parent : ListView
  d.给ListView 的Item设置监听
  item的点击监听:listView. setOnI temClickListener(listener)
  item的长按监听:  listView. setOnI temLongClickListener (listener)
  3).优化
第0层:不优化:
  每次执行ketView(),都会执行:  converterView=View. inflate(R. layout. xxx);
  问题:效率太低,在快速滑动时会有卡顿,在数据很多时甚至会内存溢出
  第1层:复用converterView
  if (converterView=nul1) {
  converterView = View. inflate (R. layout. xxx); //n+1}
  问题:每次执行ketVi ew()都需要执行converterVi ew. findVi ewById()得到子View
  第2层:使用ViewHolder,减少findViemById0的次数
  Viewholder holder = null;
if(converterView==null){
    converterView = View. inflate (R.1ayout. xxx);
holder = newViewHolderO:
holder. imageView =
  (ImageVi ew) converterView findViewByIa(xxx);
  ho1der. textView =
  (TextView) converterView findVi ewById(vyy)
  converterVi ew. setTag(ho1der);}e1se{
  ho1der = Wi ewho1 derP converterView. getTag();}
  Person pF data. get (posi ti on);
  ho1 der. imaseView. setImageResource (p. getIcon());
ho1 der. textView. setText (p. getName());


  static class ViewHo1der {
ImageView imageView
TextView textView    }
//json: [0, 0]
问题1:对于联网获取列表数据,如果数据量太大(比如超过00000条
  甚至更多),一次获取出来显示,太慢太耗流量:第四层优化
  问题2:  对于联网获取列表数据,如果包含图片数据,每次都请求获取显示,太慢太耗流量: 第三层优化
  第3层优化:图片三级缓存处理(LRU)
  1).内存缓存优先加载,速度最快
2).本地缓存次优先加载,速度稍快
  3).网络缓存最后加载,速度由网络速度决定(浪费流量)
  第4层:对数据列表进行分页加载显示
  1).  自己做:通过Scrol1监听
  listView. setonScrolllistener (scolllistener),当到达底部时加载下一页列表数据并显示
  2).使用第三方开源框架: Android-PullToRefresh 或其它


6. style和Theme
1). style :多个视图标签属性的集合
好处:复用标签属性
目标:布局文件中的视图标签
2). theme :本质也是style
好处:复用标签属性
目标:功能清单文件中整个应用/Activity I
7.练习
1).应用功能编码的基本流程
外观:布局文件,读取数据,定义Adapter,显示列表
行为:设置事件监听,并在回调就去中作出对应的响应
2).初始显示列表和更新列表
3).GridView的基础使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值