TX的王者荣耀最近是火的不得了啊,小编也是最近入坑。玩了几天之后,发现对战资料之能力图,蛮有意思(其实我想说,我们的产品妹子是个农药迷,非要把农药的能力图搬到我们的app中),于是就有了下面的自定义view了。。。

首先看农药的截图

看到这样的需求之后,果断的各种github或baidu,有料,虽没有可以直接搬来的用的view(但是皇天不负有(偷)心(懒)人),把他的view拿过来改ba改ba就有了现在这个轮子了。。。好了,东拉西扯了这么多,废话终止吧,还是直奔主题了。

ps:鸿洋的公众号中有这么个帖子,链接地址:Android自定义控件 芝麻信用分雷达图

一、首先,讲一下实现思路:

1.首先确定view的中点坐标;

2.绘制多边形;

3.绘制中点到多边形各顶点连线;

4.绘制目标圆点;

5.绘制目标点之间的连线,连接完成后,再绘制覆盖区域;

6.绘制中心文字;

7.绘制多边形各顶点的文字。

二、接着,按上面的实现思路按部就班实现:

1.获取中点坐标,在onSizeChanged(int w, int h, int oldw, int oldh)方法中获取,就省了测量的步骤。根据view的width、height,计算出中点坐标(说明:radius= Math.min(w,h) /2*3/5,‘*3/5’是设置半径为view占得区域比例)

2.绘制多边形,这里举例绘制六变形,请先看实现截图

下面看具体实现,这里要说明两个问题:

1)绘制多边形,因为是绘制5个六边形,而且是按比例0.2,所以就有了后面的percent这个参数;

2)getPoint(int position,float percent)这个方法非常重要(后面贴图),可以这么讲,整个自定义view,全依赖它了。后面细述,这里就不赘述了。

3.绘制中点到多边形各顶点连线。这里还是以刚才的六边形举例,请看截图和具体是实现:

4.绘制目标圆点,因为圆点绘制比较小的缘故,这里就不贴图了,请大家自行脑补或看后面的实现截图,可以看到一个小圆点。下面请看具体实现:

5.绘制目标点之间的连线,连接完成后,再绘制覆盖区域。请先看实现截图,然后请看下面的实现细节:

6.绘制中心文字,还是请先看实现效果,然后后面接着具体实现,这里说明一下,drawtext方法,该方法的目的是为了让文字居中(原理:先建一个矩形,把目标文字放进去,即可得到目标文字的宽高)。然后根据文字的左下角坐标开始绘制文字,即可让文字居中。

7.绘制多边形各顶点的文字。老规矩,还是先看实现截图,然后看实现细节:(请原谅,这里的实现效果截图是在as的效果预览中截的,所以细心的童鞋可能已经发现了,其实在手机上运行截图如上图,文字居中显示。)

补充:1.记得在上面讲过,一个最重的getPoint方法还没细述,这里要详细讲一下。请先看具体实现截图,然后讲为什么这样?!原理:每个点都是相对于中点(centerX,centerY)的,所以我们先获取每个点的绝对坐标(x0,y0),然后再计算出这些点相对于中点的坐标,即可得到已知坐标的点。

ps:这里对奇数边的多边形和偶数边的多边形进行了区分,至于为什么区分,请自行脑补。原理:目标点绕某个点旋转某角度之后该点的新坐标与原坐标之间存在着某种关系,详细关系请见截图公式。

2.忘记讲values/attrs文件了,这个还是有必要聊一下的,因为它涉及view应用时的自定义属性,可以直接在view中定义。下面请看attrs.xml

三、使用

用法1.view中使用

用法2.activity或fragment

四、源码地址:https://gitee.com/tangbuzhi/customview

Android 仿王者荣耀广告弹窗,android仿王者荣耀对战资料之能力图相关推荐

  1. Android【垂直滚动广告条】仿淘宝头条1号店京东—垂直滚动广告条

    文章为博主原创,欢迎大家进行阅读和转载,转载请注明出处:http://blog.csdn.net/sophie237/article/details/54911349 淘宝头条是淘宝App中很经典的一 ...

  2. android 隐藏输入法时自动关闭弹窗,Android监听输入法弹窗和关闭的实现方法

    用过ios的都知道ios上输入法关闭的同时会自动关闭输入框,那么在android上如何实现监听输入法弹出和关闭呢?本篇文章就为你提供了一种可靠的实现方式. 首先在AndroidManifest中配置 ...

  3. android 双开盒子加广告,【Android】悟空分身v4.3.5去广告版

    软件介绍: 1.免费分身 不同于市面上多开暗藏扣费,本产品完全免费,致力于让所有用户都能解决多开分身刚需,优化部分手机只能两个分身,限于QQ和分身的情况,经2000万用户实测,悟空分身已覆盖:多开.支 ...

  4. android 隐藏输入法时自动关闭弹窗,Android疑难杂症之Dialog消失,关闭输入法

    由于项目需要,实现一个小需求: 1) 有一个功能是弹出一个输入框,自动弹出输入法 2)关闭时 ,自动隐藏输入法 感觉很简单的一个功能,页面做完后发现,输入法没有弹出来 怎么办? 这个很简单,手动打开输 ...

  5. android 广告效果图,android 仿首页广告轮播效果

    1.我们经常打开一个App会看到有广告图片轮播的效果,首先上效果图1.我们经常打开一个App会看到有广告图片轮播的效果,首先上效果图2.实现的过程1.轮播页面他是一 1.我们经常打开一个App会看到有 ...

  6. Android 垂直滚动广告条,仿淘宝头条垂直滚动展示最新消息

    最新的项目有个新需求,就是要去垂直滚动去展示最新发布的消息,类似淘宝头条的那种 1.功能实现其实很简单,就用到Android 的原生控件ViewFlipper <ViewFlipperandro ...

  7. Android自定义控件开发系列(三)——仿支付宝六位支付密码输入页面

    在移动互联领域,有那么几家龙头一直是我等学习和追求的目标,比如支付宝.微信.饿了么.酷狗音乐等等,大神举不胜举,他们设计的界面.交互方式已经培养了中国(有可能会是世界)民众的操作习惯:举个小例子,对话 ...

  8. 仿王者荣耀对战资料选项中的【雷达网图展示详细数据】

    听朋友说[王者荣耀]挺火的让我也下载,没事的时候一块玩几局(这里不是打广告啊,毕竟我不是腾讯的员工,大写的尴尬...),当我查看个人资料的时候,看到有对战资料选项,对战的详细数据是以雷达网图的形式.圆 ...

  9. Android开发-使用高德地图SDK实现仿钉钉打卡的功能

    前 言 LBS(基于地理位置服务)是当前移动互联网大部分应用不可或缺的功能,基于地理位置服务的Android平台的开发是主要用于Android系统作为载体,我们可以利用定位出的位置进行许多丰富多彩的操 ...

最新文章

  1. Filter的细节三学习笔记
  2. FIR数字滤波器设计频率抽样法MATLAB仿真
  3. 京东上市了,员工有多少股票? .
  4. 留住用户的APP弹窗设计素材模板
  5. java 网格包,求大神解答:JAVA网格包布局管理器小程序问题
  6. 算法分析与设计实验报告二——贪心算法实验
  7. matlab 传函将s换为jw,已知单位负反馈系统开环传递函数为20 s(0.5s 1),
  8. 网络编辑必学:网络新闻标题之争
  9. crx文件怎么打开(谷歌crx文件怎么打开)
  10. 什么是工业物联网网关?
  11. 浏览器突然不能上网,DNS问题
  12. 我的世界服务器怎么弄无限矿物,minecraft mod教程:在世界上生成矿石:GameRegistry的使用5...
  13. 基于CAS的单点登录的下载和demo
  14. 【区块链实战】什么是区块链,为什么会产生区块链技术
  15. C/C++时间戳转换函数
  16. 【paper】latex使用algorithm工具包实现伪代码排版
  17. (附源码)springboot学生宿舍管理系统 毕业设计 161542
  18. 0032-PAT满分行动第二天:简单模拟1046、1008、1012
  19. echo和echo2的wp
  20. URAL 提交_天涯浪子_新浪博客

热门文章

  1. terminated 线程_Java【多线程系列】JUC线程池—2. 原理(二)、Callable和Future
  2. java表格更新javadb_Java解析excel表格(新)
  3. arcgis怎么做poi_跟着闫磊大神学ArcGIS,事半功倍
  4. unity3d 地面印花_unity怎么实现挖掘泥土?
  5. linux怎么取消raid磁盘阵列,Linux下彻底关闭某个RAID磁盘阵列
  6. 易驾佳智能机器人教练_学车吗?全智能模拟+车载机器人教练,让你轻松学车...
  7. 移动测试架构演进 | 蚂蚁金服自动化用例管理探索
  8. Node.js构建可扩展的Web应用1
  9. 如何通过组件化提高开发效率?
  10. [UWP]依赖属性2:使用依赖属性