第六章(2) Android中的Drawable

5. LevelListDrawable

借用Amy_LuLu__的图

LevelListDrawable对应于 标签,它同样表示一个 Drawable集合,集合中的每个 Drawable都有一个等级 (level)的概念。根据不同的等级, LevelListDrawable会切换为对应的 Drawable



    
    
    

每个item表示一个Drawable,并且有对应的等级范围,由android:minLevelandroid:maxLevel来指定,在最小值和最大值之间的等级会对应此item中的Drawable

android:background="@drawable/levellistdrawable"

tv = findViewById(R.id.tv);
Drawable drawable = tv.getBackground();
drawable.setLevel(1);

当将它作为View的背景时,可以通过DrawablesetLevel()方法来设置不同的等级,从而切换具体的Drawable。如果它被用来作为ImageView的前景Drawable,那么还可以通过ImageViewsetImageLevel()方法来切换Drawable。最后,Drawable的等级是有范围的,即0~10000,最小等级是0,这也是默认值,最大等级是10000



iv = findViewById(R.id.iv);
iv.setImageLevel(2);

6. TransitionDrawable

TransitionDrawable对应于标签,它用于实现两个Drawable之间的淡入淡出的效果。

第六章(2) Android中的Drawable_第1张图片
借用https://www.jianshu.com/p/ebd7d61b153f的图

android:top,android:right,android:bottom,android:left表示的是Drawable四周的偏移量。



    
    

将上面的TransitionDrawable设置为View的背景,当然也可以在ImageView中直接作为Drawable来使用。


最后,通过它的startTransitionreverseTransition方法来实现淡入淡出的效果以及它的逆过程。

tv = findViewById(R.id.tv);
TransitionDrawable drawable = (TransitionDrawable) tv.getBackground();
drawable.reverseTransition(3000);

7. insetDrawable

第六章(2) Android中的Drawable_第2张图片
借用Amy_LuLu__的图

insetDrawable对应于 标签,它可以将其他 Drawable内嵌到自己当中,并可以在四周流出一定的间距。当一个 View希望自己的背景比自己的实际区域小的时候,可以采用 insetDrawable来实现,同时我们知道,通过 LayerDrawable也可以实现这种效果。




    
        
    


android:insetTopandroid:insetRightandroid:insetBottomandroid:insetLeft,分别表示顶部,底部,右边,左边内凹的大小。

你可能感兴趣的:(第六章(2) Android中的Drawable)