8.1.3 Android中的13种Drawable小结 Part 3

Android基础入门教程——8.1.3 Android中的13种Drawable小结 Part 3

标签(空格分隔): Android基础入门教程

本节引言:

本节我们来把剩下的四种Drawable也学完,他们分别是: LayerDrawable,TransitionDrawable,LevelListDrawable和StateListDrawable, 依旧贴下13种Drawable的导图:

1.LayerDrawable

层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来绘制他们,索引 值最大的Drawable会被绘制在最上层!虽然这些Drawable会有交叉或者重叠的区域,但 他们位于不同的层,所以并不会相互影响,以<layer-list>作为根节点!

相关属性如下:

使用示例:

运行效果图:

代码实现:

非常简单,结合前面学习的shapeDrawable和ClipDrawable:

layerList_one.xml

=====>>==></item></layer-list>

然后在布局文件中添加一个Seekbar,内容如下:

<SeekBarandroid:layout_width=”match_parent”android:layout_height=”wrap_content”android:indeterminateDrawable=”@android:drawable/progress_indeterminate_horizontal”android:indeterminateOnly=”false”android:maxHeight=”10dp”android:minHeight=”5dp”android:progressDrawable=”@drawable/layerlist_one”android:thumb=”@drawable/shape_slider” />

卧槽,没了?对的,就是这么点东西~说了是层图形对象,我们还可以弄个层叠图片的效果:

运行效果图:

实现代码:

层叠图片的layerlist_two.xml:

=”http://schemas.android.com/apk/res/android”><item><bitmap><itemandroid:left=”25dp”android:top=”25dp”><bitmap><itemandroid:left=”50dp”android:top=”50dp”><bitmap></layer-list>

然后在activity_main.xml里加个ImageView,内容如下:

<ImageView=”@drawable/layerlist_two”/>

简单好用,还等什么,快快应用到你的项目中吧~

2.TransitionDrawable

LayerDrawable的一个子类,TransitionDrawable只管理两层的Drawable!两层!两层! 并且提供了透明度变化的动画,可以控制一层Drawable过度到另一层Drawable的动画效果。 根节点为<transition>,记住只有两个Item,多了也没用,属性和LayerDrawable差不多, 我们需要调用startTransition方法才能启动两层间的切换动画; 也可以调用reverseTransition()方法反过来播放:

使用示例:

运行效果图:

实现代码:

在res/drawable创建一个TransitionDrawable的xml文件

===”@mipmap/ic_bg_meizi2″/></transition>

然后布局文件里加个ImageView,然后把src设置成上面的这个drawable 然后MainActivity.java内容如下:

{private ImageView img_show;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);img_show = (ImageView) findViewById(R.id.img_show);TransitionDrawable td = (TransitionDrawable) img_show.getDrawable();td.startTransition(3000);//你可以可以反过来播放,使用reverseTransition即可~//td.reverseTransition(3000);}}

另外,如果你想实现:多张图片循环的淡入淡出的效果 可参考:Android Drawable Resource学习(七)、TransitionDrawable中的示例 很简单,核心原理就是:handler定时修改Transition中两个图片!

3.LevelListDrawable

用来管理一组Drawable的,我们可以为里面的drawable设置不同的level, 当他们绘制的时候,会根据level属性值获取对应的drawable绘制到画布上,,根节点 为:<level-list>他并没有可以设置的属性,我们能做的只是设置每个<item> 的属性!

item可供设置的属性如下:

使用示例:

运行效果图:

代码实现:

通过shapeDrawable画圆,一式五份,改下宽高即可:

shape_cir1.xml:

===>

接着到LevelListDrawable,这里我们设置五层:

level_cir.xml:

======>

最后MainActivity写如下代码:

{private ImageView img_show;private LevelListDrawable ld;private Handler handler = new Handler() {(Message msg) {if (msg.what == 0x123) {if (ld.getLevel() > 10000) ld.setLevel(0);img_show.setImageLevel(ld.getLevel() + 2000);}}};(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);img_show = (ImageView) findViewById(R.id.img_show);ld = (LevelListDrawable) img_show.getDrawable();img_show.setImageLevel(0);new Timer().schedule(new TimerTask() {() {handler.sendEmptyMessage(0x123);}}, 0, 100);}}

也很简单,一个Timer定时器,handler修改level值~

4.StateListDrawable 生活若剥去理想、梦想、幻想,那生命便只是一堆空架子

8.1.3 Android中的13种Drawable小结 Part 3

相关文章:

你感兴趣的文章:

标签云: