当前位置:操作系统 > 安卓/Android >>

Android绘图

一、基本绘图

(I)两个重要元素
1.canvas(执行画图动作) 2.paint(风格)
(II)示例代码
从view继承一个新类,MyView
public 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. AnimationDrawable
2. 逐帧动画资源的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表现更优秀。
研究中···

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,