Android自定义View,实现跟随手指滑动效果,

效果如下:


一,重写onTouchEvent方法 最后返回true
二,在MotionEvent.ACTION_MOVE情况下改变自定义view 的位置

代码如下:

public class FollowView extends TextView {private Context context;private float x = 0;//点击时候坐标位置private float y = 0;private float startx;//自定义view的开始坐标位置private float statty;public FollowView(Context context) {this(context, null);}public FollowView(Context context, AttributeSet attrs) {this(context, attrs, 0);}public FollowView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overridepublic boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN://获取点击的xy坐标x = event.getRawX();y = event.getRawY();Log.d("mile","event.getRawX():"+event.getRawY());Log.d("mile","event.getRawY():"+event.getRawY());//新建一个Rect来获取当前view的坐标位置Rect rect = new Rect();this.getGlobalVisibleRect(rect);startx = (rect.left); //设置当前view x坐标位置//获取状态来的高度Rect frame = new Rect();((Activity) getContext()).getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);int statusBarHeight = frame.top;statty = (rect.top - statusBarHeight);//设置当前view y坐标 需要减去状态来高度break;case MotionEvent.ACTION_MOVE:Log.d("mile","MotionEvent.ACTION_MOVE");//根据手指移动来算出移动的xy坐标this.setTranslationX(startx + event.getRawX() - x);this.setTranslationY(statty + event.getRawY() - y);break;case MotionEvent.ACTION_UP:break;}return true;}
}

布局中使用

<com.goodboy.mile.View.FollowViewandroid:id="@+id/follow_view"android:layout_width="50dp"android:layout_height="50dp"android:background="@color/colorAccent"android:text="@string/app_name"/>

注:之前我在获取滑动的坐标的时候是使用MotionEvent中的getX()方法,发现有闪烁的问题,后来改成MotionEvent中的getRawX()方法就好了,

那么getX()与getRawX()有什么区别呢?

getX()是表示Widget相对于自身左上角的x坐标
而getRawX()是表示相对于屏幕左上角的x坐标值

Android自定义View,跟随手指滑动效果相关推荐

  1. android 自定义view滚动条,Android自定义View实现等级滑动条的实例

    Android自定义View实现等级滑动条的实例 实现效果图: 思路: 首先绘制直线,然后等分直线绘制点: 绘制点的时候把X值存到集合中. 然后绘制背景图片,以及图片上的数字. 点击事件down的时候 ...

  2. android 立体 流量球,Android自定义View——实现水波纹效果类似剩余流量球

    Android自定义View--实现水波纹效果类似剩余流量球 三个点   pre   ber   block   span   初始化   move   理解最近突然手痒就想搞个贝塞尔曲线做个水波纹效 ...

  3. ios 添加浮动效果_iOS实现拖拽View跟随手指浮动效果

    效果图: 1.自定义要跟随手指浮动的那个View // // OrangeView.m // 拖拽View跟随手指浮动 // // Created by llkj on 2017/8/16. // C ...

  4. Android自定义View实现QQ气泡效果

    首先我们来看一下最终的效果: 根据我们上边拆分出来的公式,我们分别看看每一个效果需要如何去实现: 红色圆:canvas.drawCircle 消息数字:canvas.drawText 拖拽粘性效果:c ...

  5. android 高仿ios开关,Android自定义view仿IOS开关效果

    本文主要讲解如何在 Android 下实现高仿 iOS 的开关按钮,并非是在 Android 自带的 ToggleButton 上修改,而是使用 API 提供的 onDraw.onMeasure.Ca ...

  6. android圆形波纹按钮,android自定义View——圆形波纹扫描效果

    蓝牙项目,考虑到后面可能会用到这个扫描的效果,所以参照大神写好的控件,增加了自己需要使用的接口.也顺便巩固一下自定义view中各种零碎的知识点. 需要的效果图 先放一个效果图,点击中心图片开始动画,再 ...

  7. android 环绕布局,Android自定义View实现圆形环绕效果

    之前项目中需要实现一个四周环绕中心圆形头像的效果,感觉还是自定义比较方便,于是就自己封装了一个控件去实现.先贴张图显示最终效果. 首先自定义一个View继承自LinearLayout,通过动态添加ch ...

  8. Android好评功能,Android自定义View实现五星好评效果

    本文实例为大家分享了Android实现五星好评效果的具体代码,供大家参考,具体内容如下 这个效果想必大家都非常熟悉,那么Android如何自定义实现这种效果呢? 首先自定义属性: 下面看看具体实现: ...

  9. android北京地铁源代码,Android自定义View实现地铁显示牌效果

    本文实例为大家分享了Android地铁显示牌的具体代码,供大家参考,具体内容如下 预览效果 目录 SubwayBoardView.java 代码 public class SubwayBoardVie ...

最新文章

  1. linux虚拟化毕业设计,毕业设计(论文)-基于Linux的云校园桌面虚拟化系统的设计与实现(68页)-原创力文档...
  2. 1083 矩阵取数问题
  3. 手把手教你安装VMware虚拟机
  4. 日本的酒店主题能有多丰富?
  5. TypeError: 'range' object doesn't support item deletion
  6. mybatis-plus乐观锁
  7. C++ 面向对象与面向过程的区别与联系
  8. BZOJ 2679 [Usaco2012 Open]Balanced Cow Subsets
  9. mysql 禁用swap_MySQL如何避免使用swap
  10. 20165329 四则运算2
  11. springboot配置文件中的敏感信息加密
  12. linux7设置上下文权限,【CONTEXT】自定义CONTEXT(上下文)
  13. python中字典的用法_Python中字典的详细用法
  14. 大数据平台监控告警系统的实现
  15. 163电子邮箱怎么注册申请?手机号注册电子邮箱的小技巧
  16. Android仿支付宝9.5芝麻信用分仪表盘
  17. 华为手机开启开发者模式
  18. 计算机安全模式win7,Win7如何进入计算机安全模式?
  19. CC00389.CloudKubernetes——|KuberNetesCI/CD.V27|——|Jenkins.v07|自动构建NodeJs应用.v01|
  20. 2021.1.22平安科技面经--算法工程师实习生

热门文章

  1. Mac pro M2 ---“本地部署chatGPT”
  2. JS 计算字符长度 String.charCodeAt(index)
  3. Unity制作二次元卡通渲染角色材质——2、色阶化光影的多种做法对比
  4. 牛客小白月赛24C 十面埋伏(bfs+模拟)
  5. 商人过河问题_6人过河问题_3商人3随从过河问题_python求全部解
  6. 【javascript】元旦倒计时代码
  7. 清北计算机专业研究生在哪里读研,本科清北去普通985甚至211读研,你会反向读研吗?...
  8. 华为智慧屏鸿蒙奈飞,鸿蒙系统终于要来了 华为智慧屏将有三款:9月发
  9. flume内存溢出解决
  10. C语言基础Day02数据类型及运算符