常有的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的基本使用
_
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的基本使用
_