Android Matrix对图片进行倾斜、缩放变换
来源:互联网 发布:集贤一中网络空间首页 编辑:程序博客网 时间:2024/05/21 04:17
本文内容摘自《疯狂Android讲义 第3版》李刚 著
通过Matrix对图片进行倾斜、缩放变换:
package shortcut.song.com.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MatrixActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MatrixView(this, null)); }}
package shortcut.song.com.myapplication;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.drawable.BitmapDrawable;import android.util.AttributeSet;import android.view.KeyEvent;import android.view.View;/** * Created by Administrator on 2017/7/15 0015. */public class MatrixView extends View { //初始图片资源 private Bitmap bitmap; //Matrix 实例 private Matrix matrix = new Matrix(); //设置倾斜度 private float sx = 0.0f; //位图宽,高 private int width, height; //缩放比例 private float scale = 1.0f; //判断是旋转还是缩放 private boolean isScale = false; public MatrixView(Context context, AttributeSet set) { super(context, set); //获得位图 bitmap = ((BitmapDrawable) context.getResources().getDrawable(R.drawable.lijiang)).getBitmap(); //获得位图宽度 width = bitmap.getWidth(); //获得位图高度 height = bitmap.getHeight(); //使当前视图获得焦点 this.setFocusable(true); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //重置Matrix matrix.reset(); if (!isScale) { //旋转Matrix matrix.setSkew(sx, 0); }else{ //缩放Matrix matrix.setScale(scale, scale); } //根据原始位图和Matrix创建新位图 Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); //重新绘制位图 canvas.drawBitmap(bitmap2, matrix, null); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_A: isScale = false; sx += 0.1; postInvalidate(); break; case KeyEvent.KEYCODE_D: isScale = false; sx -= 0.1; postInvalidate(); break; case KeyEvent.KEYCODE_W: isScale = true; if (scale < 2.0) { scale += 0.1; } postInvalidate(); break; case KeyEvent.KEYCODE_S: isScale = true; if (scale > 0.5) { scale -= 0.1; } postInvalidate(); break; } return super.onKeyDown(keyCode, event); }}
阅读全文
0 0
- Android Matrix对图片进行倾斜、缩放变换
- C#对图片进行缩放变换
- android对图片进行缩放
- Android 通过Matrix来对图片进行缩放,旋转和平移
- Android图片旋转,缩放,位移,倾斜,对称完整示例(二)——Bitmap.createBitmap()和Matrix
- Android 图片缩放-Matrix
- Android 图片缩放-Matrix
- Android(OPhone)对图片进行缩放
- Android图片旋转,缩放,位移,倾斜,对称完整示例(一)——imageView.setImageMatrix(matrix)和Matrix
- Android图片旋转,缩放,位移,倾斜,对称完整示例(一)——imageView.setImageMatrix(matrix)和Matrix
- Android图片旋转,缩放,位移,倾斜,对称完整示例(一)——imageView.setImageMatrix(matrix)和Matrix .
- Android matrix偏移(平移),旋转,缩放,倾斜的原理
- Android--Matrix图片变换处理
- Android--Matrix图片变换处理
- Android 图片变换处理Matrix
- android Matrix图片变换处理
- Android Bitmap图片缩放优化,用canvas替代Matrix进行缩放,解决一些错我
- 对图像进行旋转、缩放等变换
- linux用户管理(1)----创建用户(adduser和useradd)和删除用户(userdel)
- 小小java程序
- Android高级UI——SCV实现交互式地图
- 还在手动给css加前缀?no!几种自动处理css前缀的方法简介
- android的内存泄露
- Android Matrix对图片进行倾斜、缩放变换
- linux交叉编译问题
- leetcode之Find Minimum in Rotated Sorted Array II 问题
- Cannot connect to the Docker daemon at unix:///var/run/docker.sock.??
- web.xml中DispatcherServlet和ContextLoaderListener的区别
- 【贪心】【树形DP】[POJ1463][HDU1054]Strategic game 战略游戏
- 树莓派给特定USB端口特定设备绑定自定义设备符
- 【分治】Expanding Rods POJ 1905
- java的三种循环语句