链接:
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手机操作系统中实现图片浏览
  2. 巧用Android图片资源,打造更精致的APP
  3. Android播放Gif动画
  4. Facebook工程师是如何改进他们Android客户端的
  5. Android(安卓)实现图片保存到本地并调用本地地址显示图片
  6. Android:ViewPager制作幻灯片
  7. Android设置拍照或者上传本地图片
  8. Android(安卓)Studio 第五十期 - 自定义TabLayout
  9. Android实现图片缩放与旋转

随机推荐

  1. Android之ListView控件
  2. Android(安卓)编程下 Touch 事件的分发和
  3. android sdk更新后出现please update ADT
  4. AndroidManifest.xml 配置文件
  5. Dev-Guide_Android(安卓)Basics_What is
  6. 在Unity中调用Android
  7. Android百度AI开放平台使用探索详解
  8. Android(安卓)基础day05
  9. android:scaleType设置失效的问题解决
  10. 如何在微信直接下载APP(iOS/Android)的解