canvas教程

Android-Canvas使用技巧

字号+ 作者:H5之家 来源:H5之家 2016-12-22 15:01 我要评论( )

Android-Canvas使用技巧 最近项目涉及到多媒体这一块,因此对Canvas的使用技巧做一个总结,供以后查询。下面是一个Bitmap旋转的Demo: package com.jony.canvas;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Bitmap

Android-Canvas使用技巧

最近项目涉及到多媒体这一块,因此对Canvas的使用技巧做一个总结,供以后查询。下面是一个Bitmap旋转的Demo:

package com.jony.canvas; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends Activity implements OnClickListener { private final static int UPDATE = 0x1; private Button rotate; private static ImageView image; // Handler应该使用static和final关键字进行限制,否则引用该对象的时候可能存在内存泄露 public static final Handler myHandler = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case UPDATE: Bitmap destmap = (Bitmap) msg.obj; image.setImageBitmap(destmap);// 设置ImageView的显示内容 break; default: break; } }; }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rotate = (Button) findViewById(R.id.rotate); image = (ImageView) findViewById(R.id.image); rotate.setOnClickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } @Override public void onClick(View v) { final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image01); new MyThread(bitmap).start(); } class MyThread extends Thread { private final static int ROTATE_DGREES = 45; private Bitmap bitmap; private Paint paint; private Matrix matrix; public MyThread(Bitmap bitmap) { this.bitmap = bitmap; matrix = new Matrix(); } @Override public void run() { for (int i = 0; i < ROTATE_DGREES; i++) { // 创建一个原图大小的空白Bitmap Bitmap bg = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); // 创建画布 Canvas canvas = new Canvas(bg); //canvas.drawColor(0xFF000000);清屏处理 canvas.drawColor(0x00000000);// 设置画布为透明背景 // 达到图片旋转效果有两种方式:1、旋转Canvas 2、矩阵旋转 canvas.rotate(i);// 旋转角度 canvas.drawBitmap(bitmap, 0, 0, paint); // 旋转矩阵 //matrix.setRotate(i); //canvas.drawBitmap(bitmap, matrix, paint); // image.setImageBitmap(bg);// 切忌,非UI线程不能处理UI信息 Message message = myHandler.obtainMessage(); message.obj = bg; message.what = 0x1; myHandler.sendMessage(message); } // 复位 Message message = myHandler.obtainMessage(); message.obj = bitmap; message.what = 0x1; myHandler.sendMessage(message); } } }
代码比较简单,在此不做过多解释。

效果图:





代码下载地址:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 网友对Project Canvas Mac版 V1.2.4 官方版安装和使用技巧的讨论

    网友对Project Canvas Mac版 V1.2.4 官方版安装和使用技巧的讨论

    2016-09-14 18:00

  • 【原】PNG的使用技巧

    【原】PNG的使用技巧

    2016-06-17 12:04

  • zencoding使用技巧

    zencoding使用技巧

    2016-06-05 15:00

  • CSS media使用技巧

    CSS media使用技巧

    2016-03-13 10:01

网友点评