Android 第二章

来源:互联网 发布:阿里云ecs sn型号 编辑:程序博客网 时间:2024/05/19 03:22

五大布局

RelativeLayout 相对布局

一些常用属性

属性 说明 基于父控件 android:layout_alignParentTop 将控件放置于父控件内的顶部 android:layout_alignParentBottom 将控件放置于父控件内的底部 android:layout_alignParentLeft 将控件放置于父内的左侧 android:layout_alignParentRight 将控件放置于父控件内的右侧 android:layout_centerHorizontal 在父控件内水平居中 android:layout_centerVertical 在父控件内垂直居中 基于一个同层次控件 android:layout_above 放置在一个同层次控件的上方 android:layout_below 放置在一个同层次控件的下方

LinearLayout 线性布局

一些常用属性

属性 说明 android:orientation 排列方向 android:layout_weight 比重,用于子空间 android:layout_weightSum 总比重,用于父控件,当此属性没有设置值的时候,将根据子控件比重自动计算

FrameLayout 帧(框架)布局

会根据layout文件中的层次关系显示,比如layout中 元素Button在元素TextView之前,那么显示的时候Button就在最底层,TextView在Button之上

AbsoluteLayout 绝对布局

不推荐使用,除非只在一种机型上运行的app,否则视图不忍直视

TableLayout 表格布局

很少用到,类似于表格,可以设置列数

ListView

首先为了使用ListView需要有一个适配器(这里新建了一个类,继承自BaseAdapter.也可以使用匿名内部类)
    public class ListViewAdapter extends BaseAdapter {        //此实例用于读取layout配置文件        private LayoutInflater layoutInflater = null;        //一个用于显示的数组        private String[] buttons = {"去评价", "功能介绍", "系统通知", "帮助与反馈", "检查新版本"};        //构造函数,需要一个Context类型的参数        public ListViewAdapter(Context context) {            //为layoutInflater赋值            layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);        }        //返回ListView中要展示内容的总数        @Override        public int getCount() {            return buttons.length;        }        //返回每一项        @Override        public Object getItem(int i) {            return buttons[i];        }        //为每一项设置一个ID        @Override        public long getItemId(int i) {            return i;        }        //返回每一项的视图        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            if (view == null) {                //通过layoutInflater加载已存在的layout布局文件                //注意是R.layout.XXX 而不是 R.id.XXX                view = layoutInflater.inflate(R.layout.layout_list_view, null);            }            //获取控件,并赋值            TextView lblName = (TextView) view.findViewById(R.id.lblName);            lblName.setText(buttons[i]);            return view;        }    }
适配器定义好之后,就是使用了,代码如下:
    public class MainActivity extends AppCompatActivity {        @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            requestWindowFeature(Window.FEATURE_NO_TITLE);            setContentView(R.layout.activity_main);            //获取ListView,前提是在布局文件中已经定义好一个ListView            ListView listView = (ListView) findViewById(R.id.listView);            //设置ListView的适配器            listView.setAdapter(new ListViewAdapter(MainActivity.this));        }    }

布局的优化

布局的优化主要通过以下几个方法
方法 说明 减少布局的层次 去除不必要的布局,最好布局的层次深度不要超过10层,能用相对布局实现的地方,就不要使用其他布局嵌套的方式来世实现 使用include 对于一些公共的视图,可以统一写在一个layout文件中通过include来导入 使用merge标签 使用merge代替不重要的布局,因为merge标签在解析的时候不会被保留 ViewStub 需要时加载,对于某些不是第一时间要使用的,可以在需要的时候加载
0 0