Android自定义View,跟随手指滑动效果
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,跟随手指滑动效果相关推荐
- android 自定义view滚动条,Android自定义View实现等级滑动条的实例
Android自定义View实现等级滑动条的实例 实现效果图: 思路: 首先绘制直线,然后等分直线绘制点: 绘制点的时候把X值存到集合中. 然后绘制背景图片,以及图片上的数字. 点击事件down的时候 ...
- android 立体 流量球,Android自定义View——实现水波纹效果类似剩余流量球
Android自定义View--实现水波纹效果类似剩余流量球 三个点 pre ber block span 初始化 move 理解最近突然手痒就想搞个贝塞尔曲线做个水波纹效 ...
- ios 添加浮动效果_iOS实现拖拽View跟随手指浮动效果
效果图: 1.自定义要跟随手指浮动的那个View // // OrangeView.m // 拖拽View跟随手指浮动 // // Created by llkj on 2017/8/16. // C ...
- Android自定义View实现QQ气泡效果
首先我们来看一下最终的效果: 根据我们上边拆分出来的公式,我们分别看看每一个效果需要如何去实现: 红色圆:canvas.drawCircle 消息数字:canvas.drawText 拖拽粘性效果:c ...
- android 高仿ios开关,Android自定义view仿IOS开关效果
本文主要讲解如何在 Android 下实现高仿 iOS 的开关按钮,并非是在 Android 自带的 ToggleButton 上修改,而是使用 API 提供的 onDraw.onMeasure.Ca ...
- android圆形波纹按钮,android自定义View——圆形波纹扫描效果
蓝牙项目,考虑到后面可能会用到这个扫描的效果,所以参照大神写好的控件,增加了自己需要使用的接口.也顺便巩固一下自定义view中各种零碎的知识点. 需要的效果图 先放一个效果图,点击中心图片开始动画,再 ...
- android 环绕布局,Android自定义View实现圆形环绕效果
之前项目中需要实现一个四周环绕中心圆形头像的效果,感觉还是自定义比较方便,于是就自己封装了一个控件去实现.先贴张图显示最终效果. 首先自定义一个View继承自LinearLayout,通过动态添加ch ...
- Android好评功能,Android自定义View实现五星好评效果
本文实例为大家分享了Android实现五星好评效果的具体代码,供大家参考,具体内容如下 这个效果想必大家都非常熟悉,那么Android如何自定义实现这种效果呢? 首先自定义属性: 下面看看具体实现: ...
- android北京地铁源代码,Android自定义View实现地铁显示牌效果
本文实例为大家分享了Android地铁显示牌的具体代码,供大家参考,具体内容如下 预览效果 目录 SubwayBoardView.java 代码 public class SubwayBoardVie ...
最新文章
- linux虚拟化毕业设计,毕业设计(论文)-基于Linux的云校园桌面虚拟化系统的设计与实现(68页)-原创力文档...
- 1083 矩阵取数问题
- 手把手教你安装VMware虚拟机
- 日本的酒店主题能有多丰富?
- TypeError: 'range' object doesn't support item deletion
- mybatis-plus乐观锁
- C++ 面向对象与面向过程的区别与联系
- BZOJ 2679 [Usaco2012 Open]Balanced Cow Subsets
- mysql 禁用swap_MySQL如何避免使用swap
- 20165329 四则运算2
- springboot配置文件中的敏感信息加密
- linux7设置上下文权限,【CONTEXT】自定义CONTEXT(上下文)
- python中字典的用法_Python中字典的详细用法
- 大数据平台监控告警系统的实现
- 163电子邮箱怎么注册申请?手机号注册电子邮箱的小技巧
- Android仿支付宝9.5芝麻信用分仪表盘
- 华为手机开启开发者模式
- 计算机安全模式win7,Win7如何进入计算机安全模式?
- CC00389.CloudKubernetes——|KuberNetesCI/CD.V27|——|Jenkins.v07|自动构建NodeJs应用.v01|
- 2021.1.22平安科技面经--算法工程师实习生
热门文章
- Mac pro M2 ---“本地部署chatGPT”
- JS 计算字符长度 String.charCodeAt(index)
- Unity制作二次元卡通渲染角色材质——2、色阶化光影的多种做法对比
- 牛客小白月赛24C	十面埋伏(bfs+模拟)
- 商人过河问题_6人过河问题_3商人3随从过河问题_python求全部解
- 【javascript】元旦倒计时代码
- 清北计算机专业研究生在哪里读研,本科清北去普通985甚至211读研,你会反向读研吗?...
- 华为智慧屏鸿蒙奈飞,鸿蒙系统终于要来了 华为智慧屏将有三款:9月发
- flume内存溢出解决
- C语言基础Day02数据类型及运算符