Android Drawable基础(四)
1.TransitionDrawable(渐变资源)
他用于显示两个Drawable之间的淡入淡出的效果。
?:每个可绘制对象由单一 元素内的 元素表示。不支持超过两个项目。要向前转换,请调用 startTransition()。要向后转换,则调用 reverseTransition()。
- 语法
<?xml version="1.0" encoding="utf-8"?>
<transition
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@[package:]drawable/drawable_resource"
android:id="@[+][package:]id/resource_name"
android:top="dimension"
android:right="dimension"
android:bottom="dimension"
android:left="dimension" />
</transition>
?:item接受bitmap元素
- 新建transition_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/android3" />
<item android:drawable="@drawable/android1" />
</transition>
- 布局代码中使用
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageButton
android:visibility="visible"
android:layout_centerInParent="true"
android:id="@+id/image"
android:src="@drawable/transition_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
- Activity中找到drawable并设置转换的时间
TransitionDrawable drawable = (TransitionDrawable) imageButton.getDrawable();
drawable.startTransition(5000);
public class MainActivity extends AppCompatActivity {
private ImageButton imageButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageButton = findViewById(R.id.image);
TransitionDrawable drawable = (TransitionDrawable) imageButton.getDrawable();
drawable.startTransition(5000);
}
}
- 效果图
2.InsetDrawable(插入)
在 XML 文件中定义的以指定距离插入其他可绘制对象的资源。当视图需要小于视图实际边界的背景时,此类可绘制对象很有用。
例:为一个充满整个屏幕的LinearLayout布局指定背景图,是否可以让背景图不充满屏幕?
此例子就可以用InsetDrawable来实现
- 语法
<?xml version="1.0" encoding="utf-8"?>
<inset
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/drawable_resource"
android:insetTop="dimension"
android:insetRight="dimension"
android:insetBottom="dimension"
android:insetLeft="dimension" />
属性:
值 | 说明 |
---|---|
android:drawable | 资源 |
android:insetTop | 距顶部插入 |
android:insetRight | 距右部插入 |
android:insetBottom | 距底部插入 |
android:insetLeft | 距左部插入 |
- 新建inset_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/in"
android:insetBottom="20dp"
android:insetTop="20dp"
android:insetLeft="20dp"
android:insetRight="20dp"
/>
- 布局代码中使用
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:visibility="visible"
android:id="@+id/image_view"
android:src="@drawable/inset_bg"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
- 效果(四周空白为inset的距离)
未使用InsetDrawable效果图如下: