Android开发之UI开发
1.属性android:visibility
(所有控件中都具有的属性)
可选值有三种:visible、invisible、gone
invisible表示控件不可见,但它仍然占据着原来的位置和大小
gone表示控件不可见&控件不占用屏幕空间
还可以在代码中设置控件的可见性:
setVisibility(View.VISIBLE);传入View.VISIBLE、View.INVISIBLE或View.GONE三种值
2.TableLayout的基本结构:
<TableLayout>
<TableRow>
...
</TableRow>
<TableRow>
...
</TableRow>
</TableLayout>
中的两个重要属性
<TableLayout>
<TableRow
android:layout_span="2">
...
</TableRow>
</TableLayout>
让一行控件占据两列
<TableLayout
android:stretchColumns="1">
...
</TableLayout>
将有该属性的一行进行拉伸,达到自动适应屏幕的作用。
3.ListView
ListView的两个优化:
使用用Adapter中的getView()方法的View参数中的布局缓存进行重用,这样就可以不必重复加载布局。
为getView中获得的子view添加一个Viewholder的Tag,这样在每次有布局缓存时,就不用再通过getViewById()来获取一次控件的实例了。
当传入adapter的数据修改后,通过以下语句刷新ListView中的显示:
adapter.notifyDataSetChanged();
将ListView定位到最后一行:
listView.setSelection(contentList.size());
4.dp和sp
dp(密度无关的像素)
2英寸3英寸的320像素480像素中,屏幕密度为320/2=160dip
密度为160时,1dp=1px
密度为320时,1dp=2px
sp(指定文字大小)和dp原理相同
5. 点9图
左和上绘制的线代表拉伸区域,右和下绘制的线代表内容被放置区域
6.碎片(Fragment)
让程序更加合理地利用大屏幕的空间
像这样:
未合理利用空间
利用了Fragment之后的效果
Amazing!!!
image.png
Fragment的用法
静态添加注意事项:
- 需要在xml文件中的<fragment>标签中添加name属性用来指定Fragment的类
-
动态添加碎片
动态添加碎片的关键步骤 -
在碎片中模拟返回栈(按下返回键不是直接退出程序,而是返回上一个fragment中)
将fragment加入回退栈
其中的参数是用于描述返回栈状态的名字
- 碎片和活动之间进行通信
在碎片中获取活动的实例:
MainActivity activity=(MainActivity)getActivity();
在活动中获取碎片的实例:
RightFragment rightFragment=(RightFragment)getFragmentManager().findFragmentById(R.id.right_fragment);
碎片和碎片之间互相调用:
先在碎片中调用相关联的活动,在用这个活动去调用碎片
- fragment的生命周期
运行状态:
fragment相关的代码见
未完待续
网友评论