全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android实现图片拖动效果

要求:

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

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

技术点:

1.MotionEvent处理

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

activity_main.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/iv_main"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:src="@drawable/test"/>
</RelativeLayout>

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 Matrix实现图片随意放大缩小或拖动  # Android实现ImageView图片缩放和拖动  # Android编程实现图片的浏览、缩放、拖动和自动居中效果  # Android如何创建可拖动的图片控件  # Android通过自定义ImageView控件实现图片的缩放和拖动的实现代码  # Android RecyclerView多类型布局卡片解决方案  # Android实现简单卡片布局  # Android控件CardView实现卡片布局  # Android编程重写ViewGroup实现卡片布局的方法  # Android实现可拖动层叠卡片布局  # 拖动  # wrap_content  # iv_main  # src  # test  # drawable  # layout_height  # match_parent  # gt  # id  # ImageView  # MainActivity  # private  # OnTouchListener  # parentView  # protected  # Override  # public  # java  # extends 


相关文章: 如何在Golang中引入测试模块_Golang测试包导入与使用实践  如何挑选优质建站一级代理提升网站排名?  开源网站制作软件,开源网站什么意思?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  jQuery 常见小例汇总  深圳网站制作的公司有哪些,dido官方网站?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  如何挑选最适合建站的高性能VPS主机?  如何通过虚拟机搭建网站?详细步骤解析  创业网站制作流程,创业网站可靠吗?  如何快速搭建高效服务器建站系统?  如何打造高效商业网站?建站目的决定转化率  制作网站怎么制作,*游戏网站怎么搭建?  建站之星代理如何获取技术支持?  如何基于PHP生成高效IDC网络公司建站源码?  如何选择靠谱的建站公司加盟品牌?  如何在七牛云存储上搭建网站并设置自定义域名?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  如何通过虚拟主机快速完成网站搭建?  ,网站推广常用方法?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  学校建站服务器如何选型才能满足性能需求?  建站之星后台管理如何实现高效配置?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  如何在VPS电脑上快速搭建网站?  长沙做网站要多少钱,长沙国安网络怎么样?  免费网站制作appp,免费制作app哪个平台好?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  如何快速查询网址的建站时间与历史轨迹?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  实惠建站价格推荐:2025年高性价比自助建站套餐解析  如何通过WDCP绑定主域名及创建子域名站点?  油猴 教程,油猴搜脚本为什么会网页无法显示?  建站之星与建站宝盒如何选择最佳方案?  SQL查询语句优化的实用方法总结  ,怎么在广州志愿者网站注册?  制作网站外包平台,自动化接单网站有哪些?  如何通过智能用户系统一键生成高效建站方案?  建站之星展会模板:智能建站与自助搭建高效解决方案  桂林网站制作公司有哪些,桂林马拉松怎么报名?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  济南企业网站制作公司,济南社保单位网上缴费步骤?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  大同网页,大同瑞慈医院官网?  如何在建站宝盒中设置产品搜索功能?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  如何选择可靠的免备案建站服务器?  网站代码制作软件有哪些,如何生成自己网站的代码?  网站制作企业,网站的banner和导航栏是指什么? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。