`

TransitionDrawable&StateListDrawable的使用

阅读更多
这个SDK里面的一段代码:
比较适合来做一个简单的动画(比如文字的渐变放大效果等)
Resources res = getResources();
		TransitionDrawable transition = (TransitionDrawable) res
				.getDrawable(R.drawable.expand_collapse);
		ImageView image = (ImageView) findViewById(R.id.toggle_image);
		image.setImageDrawable(transition);
		//当间隔一秒后显示
		transition.startTransition(1000);

这个expand_collapse.xml文件放到Drawable文件夹当中:
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
	    <item android:drawable="@drawable/image_expand" />
		<item android:drawable="@drawable/image_collapse" />
</transition>

当然在测试的时候需要准备2张图片image_expand,image_collapse
http://xueinsz.iteye.com/blog/767585


<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/first_image" />
  <item android:drawable="@drawable/second_image" />
</transition> 


final ImageView image = (ImageView) findViewById(R.id.image);
final ToggleButton button = (ToggleButton) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(final View v) {
    TransitionDrawable drawable = (TransitionDrawable) image.getDrawable();
    if (button.isChecked()) {
      drawable.startTransition(500);
    } else {
      drawable.reverseTransition(500);
    }
  }
}); 

http://www.vogella.com/tutorials/AndroidDrawables/article.html



根据Button状态(normal,focused,pressed)显示不同背景图片
1. 在res/drawable目录下添加一个xml文件,用来描述Button在不同状态下对应的不同图片。我这里给该xml文件命名为btn_background.xml
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:drawable="@drawable/btn_pressed" /> <!-- pressed -->
     <item android:state_focused="true"
           android:drawable="@drawable/btn_normal" /> <!-- focused -->
     <item android:drawable="@drawable/btn_normal" /> <!-- default -->
 </selector>

2. 在res/layout目录下,对应的layout xml文件中,将Button的android:background属性设置为btn_background即可。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/btn_background"
    />
</LinearLayout>


也可以代码实现:
Integer[] mButtonState = { R.drawable.defaultbutton,
                R.drawable.focusedpressed, R.drawable.pressed };
Button mButton = (Button) findViewById(R.id.button);
mButton.setBackgroundDrawable(myButton.setbg(mButtonState));

public StateListDrawable setbg(Integer[] mImageIds) {
            StateListDrawable bg = new StateListDrawable();
            Drawable normal = this.getResources().getDrawable(mImageIds[0]);
            Drawable selected = this.getResources().getDrawable(mImageIds[1]);
            Drawable pressed = this.getResources().getDrawable(mImageIds[2]);
            bg.addState(View.PRESSED_ENABLED_STATE_SET, pressed);
            bg.addState(View.ENABLED_FOCUSED_STATE_SET, selected);
            bg.addState(View.ENABLED_STATE_SET, normal);
            bg.addState(View.FOCUSED_STATE_SET, selected);
            bg.addState(View.EMPTY_STATE_SET, normal);
            return bg;
}

Drawable资源:StateListDrawable,PaintDrawable,ShapeDrawable,NinePatchDrawable,BitmapDrawable
http://www.cnblogs.com/xirihanlin/archive/2010/06/14/1758145.html

LayerDrawable层叠样式layer-list
http://gundumw100.iteye.com/admin/blogs/896923

代码实现ColorStateList及StateListDrawable
http://blog.csdn.net/sodino/article/details/6797821

StateListAnimator 介绍
http://www.open-open.com/lib/view/open1471219964817.html
分享到:
评论

相关推荐

    安卓Android源码——StateListDrawableSample.rar

    此外,StateListDrawable还可以结合动画效果,通过设置TransitionDrawable,使得在状态切换时有平滑的过渡效果。这可以提升用户体验,使界面更加生动。 在"StateListDrawableSample"项目中,可能包含了不同状态下的...

    安卓Drawable的使用

    例如,通过组合使用ShapeDrawable和StateListDrawable,可以创建具有不同状态颜色的按钮;或者通过使用BitmapDrawable和TransitionDrawable,实现图片的平滑过渡效果。 总之,Android的Drawable系统提供了丰富的...

    DrawableDemo.zip

    在布局XML文件中,可以使用`&lt;selector&gt;`标签定义一个StateListDrawable,这样可以根据按钮的状态自动改变其显示的Drawable。 为了更好地利用这些示例,开发者可以下载`DrawableDemo.zip`,查看源代码,了解每个示例...

    玩转Android之Drawable的使用

    - TransitionDrawable:用于过渡效果,比如渐变改变颜色或图片。 - InsetDrawable:在Drawable四周添加内边距,常用于调整视图的显示范围。 - ScaleDrawable:缩放Drawable的大小,提供动画效果。 - ClipDrawable:...

    DrawableDemo2

    例如,在启动一个新的Activity时,可以使用TransitionDrawable来实现背景颜色的渐变动画。 4. **LayerDrawable**:它可以将多个Drawable叠加在一起显示,每个Drawable都可以有自己的位置和大小。这在创建复杂的图形...

    Android高级应用源码-drawable(图片).rar

    本资源包"Android高级应用源码-drawable(图片)"提供了关于Android中Drawable使用的源码示例,这对于理解和掌握Android图形绘制以及UI设计有极大帮助。以下是对这个主题的详细解释: 1. **Drawable概述**: ...

    ResourceTypeDrawable.rar

    9. **TransitionDrawable**:过渡动画Drawable,可以在两个Drawable之间进行平滑过渡。 在"Drawable Demo"中,开发者可能会展示如何在代码中动态加载和使用这些Drawable,以及如何在布局XML文件中声明和引用它们。...

    Android高级应用源码-drawable(图片).zip

    3. **StateListDrawable**:这种Drawable可以响应视图的不同状态,如按下、选中、默认等,并显示相应的图像。源码中可能会展示如何根据视图状态动态改变Drawable的外观。 4. **TransitionDrawable** 和 **...

    Android开发艺术探索.任玉刚(带详细书签).pdf

    6.2.4 StateListDrawable 253 6.2.5 LevelListDrawable 255 6.2.6 TransitionDrawable 256 6.2.7 InsetDrawable 257 6.2.8 ScaleDrawable 258 6.2.9 ClipDrawable 260 6.3 自定义Drawable 262 第7章 Android...

    android drawable

    在实际开发中,`Drawable`经常与动画结合,例如`TransitionDrawable`实现颜色过渡效果,或者`Animatable Drawable`如`AnimatedVectorDrawable`用于矢量图的动画效果。 `Drawable`的缓存和复用也是性能优化的重要...

    Android开发艺术探索

     6.2.4 StateListDrawable / 253  6.2.5 LevelListDrawable / 255  6.2.6 TransitionDrawable / 256  6.2.7 InsetDrawable / 257  6.2.8 ScaleDrawable / 258  6.2.9 ClipDrawable / 260  6.3 自定义Drawable...

    Android中Drawable分类汇总

    - TransitionDrawable:用于在两个Drawable资源之间创建交叉溶解效果。 对于开发者而言,理解和掌握这些Drawable的分类及其使用方式,对于创建美观且功能完善的Android应用至关重要。例如,合理地利用...

    Android自定义Drawable的代码例子

    可以使用`TransitionDrawable`类来实现这个效果。它是一个叠层Drawable,包含两个或更多个Drawable,可以过渡到下一个Drawable。在自定义`TransitionDrawable`时,可以设置动画的持续时间,然后在需要时调用`...

    Android CheckBox墨迹 设置界面

    2. **使用StateListDrawable**:在Selector中,我们可以定义`&lt;item&gt;`元素来表示不同状态。比如,当CheckBox被选中时,可以设置一个背景图片;未选中时,使用另一个背景图片。此外,还可以定义按下、聚焦等状态。 3....

    Android图像介绍-Drawable

    除了这些基本类型,Android还支持其他Drawable,如TransitionDrawable(过渡效果)、ClipDrawable(剪切效果)等,开发者可以根据需求选择合适的Drawable类型。 在实际开发中,Drawable不仅可以作为ImageView的源,...

    Android源码——仿团购应用图片菜单效果源码.rar

    这些可以通过自定义`StateListDrawable`或者使用`TransitionDrawable`来实现动态效果。 此外,考虑到菜单项的选中状态,开发者可能会用到`CheckedChangeListener`或`RadioButton`组,使得用户可以选定一个菜单项并...

    浅谈Android中Drawable使用知识总结

    Drawable可以分为很多种类,包括BitmapDrawable、ShapeDrawable、LayerDrawable、StateListDrawable、LevelListDrawable、TransitionDrawable、InsetDrawable、ScaleDrawable和ClipDrawable等。 首先,我们来说说...

    在RecyclerView中实现item点击效果

    如果想要实现更丰富的点击效果,比如改变item的背景色或透明度,可以在ViewHolder中使用`TransitionDrawable`或`StateListDrawable`。当item被点击时,切换颜色状态以实现动画效果。 综上所述,实现RecyclerView的...

    android 一些Drawable的简单实现

    包括了BitmapDrawable,InsetDrawable,ClipDrawable,TransitionDrawable,GradientDrawable,ScaleDrawable,LevelListDrawable,StateListDrawable,layerDrawable。 里面没有什么复杂的东西,只是简单实现了这些...

    Android Drawable Test

    - `StateListDrawable`: 根据组件状态(如按下、聚焦)显示不同的Drawable。 - `LevelListDrawable`: 根据指定的级别显示不同的Drawable。 - `LayerDrawable`: 将多个Drawable叠加在一起显示,例如按钮的背景。 ...

Global site tag (gtag.js) - Google Analytics