效果图:

这里写图片描述

如果没有左右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;

}

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

android 仿360浮动,Android--模仿360底部导航按钮相关推荐

  1. android开发,3秒学会修改底部导航按钮图标

  2. android 仿微信demo————微信顶部操作栏加号按钮实现(弹出子菜单)

    android 仿微信demo----微信启动界面实现 android 仿微信demo----注册功能实现(移动端) android 仿微信demo----注册功能实现(服务端) android 仿微 ...

  3. android 仿360浮动,Android仿360悬浮小球自定义view实现示例

    Android仿360悬浮小球自定义view实现示例 效果图如下: 实现当前这种类似的效果 和360小球 悬浮桌面差不错类似.这种效果是如何实现的呢.废话不多说 ,直接上代码. 1.新建工程,添加悬浮 ...

  4. 爱奇艺首页底部导航按钮android,仿爱奇艺/腾讯视频ViewPager导航条实现

    仿爱奇艺/腾讯视频ViewPager导航条实现,支持自定义导航条高度,宽度,颜色变化,字体大小变化.支持多种滚动模式,支持自定义每个TabView的样式.项目地址:https://github.com ...

  5. android 仿微信录音,Android 模仿微信长按录音功能

    Android 模仿微信长按录音功能 布局就两个button这里不多介绍了. 下面是activity内的代码 package com.example.forevercloud.myapplicatio ...

  6. android 仿ofo页面,[Android进阶]OFO首页实现小窥

    [Android进阶]OFO首页实现小窥 个人微信公众号,欢迎大家加入. [图片上传失败...(image-81989-1544605445241)] 最近阅读量凄凄惨惨,难以为继,孤倍感无力,遂决定 ...

  7. android 仿搜索动画,Android仿京东顶部搜索框滑动伸缩动画效果

    最近使用京东发现,京东顶部的搜索框有一个新的伸缩效果,根据用户的手势滑动,伸缩搜索框.觉得效果还不错,就看了下其他的应用有没有这种伸缩的效果,发现安居客也使用了类似的一种效果,然后就想着实现这样的一种 ...

  8. android仿iphone页面,Android仿苹果关机界面实现代码

    本文实例为大家分享了Android仿苹果关机界面的具体代码,供大家参考,具体内容如下 主class 用来控制viewdialog的显示 package com.android.server.polic ...

  9. android 仿iphone滚轮,android仿iphone滚轮控件显示效果

    android仿iphone滚轮控件显示效果,供大家参考,具体内容如下 在论坛里看到的,自己弄个效果: 这个滚动的WheelView /* * Android Wheel Control. * htt ...

  10. android仿qq动态,Android仿QQ空间主页面的实现

    今天模仿安卓QQ空间,效果如下: 打开程序的启动画面和导航页面我就不做了,大家可以模仿微信的那个做一下,很简单.这次主要做一下主页面的实现,下面是主页面的布局: android:layout_widt ...

最新文章

  1. Zabbix实战之客户端自动注册
  2. 关于selenium的8种元素定位
  3. 请简要说明一下CyclicBarrier和CountDownLatch的区别?
  4. Android中对手机文件进行读写
  5. 一文搞定Qt读写excel以及qt读写xml数据
  6. 一条看似平常的报警邮件所做的分析
  7. php显示html表单内容,HTML表单是什么?HTML表单内容的详细介绍(附代码)
  8. 创建oracle数据库
  9. 时隔一年,盘点CVPR 2019影响力最大的20篇论文
  10. SpringMVC用注解写第一个程序HelloSpringMVC
  11. itextpdf将带复选框的html_HTML基础知识
  12. 设A为n阶非零矩阵,且A^2=A. r(A)=r (0<r<n) 求|5E+A|
  13. 一年中所有节日的排列顺序_我国一年中的传统节日。(按顺序)
  14. Cobal Strike的学习与使用
  15. 三小时学会Kubernetes:容器编排详细指南
  16. 3D动作手游的辅助瞄准算法(二)
  17. 技术人应该广度还是深度学习?
  18. linux下的ld命令(1)
  19. 揭开虚拟主机供应商的面纱(转)
  20. PCIe to CAN Linux 驱动详细说明

热门文章

  1. cv::Mat 与 float 互换,实现 argmax 得到像素点分类
  2. 基于 Slax 构建译者专用 Linux
  3. 使用pycaffe读取caffemodel参数(保存到txt文件)
  4. backlight misc驱动范例 及应用程序范例
  5. 动态配置流处理-BetterCloud如何使用Flink构建报警系统
  6. 关于Exchange邮箱服务器角色故障排查及解决思路分享
  7. dns组件能够删除后恢复
  8. Springboot如何利用http请求控制器
  9. 张小龙公布微信小程序进展 可直接从桌面进入
  10. WayOs路由器WAN口帐号保存工具,可直接发送至邮箱,及保存接口VLAN号