发现个好博客:http://www.cnblogs.com/hanyonglu/archive/2012/03/27/2419533.html
1、layer-list 用于图片叠放
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/layer" />
layer.xml文件
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="20dp" android:left="20dp">
<bitmap android:src="@drawable/android1"
android:gravity="center" />
</item>
<item android:top="20dp" android:left="20dp">
<bitmap android:src="@drawable/android2"
android:gravity="center" />
</item>
</layer-list>
2、Button状态改变
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button"
android:text="按钮" />
<pre name="code" class="html">button.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/pressed" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/focused" />
<item android:drawable="@drawable/normal" />
</selector>
3、transition 简单的在两帧之间切换
渐变效果代码:
<span style="font-family:Arial;color:#333333;">import android.app.Activity;
import android.graphics.drawable.TransitionDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
public class CrossFade extends Activity {
private ImageView ivLamp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cross_fade);
ivLamp = (ImageView) findViewById(R.id.imageview_lamp);
}
public void onClick_LampOn(View view)
{
TransitionDrawable drawable = (TransitionDrawable)ivLamp.getDrawable();
drawable.startTransition(1000);
}
public void onClick_LampOff(View view)
{
TransitionDrawable drawable = (TransitionDrawable)ivLamp.getDrawable();
drawable.reverseTransition(1000);
}
}
</span>
布局文件:
<ImageView
android:id="@+id/imageview_lamp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/cross_fade" />
<span style="font-family: Arial;">
</span>
<span style="font-family: Arial;">cross_fade</span><span style="font-family: Arial;">.xml文件:</span>
<span style="font-family: Arial;"><?xml version="1.0" encoding="utf-8"?></span>
<span style="font-family: Arial;"><transition xmlns:android="http://schemas.android.com/apk/res/android" ></span>
<item android:drawable="@drawable/lamp_off"/>
<item android:drawable="@drawable/lamp_on"/>
</transition>
4、level-list 同一个ImageView显示不同图片
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
public class Level extends Activity {
private ImageView ivLamp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.level);
ivLamp = (ImageView) findViewById(R.id.imageview_lamp);
ivLamp.setImageLevel(8);
}
public void onClick_LampOn(View view)
{
ivLamp.setImageLevel(15);
}
public void onClick_LampOff(View view)
{
ivLamp.getDrawable().setLevel(6);
}
}
</pre><pre code_snippet_id="426118" snippet_file_name="blog_20140714_14_7392465" name="code" class="html"> <ImageView
android:id="@+id/imageview_lamp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/lamp" />
lamp.xml文件
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/lamp_off" android:minLevel="6"
android:maxLevel="10" />
<item android:drawable="@drawable/lamp_on" android:minLevel="12"
android:maxLevel="20" />
</level-list>
5、inset嵌入可绘制资源
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/inset"
android:orientation="vertical" >
</LinearLayout>
inset.xml文件
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/background"
android:insetBottom="50dp"
android:insetLeft="50dp"
android:insetRight="50dp"
android:insetTop="50dp" />
6、clip剪切操作
import android.app.Activity;
import android.graphics.drawable.ClipDrawable;
import android.os.Bundle;
import android.widget.ImageView;
public class Clip extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.clip);
ImageView imageview = (ImageView) findViewById(R.id.image);
ClipDrawable drawable = (ClipDrawable) imageview.getBackground();
drawable.setLevel(5000);
}
}
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/clip" />
clip.xml文件
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:clipOrientation="horizontal"
android:drawable="@drawable/progress"
android:gravity="left" />
7、shape自定义形状
<TextView
android:layout_width="200dp"
android:layout_height="80dp"
android:layout_margin="20dp"
android:background="@drawable/shape"
android:text="Shape Label"
android:textSize="20sp" />
shape.xml文件(矩形为例):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<!-- 颜色渐变 左上角到右下角-->
<gradient
android:angle="45"
android:endColor="#80FF00FF"
android:startColor="#FFFF0000" />
<padding
android:bottom="7dp"
android:left="7dp"
android:right="7dp"
android:top="7dp" />
<!-- 边框颜色 -->
<stroke
android:width="2dp"
android:color="#FFF" />
<!-- 角度 -->
<corners android:radius="8dp" />
</shape>
代码来自:极客学院 多功能超级手电筒