自定义Drawable
2016-01-20 09:51
218 查看
我们都看过关于为什么你应该适当的使自定义Views和如何能帮助你正确的封装你的应用程序代码的帖子。但非视图相关的部分如何转化为我们apps的其他部分的这种思考方式,我们对此并不非常了解。
在我的应用Fragment中,有些地方我使用自定义Drawables来封装我的逻辑,就像你在customView中做的一样。
在Fragment中,有一些使用水平滚动条作为一个选择视图的地方。这意味着该中心图标就是“选中”的图标,整个条目就该平滑的平移进去或平移出。为此,一个好的显示转换将非常棒。
虽然这并非完全必要,但我觉得它是一个能让这个滑动更加流畅并增加一个触摸的类在app上的效果。我本可以设置多个imageviews并让他们每个独立出来,但这真是使用自定义drawables的好地方~
在Android里,Drawables和Views实际上非常的相似。他们有相似的方法,例如padding和bounds(layout),并且都有一个可以被重写的draw方法。就我而言,我需要能够在一个选中的图片和一个未选中的图片之间进行转换基础上的一个值。
在我们的例子中,我们简单地创建一个包含其他Drawables(和方向)的Drawable子类.
接下来,我们需要设定能够与图片选择过程中相关联的值。幸运的是Drawable内置了这种类型的事件,setLevel(int).
一个Drawable的level是介于0和10000的整数,它只是允许Drawable基于一个值去自定义它的view.在我们的例子中,我们 可以定义5000作为图片被选择时的状态值,其他没被选中状态值在5000左右两侧。 All we need to do now is to override the draw(Canvas canvas) method to draw the appropriate drawable by clipping the canvas based on the current level.
现在我们要做的就是重写draw(Canvas canvas)方法,通过基于当前的level裁剪画布去绘制相应的图片。
就这样,我们可基于滑动的位置以简单地设置icon的level,结束了~
想要看自定义Drawable源码,请在Github上搜索Gisthere
http://www.jcodecraeer.com/plus/list.php?tid=18&TotalResult=1439&PageNo=4
在我的应用Fragment中,有些地方我使用自定义Drawables来封装我的逻辑,就像你在customView中做的一样。
用例
在Fragment中,有一些使用水平滚动条作为一个选择视图的地方。这意味着该中心图标就是“选中”的图标,整个条目就该平滑的平移进去或平移出。为此,一个好的显示转换将非常棒。虽然这并非完全必要,但我觉得它是一个能让这个滑动更加流畅并增加一个触摸的类在app上的效果。我本可以设置多个imageviews并让他们每个独立出来,但这真是使用自定义drawables的好地方~
自定义Drawables
在Android里,Drawables和Views实际上非常的相似。他们有相似的方法,例如padding和bounds(layout),并且都有一个可以被重写的draw方法。就我而言,我需要能够在一个选中的图片和一个未选中的图片之间进行转换基础上的一个值。在我们的例子中,我们简单地创建一个包含其他Drawables(和方向)的Drawable子类.
一个Drawable的level是介于0和10000的整数,它只是允许Drawable基于一个值去自定义它的view.在我们的例子中,我们 可以定义5000作为图片被选择时的状态值,其他没被选中状态值在5000左右两侧。 All we need to do now is to override the draw(Canvas canvas) method to draw the appropriate drawable by clipping the canvas based on the current level.
现在我们要做的就是重写draw(Canvas canvas)方法,通过基于当前的level裁剪画布去绘制相应的图片。
http://www.jcodecraeer.com/plus/list.php?tid=18&TotalResult=1439&PageNo=4
相关文章推荐
- Android16_SQLiteDatabase
- myeclipse8.5设值注释格式
- 盘点完了国外的了,现在我们谈谈国内的吧,这个对于英语没有什么要求
- 《Learn Ruby the Hard Way》
- cloudera manager 及CDH卸载
- Android PopupWindows使用
- OJ 系列之常规练习题(一)
- 生成器表达式
- spring事务的传播特性
- mysql 连接数据库
- android:scaleType属性
- 【手把手教你全文检索】Apache Lucene初探
- iOS 触摸事件处理
- Android用代码来实现selector
- 快速Android开发系列网络篇之Volley
- 【LEETCODE】73-Set Matrix Zeroes [Python]
- Android15_SQL基础入门
- 20160119知识点总结
- 如何查看当前CRS 是处于enable还是处于disable?
- 学习一种新编程语言要做的10几个练习