效果图:

如果没有左右2个边界的判断, 其实还是很简单的.
那就不断绘制drawCircle就可以了.

难就难在左右边界这2个特殊的地方.
我这里使用了drawArc的方法,完成左右2个特殊的地方.


部分代码:

//首先绘制 内圆. 也就是没有透明颜色的圆
mPaint.setColor(mCircleColor);
canvas.drawCircle(mCx, mCy, Math.min(curRadius, mCircleRadius), mPaint);//其次 绘制,带有透明颜色的圆
mPaint.setColor(mCircleColorOut);
canvas.drawCircle(mCx, mCy, Math.min(curRadius, mCircleRadiusOut), mPaint);//最后判断是否是左右特殊位置, 绘制arc
if (drawLeft) {mPaint.setColor(mCircleColor);canvas.drawArc(getArcRecF(Math.min(curRadius, mCircleRadiusMax)), 90, 180, true, mPaint);
} else if (drawRight) {mPaint.setColor(mCircleColor);canvas.drawArc(getArcRecF(Math.min(curRadius, mCircleRadiusMax)), -90, 180, true, mPaint);
}//为了动画,需要一直改变绘制的半径
if (curRadius < maxRadius) {curRadius += mRadiusDrawStep;invalidateSelf();
}

使用方法:

//设置普通的背景
button.setBackground(new CircleAnimDrawable().setPosition(CircleAnimDrawable.POS_LEFT));
button.setBackground(new CircleAnimDrawable().setPosition(CircleAnimDrawable.POS_CENTER));
button.setBackground(new CircleAnimDrawable().setPosition(CircleAnimDrawable.POS_RIGHT));
//如果要在RadioButton里面使用,需要包一层Drawable
private Drawable createRadioBackground(int position) {StateListDrawable listDrawable = new StateListDrawable();listDrawable.addState(new int[]{android.R.attr.state_checked}, new CircleAnimDrawable().setPosition(position));return listDrawable;
}

源码地址:
https://github.com/angcyo/RJcenter/blob/master/rsen/src/main/java/com/rsen/drawable/CircleAnimDrawable.java

至此: 文章就结束了,如有疑问: QQ群:274306954 欢迎您的加入.

Android--模仿360底部导航按钮相关推荐

  1. android 仿360浮动,Android--模仿360底部导航按钮

    效果图: 这里写图片描述 如果没有左右2个边界的判断, 其实还是很简单的. 那就不断绘制drawCircle就可以了. 难就难在左右边界这2个特殊的地方. 我这里使用了drawArc的方法,完成左右2 ...

  2. android仿微信的activity平滑水平切换动画,Android实现简单底部导航栏 Android仿微信滑动切换效果...

    Android实现简单底部导航栏 Android仿微信滑动切换效果 发布时间:2020-10-09 19:48:00 来源:脚本之家 阅读:96 作者:丶白泽 Android仿微信滑动切换最终实现效果 ...

  3. Android超简单底部导航ImageView+TextView+FramLayout(一)

    废话前言 刚工作的时候就事采用这种方式实现的底部导航,方便快捷,重要的是好理解. 我将采用我觉得最清晰的思路实现这种方式 一.创建主页面 为了便于查看,我只写了两个tab,其他多的照葫芦画瓢就行了 & ...

  4. react native Android 键盘将底部导航栏/按钮顶起

    比如,当输入框中输入信息时,键盘会把底部导航栏顶起,就会很丑啊! 解决办法: 1.找到文件 android/app/src/main/AndroidManifest.xml,修改android:win ...

  5. Android仿Qzone底部导航栏加号弹出菜单

    最近看到QQ空间 新浪微博-.好多应用底部导航栏都有加号点击弹出菜单,于是就写了一个demo,来给没做过这个功能的小伙伴一个参考,希望对大家有所帮助,demo中的图片均来源于Qzone 仅作为学习交流 ...

  6. php仿微信底部菜单,Android实现简单底部导航栏 Android仿微信滑动切换效果

    Android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...

  7. Android studio实现底部导航,AndroidStudio制作底部导航栏以及用Fragment实现切换功能...

    前言 大家好,我是 Vic,今天给大家带来AndroidStudio制作底部导航栏以及用Fragment实现切换功能的概述,希望你们喜欢 学习目标 AndroidStudio制作底部导航栏以及用Fra ...

  8. android滑动菜单图标,Android实现简单底部导航栏 Android仿微信滑动切换效果

    Android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...

  9. android 底部滑动效果怎么做,Android实现简单底部导航栏 Android仿微信滑动切换效果...

    android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义view配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...

  10. JFTabBar android强大的底部导航栏框架 (微信底部导航栏效果)

    TabBar这个名字相信很多学过一点IOS程序员都知道它是用来干嘛的,但本人也并非擅长开发IOS程序员,只是略懂略懂....这是一个很强大的TabBar,可满足很多需求.用起来也非常简单,在oncre ...

最新文章

  1. 网络防火墙单向和双向_单向晶闸管与双向晶闸管之间的不同之处
  2. ClickHouse内核分析-MergeTree的存储结构和查询加速
  3. python合并两个数据框_使用python合并两个数据框
  4. 正则表达式---------常用字符及其功能
  5. java调用ole ie_SWT中通过Automatioin的方式访问IE(升级版)
  6. UEFI win7系统的安装
  7. 6.世界坐标观察模式
  8. 优化理论03----优化导论和无约束问题的最优条件、优化问题的类型、局部、全局和严格优化、梯度和Hessian 黑塞矩阵和方向导数、无约束问题的最优条件
  9. OpenCV项目实战
  10. ATTiny85 Arduino开发环境搭建及使用
  11. Borg和Kubernetes有什么不同?未来的云需要什么?
  12. java动态规划凑硬币问题_动态规划--凑硬币问题
  13. nginx 代理ip 和域名
  14. SQL Server中修改表的前缀
  15. 黑苹果与白苹果的区别及其安装方式
  16. 熵(entropy)的定义
  17. 如何学Android
  18. 通过Python脚本创建ArcGIS地图服务缓存
  19. 【JokerのLabView】VI嵌套。
  20. 2019高考江苏卷语文作文

热门文章

  1. 创建mysql数据库图解_MYSQL创建数据库和数据库表图解
  2. uoj 228 基础数据结构练习题
  3. 一种改进的条形码定位方案,基于openCV实现,附完整源代码
  4. 计算机毕业设计asp.net旅行社管理系统VS开发sqlserver数据库web结构c#编程计算机网页源码项目
  5. 掉头发第一步之python正则表达式之re模块
  6. 刚哥谈架构 (二) 我眼中的架构师
  7. MeeGo for IVI 1.0 截屏
  8. css 企业级,web前端开发企业级CSS常用命名,书写规范总结
  9. yolov5 Coremltools
  10. 基于SpringBoot的校园二手商品交易系统的设计与实现(自己的作业附项目下载)