Android 利用Matrix实现图片随手指平移、旋转、缩放
16lz
2021-01-23
链接:
Android 利用Matrix实现图片随手指平移、旋转、缩放—旋转
Android 利用Matrix实现图片随手指平移、旋转、缩放—缩放
Android 利用Matrix实现图片随手指平移、旋转、缩放—平移
好久没写博客了(虽然以前也没写多少),本人菜鸟一个,大学刚毕业,现在正在Android的起点爬行,写这篇文章也不是为了教会别人什么东西,主要是为了记录一下自己的学习过程。所有,欢迎大神前排指点,废话不多说,直接上代码吧(里面的注释就够了,就不解释了)
/** * 使用矩阵(Matrix)来设置图片的属性 * 平移、旋转、放大缩小 * * 本类的效果:平移 * Created by lby on 2017/7/24. */
public class CropImageView extends AppCompatImageView { private Bitmap mResource; // 图片,可以从外部获取,这里为了方便 private Matrix matrix = new Matrix(); // 变换矩阵 private Matrix currentMatrix = new Matrix(); // 临时矩阵 private float downX; // 手指按下时的 X 坐标 private float downY; // 手指按下时的 Y 坐标 public CropImageView(Context context) { this(context, null); } public CropImageView(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } public CropImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { // 获取图片 mResource = BitmapFactory.decodeResource(getResources(), R.drawable.aaa); } @Override protected void onDraw(Canvas canvas) { canvas.save(); // 通过矩阵来画图片 canvas.drawBitmap(mResource, matrix, null); canvas.restore(); } @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: // 保存手指按下时的位置 downX = event.getX(); downY = event.getY(); // 记录此时矩阵的数据,也就是记录此时图片的属性,比如:位置 currentMatrix.set(matrix); break; case MotionEvent.ACTION_MOVE: // 把矩阵赋值为手指按下时的位置 matrix.set(currentMatrix); // 计算手指移动时的位置与按下时位置的偏移量,也就是计算图片需要移动的距离 float x = event.getX() - downX; float y = event.getY() - downY; // 开始移动 matrix.postTranslate(x, y); // 从新绘制图像 invalidate(); break; case MotionEvent.ACTION_UP: break; } return true; }}
更多相关文章
- 巧用Android图片资源,打造更精致的APP
- Android 实现图片保存到本地并调用本地地址显示图片
- Android设置拍照或者上传本地图片
- android 工程,点击图片,在屏幕显示
- android 两点缩放字体
- Android ListView(Selector 背景图片)
- android基础:动画案例(图片翻转)
- 2013.04.10——— android 图片缓存之三createBitmap