Android绘图

14 篇文章 0 订阅

一、基本绘图

(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表现更优秀。
研究中···
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值