链接:
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; }}

更多相关文章

  1. 巧用Android图片资源,打造更精致的APP
  2. Android 实现图片保存到本地并调用本地地址显示图片
  3. Android设置拍照或者上传本地图片
  4. android 工程,点击图片,在屏幕显示
  5. android 两点缩放字体
  6. Android ListView(Selector 背景图片)
  7. android基础:动画案例(图片翻转)
  8. 2013.04.10——— android 图片缓存之三createBitmap

随机推荐

  1. Android之fill_parent和wrap_content
  2. Android界面基本属性
  3. Android(安卓)LCD(二):LCD常用接口原理篇
  4. IntentService通过HandlerThread单独开启
  5. Android(安卓)学习笔记--android――list
  6. Android学习笔记(28):三种选择器DatePick
  7. Android中SensorManager.getRotationMatr
  8. Android(安卓)GestureDetector手势识别类
  9. 理解onMeasure
  10. 简单实现Android顶部工具栏和底部工具栏