Matrix类可以控制图形的平移,旋转,缩放,倾斜,也可以控制View组件的平移,旋转,倾斜等

下面的例子postInvalidate方法会重绘,随之调用onDraw方法,在onDraw方法里再对位图进行缩放和倾斜操作

package WangLi.Graphics.Matrix;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.drawable.BitmapDrawable;import android.util.AttributeSet;import android.view.KeyEvent;import android.view.View;  public class MyView extends View {    //初始的图片资源private Bitmap bitmap;//Matrix实例private android.graphics.Matrix matrix = new android.graphics.Matrix();//设置倾斜度private float sx = 0.0f;//位图宽和高private int width,height;//缩放比例private float scale = 1.0f;//判断缩放还是旋转private boolean isScale = false;public MyView(Context context, AttributeSet attrs) {super(context, attrs);//获得位图bitmap = ((BitmapDrawable)context.getResources().getDrawable(R.drawable.psb)).getBitmap();//获得位图宽width = bitmap.getWidth();//获得位图高height = bitmap.getHeight();//使当前视图获得焦点this.setFocusable(true);}protected void onDraw(Canvas canvas){super.onDraw(canvas);//重置Matrixmatrix.reset();if(!isScale){//旋转Matrixmatrix.setSkew(sx, 0);}else{//缩放Matrixmatrix.setScale(scale, scale);}//根据原始位图和Matrix创建新图片Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);//绘制新位图canvas.drawBitmap(bitmap2, matrix, null);}public boolean onKeyDown(int KeyCode,KeyEvent event){switch(KeyCode){    //向左倾斜    case KeyEvent.KEYCODE_DPAD_LEFT:     isScale = false;     sx += 0.1;     postInvalidate();     break;                    //向右倾斜    case KeyEvent.KEYCODE_DPAD_RIGHT:         isScale = false;         sx -= 0.1;         postInvalidate();         break;                    //放大    case KeyEvent.KEYCODE_DPAD_UP:    isScale = true;    if(scale < 2.0)    scale += 0.1;    postInvalidate();    break;    //缩小    case KeyEvent.KEYCODE_DPAD_DOWN:    isScale = true;    if(scale > 0.5)    scale -= 0.1;    postInvalidate();    break;}return super.onKeyDown(KeyCode, event);}}

在Main.xml引用自定义的View组件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <WangLi.Graphics.Matrix.MyView android:layout_width="fill_parent" android:layout_height="fill_parent"/></LinearLayout>
下面是效果



更多相关文章

  1. Android(安卓)Zxing创建带文字的一维码(条形码)
  2. android 之 位图 处理
  3. [转载]Android缩放drawable
  4. Android图片加载框架最全解析(一),Glide的基本用法
  5. Android加载相册和拍照
  6. Android(安卓)Training精要(三)不同分辨率图片缩放倍数
  7. Android(安卓)Bitmap和Canvas
  8. android图片的打开和缩放时出现oom处理过程
  9. Android的百度地图开发BaiduMapApiDemo

随机推荐

  1. andriod布局常用控件
  2. Android(安卓)使用Matrix进行图像变换
  3. android 网络下载图片 效率对比
  4. 要学android不可不学的android样例
  5. Android studioError:(13, 0) Gradle DSL
  6. [置顶] Android GradientDrawable高级应
  7. ndk for mac
  8. android寻找最适合资源过程
  9. 在Android Studio中查看android APP 日志
  10. Android中渐变效果的设置