当前位置: 代码迷 >> Android >> Android 2D绘图小结
  详细解决方案

Android 2D绘图小结

热度:28   发布时间:2016-05-01 18:29:01.0
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();		}	}
?

?

  相关解决方案