TextView Button EditText ImageView ProgressBar AlerDialog ProgressDialog
线性布局 LinearLayout 将它包含的控件在线性方向上排列
相对布局 RelativeLayout 通过相对定位的方式让控件出现在布局的任何位置
帧布局 FrameLayout 没有方便的定位方式, 所有的控件都会默认摆放在布局的左上角
百分比布局 PercentFrameLayout PercentRelativeLayout 可以不再使用wrap_content, match_parent等方式来指定控件的大小, 而是允许直接指定控件在布局中所占的百分比。
需要引入依赖 com.android.support:percent 24.2.1
用于大量数据展示的
使用步骤:
1. 设置数据源
2. 将数据源设置给适配器,其中适配器有很多种,根据需求选择合适的就可以了
3. 将适配器设置给ListView
定制ListView的界面:
1定义数据实体类
2为子项listview指定一个自定义的布局。
3创建自定义的适配器,这个自定义适配器可以继承自ArrayAdapter(或BaseAdapter),并将泛型指定为数据实体类
4 接下来和一般步骤差不多
提升ListView的效率
1 . 使用convertView来复用子item
2 . 使用静态ViewHolder来减少findViewById的次数
子项点击事件:
ListView.setOnItemClickListener
RecyclerView是一个增强版的的ListView,不仅可以轻松实现和ListView同样的效果,还可以优化ListView中存在的各种不足。
看下基本用法:
.support.v7.widget.RecyclerView
android:id="@+id/rv_"
android:layout_width="match_parent"
android:layout_height="match_parent" />
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {
static class ViewHolder extends RecyclerView.ViewHolder{
public ViewHolder(View itemView) {
super(itemView);
}
}
//创建viewholder实例
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_r, parent, false);
return new ViewHolder(view);
}
//用于对RecyclerView的子类赋值
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
}
//用于获取Recyclervie有多少子项
@Override
public int getItemCount() {
}
}
RecyclerView的适配器第一次用可能会不习惯,当你用久之后就会感觉很爽,它一般只需要实现getItemCount, onBindViewHolder,onCreateViewHolder三个方法就可以了,并且也要实现一个ViewHolder,并且设置为静态的。它的view创建和初始化值是分开的,里面也做了很多优化,不需要像ListView那样手动优化。
myRecyclerviewAdapter = new MyRecyclerViewAdapter(lists);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recyclerView = (RecyclerView) findViewById(R.id.rv_);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(myRecyclerviewAdapter);
我们可以在onCreateViewHolder中给viewholder的子view设置点击事件
//创建viewholder实例
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_r, parent, false);
ViewHolder viewHolder = new ViewHolder(view);
viewHolder.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
return viewHolder;
}
当然最常用的是设置回调,在adapter中设置一个回调接口,然后在Activity中实现回调接口。
Nine-Patch图片是一种被特殊处理过的png文件,能够指定那些区域被拉伸,那些区域不可以。
界面如下
在\sdk\tools目录下可以找到draw9patch.bat文件,我们可以通过这个文件制作出Nine-Patch图片,我们可以在图片的四个角绘制一个个的小黑点,上和左边框绘制的部分表示当图片需要拉伸时就描述黑点被描述的区域,右和下边框表示内容会被放置的区域。然后保存下就可以使用了。
这一章虽然总结得挺少,但是我个人还是会经常使用的,里面还有很多内容书上没有涉及到,以后再专个总结。