Android初体验(九)canvas绘制动画
创建时间:
阅读:
实现效果
自定义一个view
绘制一个小方块,使其不断移动。
方式一
设置矩形坐标为变量并动态改变变量的值,重复调用重绘即可实现移动效果。
#方式二
原理
绘制代码如下:
1 2
| canvas.translate(x,y); canvas.drawRect(0,0,100,100,paint);
|
绘制矩形时会加上x
、y
的偏移量,可以通过不断的改变x
、y
来移动画布从而移动矩形。
步骤
自定义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); }
public TopView(Context context, AttributeSet attrs) { super(context, attrs); }
@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
| @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; if (topView.y<500) topView.y +=10; handler.sendEmptyMessage(0x123); 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" 转载请保留原文链接及作者。