第3章 软件也要拼脸蛋-UI开发的点点滴滴
2017-01-16 21:30
302 查看
目录结构
3.2 常用的控件使用方法
TextView Button EditText ImageView ProgressBar AlerDialog ProgressDialog3.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控件:
<android.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文件,能够指定那些区域被拉伸,那些区域不可以。界面如下
在\sdk\tools目录下可以找到draw9patch.bat文件,我们可以通过这个文件制作出Nine-Patch图片,我们可以在图片的四个角绘制一个个的小黑点,上和左边框绘制的部分表示当图片需要拉伸时就描述黑点被描述的区域,右和下边框表示内容会被放置的区域。然后保存下就可以使用了。
3.8 小结与点评
这一章虽然总结得挺少,但是我个人还是会经常使用的,里面还有很多内容书上没有涉及到,以后再专个总结。相关文章推荐
- 阅读郭林《第一行代码》的笔记——第3章 软件也要拼脸蛋,UI开发的点点滴滴
- 第二行代码学习笔记——第三章:软件也要拼脸蛋——UI开发的点点滴滴
- 第三章 软件也要拼脸蛋,UI开发的点点滴滴——总结
- 软件也要拼脸蛋,UI开发的点点滴滴
- Android应用之个人应用软件开发(1)【需求及UI布局】
- RDIFramework.NET ━ .NET快速信息化系统开发框架-第3章 软件安装、配置、运行方法
- Android开发之UI开发的点点滴滴
- RDIFramework.NET ━ .NET快速信息化系统开发框架-第3章 软件安装、配置、运行方法
- 敏捷软件开发:原则、模式与实践——第3章 计划
- 《第一行代码—Android(第二版)》作者郭霖源码-第3章软件也要拼脸蛋
- 十大最佳第二职业榜:软件开发、UI设计上榜
- 软件开发全套视频教程汇总(javaSE,javaEE,linux,android开发,C# ,web前端,大数据云计算,数据挖掘,web前端,php开发,UI设计,C++开发,3D视频)
- UI开发的点点滴滴
- 工作计划与内容--UI软件开发新人关注
- 第一行代码第二版(郭霖著)笔记之第三章(UI开发的点点滴滴)
- (iOS软件开发UI部分)UIButton基本使用
- 【读书笔记】软件工程·实践者的研究方法第7版 第一部分 软件过程(第3章 敏捷开发)
- 第3章 软件开发过程
- 《第一行代码》 随手笔记——第三章 UI开发的点点滴滴
- 承接C# Winform C/S架构 并基于Devexpress UI控件相关软件开发,有需求可留言联系