修炼Android权威指南(第二天)CriminalIntent

本文介绍了CriminalIntent应用开发中的样式资源文件创建方法、dp/sp单位的区别与应用场景、RecyclerView组件的工作原理及其与Adapter和ViewHolder之间的交互流程。

CriminalIntent的开发

今天是第二天,时间有点晚了,但是还是把今天练习的东西总结一下。

样式

样式的XML资源文件,含有用来描述组件行为和外观的属性定义。我们可以创建组件的样式文件,具体做法是将属性定义添加并保存在res/values/目录文件下,然后在布局文件中以@style/my_own_style(样式文件名)的形式引用。
<style name="BigTextStyle">
 <item name="android:textSize">20sp</item>
 <item name="android:padding">3dp</item>
</style> 

dp、sp以及品目像素密度

(1)dp:英文density-independent pixel的缩写,意为密度无关像素。在设置边距、内边距或任何不打算按像素值指定尺寸的情况下,通常都使用dp这种单位。
(2)sp:英文scale-independent pixel的缩写,意为缩放无关像素。我们通常会使用sp来设置屏幕上的字体大小。
(3)pt、mm、in:类似于dp的缩放单位。允许以点(1/72英寸)、毫米或英寸为单位指定用户界面尺寸。但在实际开发中不建议使用这些单位,因为并非所有设备都能按照这些单位进行正确的尺寸缩放配置。

布局参数

(1)不以layout_开头的属性作用于组件。组件实例化时,会调用某个方法按照属性及属性值进行自我配置。
(2)自我配置。以layout_开头的属性则作用于组件的父组件。我们将这些属性统称为布局参数。它们会告诉父布局如何在内部安排自己的子元素。

创建水平模式布局


RecyclerView、Adapter 和 ViewHolder

RecyclerView是ViewGroup的子类,每一个列表项都是作为一个View子对象显示的。这些View子对象既可以是复杂的View对象,也可以是简单的View对象,
这取决于我们队列表显示复杂度的需要。
RecyclerView自身不会创建视图,它创建的是ViewHolder,而ViewHolder引用着一个个itemView,如图9-6所示。
adapter:图9-6进行了简化,实际上隐藏了一些信息。RecyclerView自己不创建ViewHolder。这个任务实际是由adapter来完成的。adapter是个控制器对象,从模型层获取数据,然后提供给RecyclerView显示,起到了沟通的桥梁作用。

adapter负责:
 创建必要的ViewHolder;
 绑定ViewHolder至模型层数据。
要创建adapter,首先要定义RecyclerView.Adapter子类。然后由它封装从CrimeLab获取的crime。
RecyclerView需要显示视图对象时,就会去找它的adapter。图9-7展示了一个RecyclerView可能发起的会话。
首先,通过调用adapter的getItemCount()方法,RecyclerView询问数组列表中包含多少个对象。
接着, RecyclerView 调 用 adapter 的 createViewHolder(ViewGroup, int) 方法创建ViewHolder以及ViewHolder要显示的视图。
最后,RecyclerView会传入ViewHolder及其位置,调用onBindViewHolder(ViewHolder,int)方法。adapter会找到目标位置的数据并绑定到ViewHolder的视图上。所谓绑定,就是使用模型数据填充视图。
整个过程执行完毕,RecyclerView就能在屏幕上显示crime列表项了。需要注意的是,相对于onBindViewHolder(ViewHolder, int)方法,createViewHolder(ViewGroup, int)方法的调用并不频繁。一旦创建了够用的ViewHolder,RecyclerView就会停止调用createViewHolder(...)方法。然后,通过回收利用旧的ViewHolder节约时间和内存。

总结

不知道这样写到底合不合理,感觉不是有点不像个人总结,而是读书笔记。反正坚持吧。。奋斗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值