Android TransitionDrawable&StateListDrawable的使用

来源:互联网 发布:军犬网络舆情监测系统 编辑:程序博客网 时间:2024/04/28 14:17
这个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>

根据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

原创粉丝点击