首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Img(ImageView)使用onTouch onDrag listener在屏幕内随机移动

Img(ImageView)是Android开发中的一个控件,用于显示图片。它可以通过设置图片资源或者网络链接来展示图片内容。在屏幕内随机移动的需求可以通过使用onTouch和onDrag listener来实现。

onTouch listener是一个触摸事件监听器,它可以监听用户在屏幕上的触摸动作,包括按下、移动和抬起等操作。通过重写onTouch方法,可以获取到触摸事件的坐标信息,并根据需要进行处理。

onDrag listener是一个拖拽事件监听器,它可以监听用户在屏幕上的拖拽动作。通过重写onDrag方法,可以获取到拖拽事件的坐标信息,并根据需要进行处理。

要实现Img在屏幕内随机移动的效果,可以按照以下步骤进行操作:

  1. 在布局文件中添加一个ImageView控件:<ImageView android:id="@+id/imgView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/img" />
  2. 在Java代码中获取ImageView控件的实例,并设置onTouch和onDrag listener:ImageView imgView = findViewById(R.id.imgView); imgView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // 处理触摸事件 return true; } }); imgView.setOnDragListener(new View.OnDragListener() { @Override public boolean onDrag(View v, DragEvent event) { // 处理拖拽事件 return true; } });
  3. 在onTouch方法中,根据触摸事件的类型进行处理。可以通过event.getAction()方法获取到触摸事件的类型,常用的类型包括ACTION_DOWN(按下)、ACTION_MOVE(移动)和ACTION_UP(抬起)等。@Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // 按下时的处理逻辑 break; case MotionEvent.ACTION_MOVE: // 移动时的处理逻辑 break; case MotionEvent.ACTION_UP: // 抬起时的处理逻辑 break; } return true; }
  4. 在onDrag方法中,根据拖拽事件的类型进行处理。可以通过event.getAction()方法获取到拖拽事件的类型,常用的类型包括ACTION_DRAG_STARTED(拖拽开始)、ACTION_DRAG_ENTERED(进入拖拽区域)、ACTION_DRAG_EXITED(离开拖拽区域)和ACTION_DRAG_ENDED(拖拽结束)等。@Override public boolean onDrag(View v, DragEvent event) { switch (event.getAction()) { case DragEvent.ACTION_DRAG_STARTED: // 拖拽开始时的处理逻辑 break; case DragEvent.ACTION_DRAG_ENTERED: // 进入拖拽区域时的处理逻辑 break; case DragEvent.ACTION_DRAG_EXITED: // 离开拖拽区域时的处理逻辑 break; case DragEvent.ACTION_DRAG_ENDED: // 拖拽结束时的处理逻辑 break; } return true; }

通过以上步骤,可以实现Img在屏幕内随机移动的效果。具体的移动逻辑可以根据需求进行自定义,例如根据触摸事件的坐标信息来改变Img的位置,或者根据拖拽事件的坐标信息来实现拖拽效果。

腾讯云相关产品推荐:

  • 云服务器(CVM):提供弹性计算能力,满足各种计算需求。产品介绍链接
  • 云数据库 MySQL 版(CDB):提供高性能、可扩展的关系型数据库服务。产品介绍链接
  • 云存储(COS):提供安全、稳定、低成本的对象存储服务。产品介绍链接
  • 人工智能开放平台(AI):提供丰富的人工智能能力和服务,包括图像识别、语音识别、自然语言处理等。产品介绍链接
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【Android】手把手教你上滑解锁的效果

    这个效果的实现思路主要围绕手指触屏事件展开,注意点如下: 以ACTION_DOWN和ACTION_UP的Y轴距离差与自定义的滑动阈值作比较来判断是否上滑 借助Scroller类,触发LinearLayout流畅滑动的效果 使用...有效上滑 如上如,锁屏状态下,定义有效滑动阈值standardH,若上滑高度差超过standardH,则判断为有效滑动,布局滑动至屏幕顶部(不可见);否则如向下滑动、向上滑动距离不够等,都作为无效滑动...case MotionEvent.ACTION_MOVE: // 获取当前滑动的y轴坐标 float curY = event.getY(); // 获取移动的...使用到的控件有: XRecyclerView 自定义控件引导页控件PagerLayout(上述实现的控件) 封装PagerLayout的show和hide方法: // 显示视图 public void...问题与改进 问题出现 基于上述的扩展,RecyclerView的item里的控件添加点击事件后,发现推荐页无法按预期显示隐藏:无论滑动多短的距离甚至是向上滑动,只要是屏幕下方滑动,推荐页总是会自己显示出来

    2.7K20

    Android实现图片拖拉功能

    计算出手指移动的位移,通过matrix矩阵对象,将图片空间矩阵化之后根据手指位移让矩阵移动, 从而达到图片移动的效果 实现图片在页面的拖拉 mian.xml: <LinearLayout xmlns...Matrix currentMatrix=new Matrix();//存放照片当前的矩阵 //参数1:用户触摸的控件;参数2:用户触摸所产生的事件 public boolean onTouch...://手指在屏幕移动,改事件会不断被调用 float dx=event.getX()-startPoint.x;//得到x轴的移动距离 float dy=event.getY()-...startPoint.y;//得到y轴的移动距离 matrix.set(currentMatrix);//没有进行移动之前的位置基础上进行移动 //实现位置的移动 matrix.postTranslate...://当屏幕上已经有触点(手指),再有一个手指按下屏幕,就会触发这个事件 break; default: break; } //将imageView

    52010

    Android实现客户端语音动弹界面实例代码

    中间部分是文字动弹部分,主体就是一个设置了Padding(margin)的EditText,EditText下面是一个剩余输入字数的描述。...其实在“您还可以输入XX字”的左边还有一个用于显示录音图标的ImageView. 最下层是本文主要讲解的录音自定义控件的实现。...在其中包括了左中右三个ImageView:试听与删除,中间的录音按钮。 录音按钮的上下各有一个用于提示的TextView。...手指在屏幕移动的时候如果滑到按钮之上的时候,event.getY会返回一个负值(因为滑出控件了嘛)。这里我写的是-50主要是为了多一点缓冲,防止误操作。...,这其实也是一个通过监听ontouch事件,对两个圆形按钮设置动画产生的效果,和谐带人就是下面这句了。

    71520

    Android瀑布流照片墙实现,体验不规则排列的美感

    记得我之前已经写过一篇关于如何在Android上实现照片墙功能的文章了,但那个时候是使用的GridView来进行布局的,这种布局方式只适用于“墙”上的每张图片大小都相同的情况,如果图片的大小参差不齐,...整个界面会根据屏幕的宽度划分成等宽的若干列,由于手机的屏幕不是很大,这里我们就分成三列。...听我这么说完后,你可能会觉得瀑布流的布局非常简单嘛,只需要使用三个LinearLayout平分整个屏幕宽度,然后动态地addView()进去就好了。确实如此,如果只是为了实现功能的话,就是这么简单。...然后onTouch方法中每当监听到手指离开屏幕的事件,就会通过一个handler来对当前ScrollView的滚动状态进行判断,如果发现已经滚动到了最底部,就会再次调用loadMoreImages()...瀑布流模式的照片墙果真非常美观吧,而且由于我们有非常完善的资源释放机制,不管你照片墙上添加了多少图片,程序占用内存始终都会保持一个合理的范围

    2.9K50

    关于Android PullTorefreshScrollview回到顶部实例

    自定义imageview里面定义线程,扫描当前scrollY和上一次保存的对比,不一样即说明仍在滚动,一样即表明scrollview滚动停止了。  什么时候开启线程呢?...onTouch回调中down、move或者up时调用。  试想下:  如果在down中调用时,用户只scrollview上点击或短距离滑动,imageview里面要不停地开启线程?浪费资源。 ...如果在up中调用时,当用户按着屏幕一口气滑过临界值,还不松手呢?还不显示imageview吗?也行,个人觉得不太好。  于是,我选择move中调用imageview地线程。...move一直移动呢。“iamgeview判断下线程的状态即可,如果已经启动了,就不启动呗”。或许这么写不太好,但我认为是实时的,用户体验好。...比喻当你手指离开屏幕后,之前传递进来的scrollY就已经过时了,scrollview仍在滑动。

    93790

    Android自定义控件总结

    绘制流程 onMeasure测量view的大小,设置自己显示屏幕上的宽高。...如果我们的View直接继承ImageViewImageView已经运行了一大堆已经写好的代码测出了相应的宽高。我们可以它基础上更改即可。...控制显示屏幕上的样子(自定义viewgroup时不需要这个) /* * backgroundBitmap 要绘制的图片 * left 图片的左边界 * top 图片的上边界 * paint 绘制图片要使用的画笔...view使用view.measure(0,0)方法可以主动通知系统去测量,然后就可以直接使用它获取宽高。...三种滑动的方法 使用scrollTo()或scrollBy() 动画 实时改变layoutparams,重新布局 如果让view一段时间内移动到某个位置(不是快速滑动,弹性)方法: a.使用自定义动画

    99311

    Carson带你学Android:手把手教你学会手势识别应用 GestureDetector

    (含实例讲解) 目录 简介 下面,我将结合实例,详细介绍GestureDetector的使用接口 & 使用类。 接口1:OnGestureListener 1....作用 检测用户屏幕的以下操作:按下瞬间、按压、长按、轻击、快速滑屏、拖动 2....示意图 我屏幕作出一系列手势进行测试 接口2:OnDoubleTapListener 1. 作用 检测用户单击、双击屏幕 2....使用步骤 // 步骤1:创建手势检测器实例 // 注:使用OnDoubleTapListener接口时,需要使用GestureDetector,而GestureDetector的创建则必须传入OnGestureListener...接口 // 所以使用OnDoubleTapListener接口时,也必须实现OnGestureListener接口 // 构造函数有3个,常用的是第二个 // 1.

    1.6K11

    Android实现手指触控图片缩放功能

    计算两点之间的中心点的方法是,点1距原点位置X1(或者Y1)加上点2距原点位置X2(或者Y2),和除以2即可: X0=(X1+X2)/2; Y0=(Y1+Y2)/2; 实现图片在页面的触控缩放(还有拖拉功能...float startDis;//开始距离 private PointF midPoint;//中心点 //参数1:用户触摸的控件;参数2:用户触摸所产生的事件 public boolean onTouch...());//记录ImageView当前的移动位置 startPoint.set(event.getX(), event.getY()); break; case MotionEvent.ACTION_MOVE...://手指在屏幕移动,改事件会不断被调用 if(mode==DRAG){//拖拉模式 float dx=event.getX()-startPoint.x;//得到x轴的移动距离 float dy...=event.getY()-startPoint.y;//得到y轴的移动距离 matrix.set(currentMatrix);//没有进行移动之前的位置基础上进行移动 //实现位置的移动

    1.8K20

    Android自定义控件总结

    绘制流程 onMeasure测量view的大小,设置自己显示屏幕上的宽高。...如果我们的View直接继承ImageViewImageView已经运行了一大堆已经写好的代码测出了相应的宽高。我们可以它基础上更改即可。...控制显示屏幕上的样子(自定义viewgroup时不需要这个) /* * backgroundBitmap 要绘制的图片 * left 图片的左边界 * top 图片的上边界 * paint 绘制图片要使用的画笔...view使用view.measure(0,0)方法可以主动通知系统去测量,然后就可以直接使用它获取宽高。...三种滑动的方法 使用scrollTo()或scrollBy() 动画 实时改变layoutparams,重新布局 如果让view一段时间内移动到某个位置(不是快速滑动,弹性)方法:  a.使用自定义动画

    1.3K80

    Android 手势识别应用:手把手教你学会 GestureDetector(含实例讲解)

    下面,我将结合实例,详细介绍GestureDetector的使用接口 & 使用类。 ---- 接口1:OnGestureListener 1....作用 检测用户屏幕的以下操作:按下瞬间、按压、长按、轻击、快速滑屏、拖动 2....示意图 我屏幕作出一系列手势进行测试 ? ---- 接口2:OnDoubleTapListener 1. 作用 检测用户单击、双击屏幕 2....使用步骤 // 步骤1:创建手势检测器实例 // 注:使用OnDoubleTapListener接口时,需要使用GestureDetector,而GestureDetector的创建则必须传入OnGestureListener...接口 // 所以使用OnDoubleTapListener接口时,也必须实现OnGestureListener接口 // 构造函数有3个,常用的是第二个 // 1.

    9.9K41

    移动开发之实现图片轮播效果(附:demo)

    对于图片轮播实现方法,各种各样,今天我分享一下我的实现思路,我是用的ViewFlipper控件,重写了里面的方法,增加了手势判断,既可以做到自动轮播,也可以使用手势左右滑动轮播,效果应该还是可以的。...我们重写的时候,也定义了一个回调的接口,OnViewFlipperChangeState,ViewFlipper中重写的方法中调用接口里的方法,进行回调,并处理图片集合或数组里的图片,从而实现了循环轮播...) { this.listener = listener; } } 第二步:Activity中实现定义的接口,并实现OnGestureListener和OnTouchListener...获取demo的方式跟以前一样,只需要在公众号回复关键字“图片轮播”即可。...专注于移动互联网的开发和研究,本号致力于分享IT技术和程序猿工作心得体会。欢迎大家关注与分享。

    1.1K20

    android开发之GestureDetector手势识别(调节音量、亮度、快进和后退)

    大伙第一反应绝对是Google提供给我们的GestureDetector类,没错今天我们就使用使用这个类来给大家完毕以上的需求!...因此onTouch()方法中,我们要进行例如以下的处理: @Override public boolean onTouch(View v, MotionEvent event) { // 手势里除了...的标志 return false; } 通过onTouch()方法中调用gestureDetector.onTouchEvent(event)方法时,它会去调用onScroll()方法,这样该方法中通过手势识别来完毕调节音量...,避免屏幕上操作切换混乱 // 横向的距离变化大则调整进度,纵向的变化大则调整音量 if (Math.abs(distanceX) >= Math.abs(distanceY...(AudioManager.STREAM_MUSIC); // 获取当前值 if (Math.abs(distanceY) > Math.abs(distanceX)) {// 纵向移动大于横向移动

    2.5K30
    领券