先给大家展示下效果图:
代码已上传至Github:高仿QQ小红点,如对您有帮助,欢迎star~感谢
绘制贝塞尔曲线:
主要是当在一定范围内拖拽时算出固定圆和拖拽圆的外切直线以及对应的切点,就可以通过path.quadTo()来绘制二阶贝塞尔曲线了~
整体思路:
当小红点静止时,什么都不做,只需要给自定义小红点QQBezierView(extends TextView)添加一个.9文件当背景即可
当滑动时,通过getRootView()获得顶级根View,然后new一个DragView ( extends View ) 来绘制各种状态时的小红点,并且通过getRootView().addView()的方式把DragView 加进去,这样DragView 就可以实现全屏滑动了
实现过程:
自定义QQBezierView ( extends TextView ) 并复写onTouchEvent来处理各种情况,代码如下:
@Overridepublic boolean onTouchEvent(MotionEvent event) { //获得根View View rootView = getRootView(); //获得触摸位置在全屏所在位置 float mRawX = event.getRawX(); float mRawY = event.getRawY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //请求父View不拦截 getParent().requestDisallowInterceptTouchEvent(true); //获得当前View在屏幕上的位置 int[] cLocation = new int[2]; getLocationOnScreen(cLocation); if (rootView instanceof ViewGroup) { //初始化拖拽时显示的View dragView = new DragView(getContext()); //设置固定圆的圆心坐标 dragView.setStickyPoint(cLocation[0] + mWidth / 2, cLocation[1] + mHeight / 2, mRawX, mRawY); //获得缓存的bitmap,滑动时直接通过drawBitmap绘制出来 setDrawingCacheEnabled(true); Bitmap bitmap = getDrawingCache(); if (bitmap != null) { dragView.setCacheBitmap(bitmap); //将DragView添加到RootView中,这样就可以全屏滑动了 ((ViewGroup) rootView).addView(dragView); setVisibility(INVISIBLE); } } break; case MotionEvent.ACTION_MOVE: //请求父View不拦截 getParent().requestDisallowInterceptTouchEvent(true); if (dragView != null) { //更新DragView的位置 dragView.setDragViewLocation(mRawX, mRawY); } break; case MotionEvent.ACTION_UP: getParent().requestDisallowInterceptTouchEvent(false); if (dragView != null) { //手抬起时来判断各种情况 dragView.setDragUp(); } break; } return true;}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机Android高仿QQ小红点功能
后端开发2023-05-31
Android仿QQ微信未读消息小红点BadgeHelper
后端开发2024-04-02
Android仿QQ未读消息--红点拖拽删除【源代码】
后端开发2022-06-06
Android 仿QQ头像自定义截取功能
后端开发2022-06-06
Android仿QQ空间动态界面分享功能
后端开发2022-06-06
Android仿QQ附近的人搜索展示功能
后端开发2022-06-06
Android仿QQ首页ListView左滑置顶、删除功能
后端开发2023-05-30
Android仿微信QQ设置图形头像裁剪功能
后端开发2022-06-06
Android自定义ListView实现仿QQ可拖拽列表功能
后端开发2022-06-06
Android程序开发仿新版QQ锁屏下弹窗功能
后端开发2022-06-06
Android开发中模仿qq列表信息滑动删除功能
后端开发2022-06-06
Android 高仿微信支付数字键盘功能
后端开发2022-06-06
Android仿新浪微博/QQ空间滑动自动播放视频功能
后端开发2022-06-06
Android自定义PopupWindow仿点击弹出分享功能
后端开发2022-06-06
Android 仿微信朋友圈点赞和评论弹出框功能
后端开发2022-06-06
Android仿微信朋友圈点击加号添加图片功能
后端开发2022-06-06
如何在Android应用中实现一个红点拖拽删除功能
后端开发2023-05-31
Android开发微信APP支付功能的要点小结
后端开发2022-06-06
咦!没有更多了?去看看其它编程学习网 内容吧