Android入门总结-UI

最近看了一下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类似

四种基本布局
布局是一种可用于放置很多控件的容器,它可以按照一定的规律调整内部控件的位置。布局之间可互相嵌套。

  1. 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:使用比例的方式指定控件的大小

  1. RelativeLayout
    指定和父容器的对齐关系
layout_alignParentLeft    layout_alignParentTop
layout_alignParentBottom    layout_centerInParent
//指定和其它控件的对齐关系
layout_above    layout_toLeftOf
layout_toRightOf    layout_below
layout_alignLeft    layout_alignRight
  1. FrameLayout: 无定位方式,所有控件都会摆放在左上角。Fragement组件使用该属性
  2. TableLayout:使用表格的方式排列控件
    属性
    stretchColumns属性用来拉伸某一列来适应屏幕宽度
  3. 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);

你可能感兴趣的:(Android入门总结-UI)