一、基本绘图
(I)两个重要元素
1.canvas(执行画图动作) 2.paint(风格)(II)示例代码
从view继承一个新类,MyViewpublic class MyView extends View
{
public MyView(Context context, AttributeSet set)
{
super(context, set);
}
@Override
protected void onDraw(Canvas cnavas)
{
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Style.STROKE);
canvas.drawRect(new Rect(10, 10, 50, 20), paint);
}
}
(III)绘图路径
Path path = new Path();
path.lineTo(x1,y1);
path.lineTo(x2,y2);
path.lineTo(x3,y3);
path.lineTo(x4,y4);
canvas.drawPath(path, paint);
二、逐帧动画
(I)两个重要元素:
1. AnimationDrawable2. 逐帧动画资源的xml
(II)
1.在res|anim下定义xml动画文件anim_pro<?xml version="1.0" encoding="utf-8"?>
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/icon" android:duration="150" />
<item android:drawable="@drawable/icon2" android:duration="150" />
<item android:drawable="@drawable/icon3" android:duration="150" />
</animation-list
onshot->true循环播放 false不循环
2.编写Java代码
AnimationDrawable的动画默认不播放,加载完anim后可以通过start和stop函数控制。
a.加载anim
ImageView imgV = (ImageView)findViewById(R.id.animView);//加载view
imgV.setBackgroundResource(R.drawable.anim_pro);//加载动画资源
anim = (AnimationDrawable)imgV.getBackground();//获得动画
b.控制anim开始结束
anim.stop() or anim.start();
三、补间动画
(I)补间动画的几个interpolator实现类
accelerate_interpolator动画加速器。动画在开始时最慢,然后逐渐加速。decelerate_interpolator动画减速器。动画在开始时最快,然后逐渐减速。
accelerate_decelerate_interpolator动画加减速器。动画在开始和结束时速度最慢,但在前半部分时开始加速,在后半部分时开始减速。
(II)动画资源文件anim.xml
<?xml version="1.0" encoding="UTF-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<!-- 定义缩放变换 -->
<scale android:fromXscale="1.0"
android:toXscale="0.01"
android:fromYScale="1.0"
android:toYScale="0.01"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="true"
android:duration="3000"/>
<!-- 定义透明度的变换 -->
<alpha
android:fromAlpha="1"
android:toAlpha="0.05"
android:duration="3000"/>
<!-- 定义旋转变换 -->
<rotate
android:fromDegrees="0"
android:toDegrees="1800"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000"/>
</set>
(III)Java代码
加载动画资源文件
ImageView imgV = (ImageView)findViewById(R.id.animV);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.anim);
anim.setFillAfter(true);//设置动画结束后保留结束状
控制动画
imgV.startAnimation(anim);
SurfaceView
在游戏动画方面SurfaceView比普通View表现更优秀。研究中···