很多时候我们在实现渐变的动画效果时,都会使用到animation,但实际上我们有既简单又完美的解决方法,没错,它就是Transition啦,Transition用于实现两个Drawable之间的淡入淡出的效果,它的属性如下:
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id=""
android:width=""
android:height=""
android:bottom=""
android:drawable=""
android:end=""
android:gravity=""
android:left=""
android:right=""
android:start=""
android:top=""
</transition>
使用:
shape:
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="">
</item>
<item android:drawable="">
</item>
</transition>
xml:
<ImageView
android:id="@+id/iv"
android:layout_centerInParent="true"
android:layout_width="250dp"
android:layout_height="100dp"
android:background="@drawable/shape"/>
通过这2个方法实现让图片淡入淡出的效果
TransitionDrawable drawable= (TransitionDrawable) iv.getBackground();
drawable.startTransition(4000);
TransitionDrawable drawable= (TransitionDrawable) iv.getBackground();
drawable.resetTransition(4000);
inset标签:这个跟全屏布局的效果差不多,貌似很少用到它,它的效果直接就在全屏布局完成了。
scale标签:这个标签用来实现缩放效果,属性如下:
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable=""
android:scaleGravity="" ---设置drawable缩放后的位置,取值和bitmap标签的一样,就不一一列举说明了
android:scaleHeight="" ---设置可缩放的高度,用百分比表示,格式为XX%,0%表示不做任何缩放,50%表示只能缩放一半
android:scaleWidth="" --- 设置可缩放的宽度,用百分比表示,格式为XX%,0%表示不做任何缩放,50%表示只能缩放一半
android:useIntrinsicSizeAsMinimum=""> ---设置drawable原有尺寸作为最小尺寸,设为true时,缩放基本无效
</scale>
示例:
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/christmas"
android:scaleGravity="center"
android:scaleHeight="50%"
android:scaleWidth="10%"
android:useIntrinsicSizeAsMinimum="false">
</scale>
xml:
<ImageView
android:id="@+id/iv"
android:layout_centerInParent="true"
android:layout_width="250dp"
android:layout_height="100dp"
android:background="@drawable/shape"/>
activity中的代码:
ImageView scaleImage = (ImageView) findViewById(R.id.iv);
ScaleDrawable scale = (ScaleDrawable) scaleImage.getBackground();
scale.setLevel(1); ---这里可以设置1到10000的数字,数字越大显示越大。