最近看了一下Android,只看书不总结一下,总感觉东西并没有放在脑子里,人过留名,雁过留声,遂写下这篇总结。
书本看的是《Android编程兵书》,但这篇总结的大纲是按照《第一行代码》的章节目录撰写的。两本书的内容结构大致相同,Android入门的话只看其中一本就够了。
常见控件
1、TextView
属性:
text 指定内容;
grativity:对齐方式(center == center_vertical | center_horizontal)
textSize, textColor
2、Button:注册监听器可以使用匿名类或实现接口
3、EditText:hint属性,maxLines属性解决文字过多导致控件被拉伸
4、ImageView:src属性指定图片
5、ProgressBar
控件的三种可见属性:visible, invisible(控件不可见但仍占据位置), gone(控件不可见且不占据空间)
默认为圆形,style属性可指定为水平进度条并指定最大值,随后可动态更改进度条的进度
6、AlertDialog:当前界面弹出对话框,可屏蔽其它控件的交互能力
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle("this is a dialog");
dialog.setMessage("something important");
dialog.setCancel(false);
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whick){
}
});
dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whick){
}
});
dialog.show();
若在setCancelable()中传入了false;表示dialog是不能通过Back键取消掉的
7、ProgressDialog:在对话框中显示一个进度条,让用户耐心等待。用法和AlertDialog类似
四种基本布局
布局是一种可用于放置很多控件的容器,它可以按照一定的规律调整内部控件的位置。布局之间可互相嵌套。
- LinearLayout:可指定排列方向
android:orientation="vertical"
android:orientation="horizontal"
注意:若排列方向为vertical,内部控件高度不能指定为match-parent,否则会导致其它控件没有位置可放。同理排列方向为horizontal时,内部控件的宽度不能指定为match-parent
LinearLayout关键属性
layout_gravity:指定控件在布局中的对齐方式,可选值:top, center_vertical, bottom。LinearLayout的排列方向时horizontal时,只有垂直方向的对齐才会生效,排列方向为vertical时,只有水平方向的对齐才会生效。
layout_weight:使用比例的方式指定控件的大小
- RelativeLayout
指定和父容器的对齐关系
layout_alignParentLeft layout_alignParentTop
layout_alignParentBottom layout_centerInParent
//指定和其它控件的对齐关系
layout_above layout_toLeftOf
layout_toRightOf layout_below
layout_alignLeft layout_alignRight
- FrameLayout: 无定位方式,所有控件都会摆放在左上角。Fragement组件使用该属性
- TableLayout:使用表格的方式排列控件
属性
stretchColumns属性用来拉伸某一列来适应屏幕宽度 - AbsoluteLayout:官方不推荐使用
创建自定义控件:可以用来解决重复为某种控件绑定相同的事件响应
最常用最难用的控件:ListView用于展示大量数据。默认可以的布局文件:android.R.layout.simple_list_item_1,里面只有一个TextView
定制ListView界面:
- 定义一个实体类,作为ListView适配器的适配类型。
- 为ListView的子项创建一个布局
- 创建一个自定义的适配器,继承自ArrayAdpter,并指定泛型
提升ListView的运行
- ArrayAdapter的getView方法有一个convertView参数,用于将之前加载好的布局进行缓存,以便以后
- 使用viewHolder(新建一个内部子类)对控件的实例进行缓存,避免每次都通过findViewById()来获取控件的实例
ListView的点击事件
使用setOnItemClickListener()方法为ListView注册监听器
单位和尺寸
px:像素,即屏幕中可以显示的最小元素单元
pt:磅,一般用来做字体的单位
dp:密度无关像素,又称dip,它在不同密度的屏幕中显示比例保持一致。Android规定,在160dpi的屏幕上, 1dp = 1px,在320dpi的屏幕上,1dp = 2px。因此使用dp指定控件的宽高,可保证控件在不同密度的屏幕中显示比例保持一致。
sp:可伸缩像素,解决文字大小的适配问题
密度的概念:屏幕每英寸包含的像素数,通常以dpi为单位。可通过代码获得屏幕的密度值
float xdpi = getResources().getDisplayMetrics().xdpi;
float ydpi = getResources().getDisplayMetrics().ydpi;
Tips:
1、隐藏系统自带的标题栏
retuestWindowFeature(Window.FEATURE_NO_TITLE);
网友评论