Android 图片拖动

  1. public class TestDemo extends Activity {
  2. private ImageView img1;
  3. private int screenWidth;
  4. private int screenHeight;
  5. /** Called when the activity is first created. */
  6. @Override
  7. public void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.main);
  10. img1 = (ImageView) findViewById(R.id.imageView1);
  11. DisplayMetrics dm = getResources().getDisplayMetrics();
  12. screenWidth = dm.widthPixels;
  13. screenHeight = dm.heightPixels - 50;
  14. img1.setOnTouchListener(movingEventListener);
  15. }
  16. private OnTouchListener movingEventListener = new OnTouchListener() {
  17. int lastX, lastY;
  18. @Override
  19. public boolean onTouch(View v, MotionEvent event) {
  20. switch (event.getAction()) {
  21. case MotionEvent.ACTION_DOWN:
  22. lastX = (int) event.getRawX();
  23. lastY = (int) event.getRawY();
  24. break;
  25. case MotionEvent.ACTION_MOVE:
  26. int dx = (int) event.getRawX() - lastX;
  27. int dy = (int) event.getRawY() - lastY;
  28. int left = v.getLeft() + dx;
  29. int top = v.getTop() + dy;
  30. int right = v.getRight() + dx;
  31. int bottom = v.getBottom() + dy;
  32. // 设置不能出界
  33. if (left < 0) {
  34. left = 0;
  35. right = left + v.getWidth();
  36. }
  37. if (right > screenWidth) {
  38. right = screenWidth;
  39. left = right - v.getWidth();
  40. }
  41. if (top < 0) {
  42. top = 0;
  43. bottom = top + v.getHeight();
  44. }
  45. if (bottom > screenHeight) {
  46. bottom = screenHeight;
  47. top = bottom - v.getHeight();
  48. }
  49. v.layout(left, top, right, bottom);
  50. lastX = (int) event.getRawX();
  51. lastY = (int) event.getRawY();
  52. break;
  53. case MotionEvent.ACTION_UP:
  54. break;
  55. }
  56. return true;
  57. }

XML布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

<ImageView

android:id="@+id/show_img"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/a" />

</RelativeLayout>

其中 在onTouch 代码中 如果返回 false 就不能捕捉到ACTION_MOVE 事件。

对于onTouchEvent 中onTouch返回值

1 、如果return false 说明还没有消费onTouch事件,在执行onTouch里代码后,onTouch事件并没有结束。

2、如果return true 说明消费了onTouch事件 onTouch事件结束了

但在实际操作中 除了ACTION_DOWN事件以外,其余的事件只有返回true的那个方法才能捕捉到。所以 返回false的时候只能捕捉到每次的第一个DOWN事件 后面的MOVE 和UP事件就捕捉不到了。

时间: 2024-10-06 15:10:35

Android 图片拖动的相关文章

android图片拖动缩放

这篇图片拖拽缩放也是我在项目中用到的,今天整理一下,将源码奉献给大家,希望对大家以后碰到相似的问题有帮助.android 大图片拖拽缩放 这篇就不做过多介绍了,直接上源码: 1 public class SpacePageActivity extends Activity { 2 3 private LinearLayout linnerLayout_spacepage; 4 private RelativeLayout relativeLayout_spacepage; 5 private B

android 拖拽图片&amp;拖动浮动按钮到处跑

来自老外: import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.os.Bundle; import android.view.MotionEvent ; import android.widget.AbsoluteLayout; import android.widget.Button; public class Drag_And_D

android图片缩放、放大demo - Android实例教程

示例原图: 拖动查看其他部分:  放大仔细查看 代码示例,注释比较详细,其他不多讲了 package com.study.drascale;import android.os.Bundle;import android.app.Activity;import android.graphics.Matrix;import android.graphics.PointF;import android.util.FloatMath;import android.view.MotionEvent;imp

Android图片的缩放效果

一.概述 Android 图片要实现:手势滑动,双击变大,多点触控的效果. 其实是有一定难度的,我们需要用Matrix ,GestureDetector 等等需要完成一个复杂的逻辑才能实现,然而今天我要说的并不是这种方法,而是一个第三方库Photoview,它使得完成图片缩放工作只需要3-5行代码就搞定了. 是不是很爽... 二.使用方法 github:https://github.com/chrisbanes/PhotoView 如果用AS需在引入如下库文件(目前是最新的): dependen

Android图片的拖拽与缩放

Android图片的拖拽与缩放 2014年5月9日 我们在使用应用当中经常需要浏览图片,比如在微信当中,点击图片之后可以对图片进行缩放. 本博客介绍如何对图片进行拖拽和缩放,这首先要了解Android中的触摸机制了,在屏幕中有手指按下.手指抬起.手指移动还有多个手指触摸的动作.我们要实现对图片的拖拽和缩放就是要基于这些动作来进行逻辑处理. 图片的拖拽主要是计算手指开始的位置与当前手指的位置关系,来进行平移的,具体可以看代码. 图片的缩放就涉及到计算两点之间的距离来得到缩放比,调用矩阵方法来达到缩

【同行说】Android图片处理技术资料汇总(一)

对于Android开发的童鞋们来说,图片处理时或多或少都会遇到令人头疼和不满意的问题,今天小编收集了5篇Android图片处理的干货文章,一起来看看吧! 一.Android 高清加载巨图方案 拒绝压缩图片 不使用压缩技术的条件下怎么加载高清图片呢?这篇博文的目的就是去自定义一个显示巨图的View,支持用户去拖动查看 二.Android ListView异步加载图片乱序问题,原因分析及解决方案 在Android所有系统自带的控件当中,ListView这个控件算是用法比较复杂的了,关键是用法复杂也就

html实现 页面禁止右键 禁止复制 禁止图片拖动 禁止复制和剪切

众所周知,一般的屏蔽的方法是用JS来编写的脚本,但是也可以直接通过修改网页属性的方法来屏蔽右键 禁止复制. 禁止右键 oncontextmenu="return false" 禁止复制和剪切: oncopy="return false;" oncut="return false;" 禁止复制 onselectstart="return false" 禁止图片拖动 ondragstart="return false&q

Android图片色彩处理ColorMatrix

Android图片的处理一般是将图片转成位图(Bitmap)来的处理,位图包含着一张图片的所有数据.图片实际上是由很多个单一颜色的点阵组成的,这些点越小图片就越细腻,点的颜色是由色值ARGB,即透明度.红.绿.蓝四个分量决定.而整张图片的处理实际上就是对这些点的分量做调整. Android系统中提供一个用于调整颜色的矩阵ColorMatrix,这是一个4x5的数字矩阵.而颜色的色值则保存在一个4x1的矩阵中.色值的区间为[0,255].以下是ColorMatrix部分注解 /** * 4x5 m

24.Android 图片工具ImageUtil

24.Android 图片工具ImageUtil Android 图片工具ImageUtil 裁图 Bitmap圆角 缩略图 视频缩略图 各种类型转换 ImageUtil全部源码 裁图 /** * 调用系统自带裁图工具 * * @param activity * @param size * @param uri * @param action * @param cropFile */ public static void cropPicture(Activity activity, int si