Android 2D绘图总结

Android中可在XML文件中定义的绘图子类包括:

AnimationDrawable、BitmapDrawable、ClipDrawable、ColorDrawable、GradientDrawable、InsetDrawable、LayerDrawable、LevelDrawable、RotateDrawable、ScaleDrawable、StateListDrawable、TransitionDrawable,利用这些对象可以定义一些自己的绘图子类。

 

以TransitionDrawable为例,

 

<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon"/>
<item android:drawable="@drawable/icon1"/>
</transition>

 

 就定义了两个图片淡入淡出的对象。

 

 

Android中的动画有补间动画(Tween Animation)以及帧动画(Frame Animation)。

 

补间动画可以定义的效果有透明效果(Alpha)、尺度变换(Scale)、移动(Translate)、旋转(Rotate),可以定义其中的一种或者多种,多种动画的组合使用Set作为容器。

 

下面是多种效果组合的补间动画定义

 

<set android:shareInterpolator="false"
	xmlns:android="http://schemas.android.com/apk/res/android">

	<scale android:interpolator="@android:anim/accelerate_decelerate_interpolator"
		android:fromXScale="1.6" android:toXScale="0.6" android:fromYScale="1.6"
		android:toYScale="0.6" android:pivotX="50%" android:pivotY="50%"
		android:fillAfter="false" android:duration="3000">
	</scale>
	<set android:interpolator="@android:anim/decelerate_interpolator">

		<scale android:fromXScale="0.6" android:toXScale="1.2"
			android:fromYScale="0.6" android:toYScale="1.2" android:pivotX="50%"
			android:pivotY="50%" android:startOffset="3000" android:duration="5000">
		</scale>

		<rotate android:fromDegrees="0" android:toDegrees="-45"
			android:pivotX="50%" android:pivotY="50%" android:startOffset="3000"
			android:duration="5000">
		</rotate>

		<alpha android:fromAlpha="1.0" android:toAlpha="0.6"
			android:startOffset="3000" android:duration="5000">
		</alpha>
	</set>
</set>

 

帧动画是用来播放事先安排好的一组图像来产生动画效果,使用XML来定义,方便修改。

 

下面是一个帧动画定义的例子

 

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/gif1" android:duration="500"></item>
<item android:drawable="@drawable/gif2" android:duration="500"></item>
<item android:drawable="@drawable/gif3" android:duration="500"></item>
<item android:drawable="@drawable/gif4" android:duration="500"></item>
</animation-list>

 

 在程序中的使用如下

 

imageView = (ImageView)findViewById(R.id.ImageView01);
imageView.setBackgroundResource(R.anim.animationlist);
animationListDrawable = (AnimationDrawable)imageView.getBackground();

 

帧动画的启动不能够在Oncreate方法中启动,因为此时AnimationDrawable还没有完全和Window接触,视图还没有显示。

 

 如果希望一开始就启动动画,则在下面的事件中启动动画。

 

	@Override
	public void onWindowFocusChanged(boolean hasFocus) {
		// TODO Auto-generated method stub
		super.onWindowFocusChanged(hasFocus);
		
		if(hasFocus){
			animationListDrawable.start();
		}else{
			animationListDrawable.stop();
		}
	}
 

 

你可能感兴趣的:(android,xml)