初学Android,图形图像之Matrix(二十九)
来源:互联网 发布:java ant jar包 编辑:程序博客网 时间:2024/05/13 16:17
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>下面是效果
- 初学Android,图形图像之Matrix(二十九)
- Android|图形图像之Matrix
- 初学Android,图形图像之使用Bitmap和BitmapFactory(二十四)
- 初学Android,图形图像之使用Canvas,Paint绘图(二十五)
- 初学Android,图形图像之使用Path类(二十六)
- 初学Android,图形图像之使用双缓冲画图(二十七)
- 初学Android,图形图像之打砖块游戏(二十八)
- 初学Android,图形图像之使用Path类(二十六)
- 初学Android,图形图像之使用Bitmap和BitmapFactory(二十四)
- 初学Android,图形图像之使用双缓冲画图(二十七)
- 初学Android,图形图像之使用SurfaceView(三十九)
- 初学Android,图形图像之使用SurfaceView(四十)
- 初学Android,图形图像之使用Path类
- Android学习之——图形图像处理(使用Matrix控制变换)(二)
- Android学习之——图形图像处理(使用Matrix控制变换)(二)
- (转)初学Android,图形图像之使用Bitmap和BitmapFactory(二十四)
- 初学Android,图形图像之使用drawBitmapMesh扭曲图像(三十二)
- 初学Android,图形图像之使用Shader填充图像(三十三)
- 哎,这个懒惰的人啊
- Linux下解压压缩及打包命令大全
- Matplotlib中文显示的问题
- Extjs-局部更新新页面内容 Ext.Updater
- 呼叫中心IVR自动外呼的简单整理
- 初学Android,图形图像之Matrix(二十九)
- zoj2405 ------------Specialized Four-Digit Numbers
- flex使用cookie
- 利用接口解决Java工程间循环引用而报错的问题
- Android 联系人数据库介绍以及对联系人的基本操作
- adb shell dumpsys 命令 查看内存
- linux下访问windows共享目录问题记录
- 文件上传总结
- ora-09817 无法写入审计文件