Android初体验(九)canvas绘制动画

  1. 实现效果
  2. 方式一
    1. 原理
    2. 步骤
      1. 自定义view
      2. activity中改变x,y的值

实现效果

自定义一个view绘制一个小方块,使其不断移动。

方式一

设置矩形坐标为变量并动态改变变量的值,重复调用重绘即可实现移动效果。

#方式二

原理

绘制代码如下:

1
2
canvas.translate(x,y);//设置偏移距离
canvas.drawRect(0,0,100,100,paint);

绘制矩形时会加上xy的偏移量,可以通过不断的改变xy来移动画布从而移动矩形。

步骤

自定义view

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class TopView extends View {
public int x,y=200;//方块的初始位置

public TopView(Context context) {
super(context);
}//重写view方法

public TopView(Context context, AttributeSet attrs) {
super(context, attrs);
}//重写view方法

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(0xff123456);

canvas.translate(x,y);//设置偏移距离
canvas.drawRect(0,0,100,100,paint);
}
}

activity中改变x,y的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//使用handler更新UI
@SuppressLint("HandlerLeak")
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what==0x123) topView.invalidate();
}
};

//按钮事件
public void run(View view) {
new Thread(){
@Override
public void run() {
topView.x=0;topView.y=200;
while (topView.x<500 || topView.y<500) {
if (topView.x<500) topView.x += 10;//改变x值
if (topView.y<500) topView.y +=10;//改变y值
handler.sendEmptyMessage(0x123);//让主线程更新UI
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com

文章标题:Android初体验(九)canvas绘制动画

本文作者:子非鱼

发布时间:2018-12-09, 11:05:56

最后更新:2018-12-09, 21:28:01

原始链接:https://Wangsr.cn/2018/12/09/2018-2018-12-09-Android初体验-九-canvas绘制动画/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏