用户界面笔记

常有的ui的布局


1.LinearLayout:线性布局


用来控制其子View一水平货或垂直方式展开显示


2.RelativeLayout相对布局


用来控制其子View以相对定位或垂直方式展开显示


3.FrameLayout帧布局
每一个子view都代表一个圈面后面出现的会覆盖前面的画面,


通过子view的androidlayout_gravity属性指定子视图的位子


四.常用的视图标签的属性视图的常用属性


id:为控件指定相应的id


 android:layout_width指定当前视图的宽度
 android:layout_height指定空间当中字体的大小
text 指定控件中显示的文字
textSize指定控件中显示文字的大小
background:指定背景图片
layout_gravity控件本身相对于父视图的位置
grvity指定控件的内容的基本位置


内边距属性


android;padding


android:paddingleft


android:paddingtop


android:paddingRight


android:paddingBottom


外边距属性


android:Layout_margin


android:Layout_marginLeft


android:Layout_marginTop


android:Layout_marginRight


android:Layout_marginBotton


相对兄弟视图定位


android:layout_alignLeft


android:layout_alignTop


android:layout_alignRight


android:layout_alignBotton


反方向对齐属性


android:layout_toLeftof


android:layout_toRightof


android:layout_above


android:layout_below


相对父视图定位1


android:layout:alignparentleft


android:layout:alignparentTop


android:layout:alignparentRight


android:layout:alignparentBottom


相对父视图居中属性


android:alyout_centerinparent


android:layout_centerVertical


android:layout_centerHorizontal


3只针对LInearLayout


orientation(方向)


layout_weight(权重)


layout_weight权重的值


=0(默认值):指定多大空间留占据多大的空间


>0将父视图中的可用空间进行分割值越大权重就越大占据的比列就会越大


Layout_weight的使用场景


将布局的宽度或者高度平均分成几个等份


垂直方向上占用中间所用空间或水平方向上占用中间所有空间


5.ListView的使用


1.理解


ListView是一种用来显示多个滑动项列表的ViewGroup


需要使用Adapter将集合数据和每一个item所用对应的布局动态配到LiestView中显示


显示列表listView.setAdapter(adapter)


更新列表adapter.notifyDataSetChanged{}


Data  和  itemLayout  → Adapte →ListView


2使用
ArrayAdapter:显示简单文本列表


ArrayAdapter(Context context,int resource,T[] obect)


B.SimplAdapter抽象的:显示复杂列表


   int getCount();得到集合数据的个数决定能显示多少行


object getItem(int prsition):根据position的到对应的数据对象


View getView(intposition view  converView,ViewGroup parent)


根据position返回对应的带数据的item视图对象


positiom下标


ConverView:可复用的item视图对象为null:没有可复用的我们必须加载一个item


布局文件 并赋值给convertView


不为null:直接使用此试图对象


  后面:找到子view找到对应的书设置数据


parent:listview


d.给ListView的item设置监听item的点击监听:ListView.setOnitemLongClickListemer(listener)


itemde 长按监听


ListView.setonitemClickListener(listemer)特么的长按监听:ListView.


setonItemlongClickListener(listener)


第零层:不优化:


每次执行getView(),都会执行会有卡顿,在数据很多时甚至会内存溢出






 第一层:复用converterView
if(converView == null){
converView = View.inflate(R.layout.xxx);//n+1

}
问题:每次执行getView()都需要执行converView,findViewById()
得到子View
第二层:使用ViewHolder 减少findViewById()的次数
Viewholer holder = null;
if(converView == null){
converterView = View.inflate(R.layout.xxx);
holer = new ViewHoler();
holer.imageView =
(ImageView)converterView.findViewById(xxx);
holer.imageView = 
(TextView)converterView.findViewById(yyy);
converterView.setTag(holder);
    }else  {
holder = (Viewholder)converterView.getTag();
    }
Person p = data.get(position);
holder.imageView.setImageResource(p.getIcon());
holder.textView.setText(p.getName());

static class ViewHolder{
ImageView imageView;
TextView textView;
}
//ison;[{},{}]
问题1:对于联网获取列表数据,如果数据量太大(比如超过100000条甚至更多),
一次获取出来显示,太慢太耗流量:第四层优化
问题2:对于联网获取列表数据,如果包含图片数据,每次都请求获取显示,
太慢太耗流量 :第三层优化
第3层优化:图片三级缓存处理(LRU)
1).内地缓存  优先加载 ,速度最快
2).本地缓存 此优先加载,速度稍快
3).网络缓存 最后加载,速度有网络速度决定(浪费刘江)
第4层:对数据列表进行分页加载显示
1).自己做:通过Scroll监听
listView.setonScrollistener(scrollListener),当到达底部时加载下一页
列表数据并显示
2).使用第三方开源框架:Android - PullToRefresh或其他
6.style和Theme
1).style:多个视图标签属性的集合
好处:复用标签属性
目标:布局文件中的视图标签
2).theme:本质也是style
好处:复用标签属性
目标:功能清单文件中整个应用/Activity
7.练习
1).应用功能编码的基本流程
外观:布局文件,读取数据,定义Adapter,显示列表
行为:设置事件监听,并在回调就去中作出对应的响应
2).初始化显示列表和更新列表
3).GridView的基本使用


_

































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值