要求:

1.通过手指移动来拖动图片

2.控制图片不能超出屏幕显示区域

技术点:

1.MotionEvent处理

2.对View进行动态定位(layout)

activity_main.xml:

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

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/iv_main"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

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

MainActivity:

public class MainActivity extends Activity implements OnTouchListener {

private ImageView iv_main;

private RelativeLayout parentView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

iv_main = (ImageView) findViewById(R.id.iv_main);

parentView = (RelativeLayout) iv_main.getParent();

/*

int right = parentView.getRight(); //0

int bottom = parentView.getBottom(); //0

Toast.makeText(this, right+"---"+bottom, 1).show();

*/

//设置touch监听

iv_main.setOnTouchListener(this);

}

private int lastX;

private int lastY;

private int maxRight;

private int maxBottom;

@Override

public boolean onTouch(View v, MotionEvent event) {

//得到事件的坐标

int eventX = (int) event.getRawX();

int eventY = (int) event.getRawY();

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

//得到父视图的right/bottom

if(maxRight==0) {//保证只赋一次值

maxRight = parentView.getRight();

maxBottom = parentView.getBottom();

}

//第一次记录lastX/lastY

lastX =eventX;

lastY = eventY;

break;

case MotionEvent.ACTION_MOVE:

//计算事件的偏移

int dx = eventX-lastX;

int dy = eventY-lastY;

//根据事件的偏移来移动imageView

int left = iv_main.getLeft()+dx;

int top = iv_main.getTop()+dy;

int right = iv_main.getRight()+dx;

int bottom = iv_main.getBottom()+dy;

//限制left >=0

if(left<0) {

right += -left;

left = 0;

}

//限制top

if(top<0) {

bottom += -top;

top = 0;

}

//限制right <=maxRight

if(right>maxRight) {

left -= right-maxRight;

right = maxRight;

}

//限制bottom <=maxBottom

if(bottom>maxBottom) {

top -= bottom-maxBottom;

bottom = maxBottom;

}

iv_main.layout(left, top, right, bottom);

//再次记录lastX/lastY

lastX = eventX;

lastY = eventY;

break;

default:

break;

}

return true;//所有的motionEvent都交给imageView处理

}

}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

android多图片拖动,Android实现图片拖动效果相关推荐

  1. Android拖动和缩放图片

    Android拖动和缩放图片 2014年5月9日 我们在使用应用其中常常须要浏览图片.比方在微信其中.点击图片之后能够对图片进行缩放. 本博客介绍怎样对图片进行拖拽和缩放.这首先要了解Android中 ...

  2. android xml图片缩放,Android通过自定义ImageView控件实现图片的缩放和拖动的实现代码...

    概述:通过自定义ImageView控件,在xml布局里面调用自定的组件实现图片的缩放. /** * 自定义的ImageView控制,可对图片进行多点触控缩放和拖动 * * @author qiuwan ...

  3. android 自由缩放图片大小,android Matrix实现图片随意放大缩小或拖动

    本文实例为大家分享了android Matrix图片随意放大缩小和拖动的具体代码,供大家参考,具体内容如下 step1:新建一个项目DragAndZoom,并准备一张照片放在res/drawable- ...

  4. 我的Android进阶之旅------android Matrix图片随意的放大缩小,拖动(转)

    step1:新建一个项目DragAndZoom,并准备一张照片放在res/drawable-hdpi目录下,如下图所示: step2: 设置应用的UI界面,在main.xml中设置: [html] v ...

  5. android多点触控自由对图片缩放

    在系统的相册中,观看相片就可以用多个手指进行缩放. 要实现这个功能,只需要这几步: 1.新建项目,在项目中新建一个ZoomImage.java public class ZoomImageView e ...

  6. android相册幻灯片功能,Android实现幻灯片式图片浏览器

    我们来实现一个幻灯片式图片浏览器: 最下面一个画廊视图,选中画廊中的图片,会在上面的ImageSwitcher控件中显示大图. 效果图如图 实现方法: 在布局文件中添加图片切换控件ImageSwitc ...

  7. Android 仿微信朋友圈发表图片拖拽和删除功能

    朋友圈实现原理 我们使用 Android Device Monitor 来分析朋友圈发布图片的界面实现原理.如果需要分析其他应用的界面实现也是采用这种方法哦. 打开 Android Device Mo ...

  8. android 涂鸦之图片叠加,android图像处理系列之七--图片涂鸦,水印-图片叠加...

    图片涂鸦和水印其实是一个功能,实现的方式是一样的,就是一张大图片和一张小点图片叠加即可.前面在android图像处理系列之六--给图片添加边框(下)-图片叠加中也讲到了图片叠加,里面实现的原理是直接操 ...

  9. Android——自定义带刻度的SeekBar单向拖动条

    时间过得真快,才发现好久没来逛逛了.没写博客的这段时间一直在做项目,连续完成了两个大型app,这个过程很享受,这是独立开发的,所以中途有很多很多的问题需要自己一个一个的去解决,现在接近尾声了,发现自己 ...

最新文章

  1. ESP8266访问网站-urequest get方法
  2. Mac电脑配置Alfred、Go2shell、iTerm2+Oh My Zsh
  3. boost::math模块查找正态分布的均值或标准差的示例
  4. 计算机应用能力大纲,计算机应用能力水平考试大纲.doc
  5. 肽键肽链内部分的计算机术语大全,生化资料
  6. 行程编码(atoi函数)
  7. 复数基础—— i = 根号 -1 _3
  8. 【神经网络与深度学习】卷积神经网络在自然语言处理的应用
  9. dumpbin命令问题的解决办法【原】
  10. 【二进制】Special Numbers
  11. 2021年最好用的5个股票API
  12. java基础练习题(含答案共39道)-语言基础篇
  13. 计算机毕设凑不够字数,撰写毕业论文字数不够要怎样去增加?
  14. 前瞻: 下一代网络 量子互联网
  15. 空气质量自动监测仪与采样泵
  16. Tomcat启动报错-failed setting ip_ttl
  17. Ubuntu GIT丢弃更改
  18. 栈的应用-括号匹配的检验
  19. [附源码]Python计算机毕业设计Django贷款申请审核管理系统论文
  20. 使用python生成ppt_python生成ppt的方法

热门文章

  1. Rust 入坑指南:鳞次栉比 | CSDN 博文精选
  2. 百度大脑语音能力引擎论坛定档 11.28,邀你一同解码 AI 语音的奥秘
  3. 余承东吐槽苹果续航;微软 IE 浏览器被曝漏洞;React Native 0.61.0 发布 | 极客头条...
  4. 如果没有云栖大会,中国云计算将要落后多少年?
  5. 前端工程师应该怎么发展?
  6. 当物联网和区块链同台,太惊艳!
  7. 背靠 Google 的 Go 语言,就不会失败?
  8. 柬埔寨程序员的计算机梦想
  9. 滴滴悬赏100万“捉拿”司机;手机QQ又宕机;中兴手机或将出售 | CSDN 极客头条...
  10. JSP中调用存储过程(SQL2000)