我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android高仿QQ小红点功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android高仿QQ小红点功能

先给大家展示下效果图:

Android高仿QQ小红点功能

代码已上传至Github:高仿QQ小红点,如对您有帮助,欢迎star~感谢

绘制贝塞尔曲线:

Android高仿QQ小红点功能

主要是当在一定范围内拖拽时算出固定圆和拖拽圆的外切直线以及对应的切点,就可以通过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

Android高仿QQ小红点功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android高仿QQ小红点功能

先给大家展示下效果图:代码已上传至Github:高仿QQ小红点,如对您有帮助,欢迎star~感谢绘制贝塞尔曲线:主要是当在一定范围内拖拽时算出固定圆和拖拽圆的外切直线以及对应的切点,就可以通过path.quadTo()来绘制二阶贝塞尔曲线了
2023-05-31

Android仿QQ未读消息--红点拖拽删除【源代码】

本Demo是一款仿qq未读消息拖拽删除的例子,继承RelativeLayout的WaterDrop实现了圆形图标功能、继承ImageView的CircleImageView圆形图片功能、效果非常不错、很适合有圆形设计的哥们、效果图片如下Ci
2022-06-06

Android 仿QQ头像自定义截取功能

看了Android版QQ的自定义头像功能,决定自己实现,随便熟悉下android绘制和图片处理这一块的知识。 先看看效果:思路分析: 这个效果可以用两个View来完成,上层View是一个遮盖物,绘制半透明的颜色,中间挖了一个圆;下层的Vie
2022-06-06

Android仿QQ空间动态界面分享功能

先看看效果:用极少的代码实现了 动态详情 及 二级评论 的 数据获取与处理 和 UI显示与交互,并且高解耦、高复用、高灵活。 动态列表界面MomentListFragment支持 下拉刷新与上拉加载 和 模糊搜索,反复快速滑动仍然非常流畅。
2022-06-06

Android仿QQ附近的人搜索展示功能

1.概述 老规矩,先上图原装货(就不录制gif了,大家可以自己在Q群助手开启共享地理位置,返回群聊天页面就看到看到附近的人):看起来还是挺像的吧。 通过观察,我们可以获取得到如下关系 1.下面展示列表我们可以使用ViewPager来实现(
2022-06-06

Android仿QQ首页ListView左滑置顶、删除功能

Android 仿QQ首页ListView左滑置顶、删除等实现源码,具体内容如下效果图实现源码:package com.duguang.baseanimation.ui.listivew.deletelistview; import
2023-05-30

Android仿微信QQ设置图形头像裁剪功能

最近在做毕业设计,想有一个功能和QQ一样可以裁剪头像并设置圆形头像,额,这是设计狮的一种潮流。 而纵观现在主流的APP,只要有用户系统这个功能,这个需求一般都是在(bu)劫(de)难(bu)逃(xue)! 图片裁剪实现方式有两种,一种是利用
2022-06-06

Android使用Item Swipemenulistview实现仿QQ侧滑删除功能

大家都用过QQ,肯定有人好奇QQ滑动删除Item的效果是怎样实现的,其实我们使用Swipemenulistview就可以简单的实现。先看看我们项目中的效果: 使用的时候可以把Swipemenulistview作为一个library,也
2022-06-06

Android自定义ListView实现仿QQ可拖拽列表功能

我们大致的思路,其实是这样子的,也是我的设想,我们可以先去实现一个简单的ListView的数据,但是他的Adapter,我们可以用系统封装好的,然后传递进去一个实体类,最后自定义一个listview去操作,所以我们先把准备的工作做好,比如?
2022-06-06

Android程序开发仿新版QQ锁屏下弹窗功能

新版的qq,可以在锁屏下弹窗显示qq消息,正好目前在做的项目也需要这一功能。经过各种试验和资料查找,终于实现,过程不难,但是却有一些地方需要注意。 下面是实现过程。 1.使用Activity,而不是View QQ的弹窗一开始我以为是悬浮Vi
2022-06-06

Android开发中模仿qq列表信息滑动删除功能

这个效果的完成主要分为两个部分 自定义view作为listview的列表项 一个view里面包括 显示头像,名字,消息内容等的contentView和滑动才能显示出来的删除,置顶的右边菜单menuView 在手指移动的时候同时改变这两个视图
2022-06-06

Android 高仿微信支付数字键盘功能

现在很多app的支付、输入密码功能,都已经开始使用自定义数字键盘,不仅更加方便、其效果着实精致。 下面带着大家学习下,如何高仿微信的数字键盘,可以拿来直接用在自身的项目中。 先看下效果图:1. 自定义布局
2022-06-06

Android仿新浪微博/QQ空间滑动自动播放视频功能

先来看看效果图关键代码 1.监听滚动事件 首先要给listview添加setOnScrollListener监听,注意这个监听在recyclerView上是addOnScrollListener,也就是说下面代码同时支持recyclerVi
2022-06-06

Android自定义PopupWindow仿点击弹出分享功能

本文实例自定义PopupWindow,点击弹出PopupWindow,背景变暗,仿点击弹出分享功能,供大家参考,具体内容如下注:参照大神代码写的自定义代码package com.duanlian.popupwindowdemo; impo
2022-06-06

Android 仿微信朋友圈点赞和评论弹出框功能

贡献/下载源码:https://github.com/mmlovesyy/PopupWindowDemo 本文简单模仿微信朋友圈的点赞和评论弹出框,布局等细节请忽略,着重实现弹出框、发评论,及弹出位置的控制。 1. 微信弹出框 微信朋友圈的
2022-06-06

Android仿微信朋友圈点击加号添加图片功能

本文为大家分享了类似微信朋友圈,点击+号图片,可以加图片功能,供大家参考,具体内容如下xml: 2022-06-06

如何在Android应用中实现一个红点拖拽删除功能

如何在Android应用中实现一个红点拖拽删除功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。CircleImageView核心代码private void
2023-05-31

Android高手进阶教程(二十六)之---Android超仿Path菜单的功能实现!

Hi~大家好,出来创业快3个月了,一切还不错,前一段时间用了业余时间搞了个问答类网站YQMA.想做中国的stackoverflow,哈哈,只是YY下,希望大家多多支持! 好了,今天给大家分享的是Path菜单的简单实现,可以支持自定义方向(左
2022-06-06

Android开发微信APP支付功能的要点小结

基本概念 包名值得是你APP的包,在创建工程时候设置的,需要在微信支付平台上面设置。 签名指的是你生成APK时候所用的签名文件的md5,去掉:全部小写,需要在微信支付平台上面设置。 调试阶段,签名文件可以使用调试用的debug.keysto
2022-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录