第3章 软件也要拼脸蛋-UI开发的点点滴滴

目录结构

第3章 软件也要拼脸蛋-UI开发的点点滴滴_第1张图片

3.2 常用的控件使用方法

TextView Button EditText ImageView ProgressBar AlerDialog ProgressDialog

3.3 详解4种基本布局

线性布局 LinearLayout 将它包含的控件在线性方向上排列
相对布局 RelativeLayout 通过相对定位的方式让控件出现在布局的任何位置
帧布局 FrameLayout 没有方便的定位方式, 所有的控件都会默认摆放在布局的左上角
百分比布局 PercentFrameLayout PercentRelativeLayout 可以不再使用wrap_content, match_parent等方式来指定控件的大小, 而是允许直接指定控件在布局中所占的百分比。
需要引入依赖 com.android.support:percent 24.2.1

3.4 自定义控件

  • 1.使用< include /> 布局标签
    隐藏系统自带的标题栏
    ActionBar actionBar = getSupportActionBar();
    If(actionBar != null){
    actionBar.hide();
    }
  • 2 . 创建自定义控件
    1.新建一个类继承view或viewgroup或它们的子类
    2.重载构造方法
    3.实现相关逻辑
    4.在布局中通过全类名引入自定义控件

3.5 最常用和最难用的控件 – ListView

用于大量数据展示的
使用步骤:
1. 设置数据源
2. 将数据源设置给适配器,其中适配器有很多种,根据需求选择合适的就可以了
3. 将适配器设置给ListView

定制ListView的界面:
1定义数据实体类
2为子项listview指定一个自定义的布局。
3创建自定义的适配器,这个自定义适配器可以继承自ArrayAdapter(或BaseAdapter),并将泛型指定为数据实体类
4 接下来和一般步骤差不多

提升ListView的效率
1 . 使用convertView来复用子item
2 . 使用静态ViewHolder来减少findViewById的次数

子项点击事件:
ListView.setOnItemClickListener

3.6 更强大的滚动控件 – RecyclerView

3.6.1 RecyclerView的基本用法

RecyclerView是一个增强版的的ListView,不仅可以轻松实现和ListView同样的效果,还可以优化ListView中存在的各种不足。

看下基本用法:

  • 1 .添加依赖:
    compile ‘com.android.support:recyclerview-v7:25.0.1’
  • 2 .布局中添加RecyclerView控件:
        .support.v7.widget.RecyclerView
        android:id="@+id/rv_"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
  • 3 .编写Adapter基本代码如下:
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那样手动优化。

  • 4 . 设置适配器和布局管理器
    一般布局管理器有三种:
    LinearLayoutManager 线性布局管理器, 可以实现横向和竖直方向的管理
    GridLayoutManager 网格布局管理器
    StaggeredGridLayoutManager 瀑布流管理器
myRecyclerviewAdapter = new MyRecyclerViewAdapter(lists);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recyclerView = (RecyclerView) findViewById(R.id.rv_);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(myRecyclerviewAdapter);

3.6.3 RecyclerView的点击事件

我们可以在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中实现回调接口。

3.7 编写界面的最佳实践

3.7.1 制作Nine-Patch图片

Nine-Patch图片是一种被特殊处理过的png文件,能够指定那些区域被拉伸,那些区域不可以。
界面如下
第3章 软件也要拼脸蛋-UI开发的点点滴滴_第2张图片

在\sdk\tools目录下可以找到draw9patch.bat文件,我们可以通过这个文件制作出Nine-Patch图片,我们可以在图片的四个角绘制一个个的小黑点,上和左边框绘制的部分表示当图片需要拉伸时就描述黑点被描述的区域,右和下边框表示内容会被放置的区域。然后保存下就可以使用了。

3.8 小结与点评

这一章虽然总结得挺少,但是我个人还是会经常使用的,里面还有很多内容书上没有涉及到,以后再专个总结。

你可能感兴趣的:(第一行代码第二版读书笔记)