android模拟支付宝芝麻信用(上)
先来看一下支付宝的,这是看到别的感觉评分啥会用得到,然后写了一下
现在的话六角形是写死,阴影范围用的随机数,字也是自定义的,这个都可以放到构造方法,写成get,set方法,后期去改,
ok来看下view的代码:
package com.fanyafeng.orlitedemo.myview;import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;import java.util.Random;/*** Created by 365rili on 16/4/27.*/
public class PolygonView extends View {// 竖线private Paint verPaint;// 横线private Paint porPaint;// 斜线private Paint slantPaint;// 写字private Paint textPaint;private static String[] listString = new String[]{"科技", "游戏", "音乐", "动画", "鬼畜", "影视"};public PolygonView(Context context) {super(context);}public PolygonView(Context context, AttributeSet attrs) {super(context, attrs);verPaint = new Paint(Paint.ANTI_ALIAS_FLAG);porPaint = new Paint(Paint.ANTI_ALIAS_FLAG);slantPaint = new Paint(Paint.ANTI_ALIAS_FLAG);textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);}public PolygonView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);float strokeWidth = 2;verPaint.setAntiAlias(true);verPaint.setColor(Color.GREEN);verPaint.setStrokeWidth(strokeWidth);porPaint.setAntiAlias(true);porPaint.setColor(Color.GREEN);porPaint.setStrokeWidth(strokeWidth);slantPaint.setAntiAlias(true);slantPaint.setColor(Color.BLUE);slantPaint.setStrokeWidth(strokeWidth);slantPaint.setStyle(Paint.Style.FILL);textPaint.setTextSize(40);textPaint.setTextAlign(Paint.Align.CENTER);textPaint.setStrokeWidth(10);float startX = getLeft();float endX = getRight();float startY = getTop();float endY = getBottom();float width = getWidth();float height = getHeight();Random random = new Random();// 圆心float circleX = width / 2;float circleY = height / 2;
// 半径float circleRadius = width > height ? (height - 180) / 2 : (width - 180) / 2;
// 外接圆
// canvas.drawCircle(circleX, circleY, circleRadius, verPaint);// 每一度所对应的数值double eachAngleLength = 2 * Math.PI / 360;
// *eachAngleLenght相当于响应的度数float eachAngle = 60;
// int[] xList = new int[]{203, 100, 380, 89, 345, 300, 20, 144};int[] xList = new int[]{random.nextInt(400), random.nextInt(400), random.nextInt(400), random.nextInt(400), random.nextInt(400), random.nextInt(400), random.nextInt(400), random.nextInt(400)};for (int i = 0; i < 6; i++) {
// 与外接圆交点的x,y值float finalPointX = (float) (circleX + circleRadius * Math.sin(eachAngle * eachAngleLength * i));float finalPointY = (float) (circleY + circleRadius * Math.cos(eachAngle * eachAngleLength * i));
// 画竖线canvas.drawLine(circleX, circleY, finalPointX, finalPointY, verPaint);// 横线起点x,yfloat porPointStartX = (float) (circleRadius * Math.sin(eachAngle * eachAngleLength * i));float porPointStartY = (float) (circleRadius * Math.cos(eachAngle * eachAngleLength * i));
// 横线终点x,yfloat porPointEndX = (float) (circleRadius * Math.sin(eachAngle * eachAngleLength * (i + 1)));float porPointEndY = (float) (circleRadius * Math.cos(eachAngle * eachAngleLength * (i + 1)));for (int j = 1; j < 5; j++) {
// 画横线canvas.drawLine(circleX + porPointStartX / 4 * j, circleY + porPointStartY / 4 * j, circleX + porPointEndX / 4 * j, circleY + porPointEndY / 4 * j, porPaint);}// 写字,字体的x,yfloat textPointX = (float) (circleX + (circleRadius + 60) * Math.sin(eachAngle * eachAngleLength * i));float textPointY = (float) (circleY + (circleRadius + 60) * Math.cos(eachAngle * eachAngleLength * i));canvas.drawText(listString[i], 0, listString[i].length(), textPointX, i == 3 ? textPointY + 30 : textPointY, textPaint);/*** 在这着重说一下阴影部分* 阴影的话应该是个数组,如果把这个view写成控件的话,就是每个项目占得百分比,但是数据需要搞对,ok现在模拟一下数据*/Path path = new Path();path.moveTo(circleX, circleY);path.lineTo((float) (circleX + xList[i] * Math.sin(eachAngle * eachAngleLength * i)), (float) (circleY + xList[i] * Math.cos(eachAngle * eachAngleLength * i)));path.lineTo((float) (circleX + (i != 5 ? xList[i + 1] : xList[0]) * Math.sin(eachAngle * eachAngleLength * (i + 1))), (float) (circleY + (i != 5 ? xList[i + 1] : xList[0]) * Math.cos(eachAngle * eachAngleLength * (i + 1))));path.close();canvas.drawPath(path, slantPaint);}}
}
android模拟支付宝芝麻信用(上)相关推荐
- Android 接入 支付宝芝麻信用互查
Android 接入 支付宝芝麻信用互查 个人笔记 防止忘记 之前H5调用芝麻授权可以 但是随着芝麻分功能计划下架 需要接入作为新产品的 芝麻信用互查 无奈文档有点少 只能东拼西凑的去找有关于旧版的一 ...
- 支付宝 android ui,Android 仿支付宝芝麻信用分仪表盘效果 CreditSesameRingView
软件介绍 自定义View之仿支付宝芝麻信用分仪表盘效果,喜欢的话,请给个star,谢谢. 使用添加项目依赖Add it in your root build.gradle at the end of ...
- Android自定义view之仿支付宝芝麻信用仪表盘 ---by ccy
自定义view练习 仿支付宝芝麻信用的仪表盘 对比图: 首先是自定义一些属性,可自己再添加,挺基础的,上代码 <?xml version="1.0" encoding=&qu ...
- 自定义xy组 android,Android自定义view之仿支付宝芝麻信用仪表盘示例
自定义view练习 仿支付宝芝麻信用的仪表盘 对比图: 首先是自定义一些属性,可自己再添加,挺基础的,上代码 接着在构造方法里初始化自定义属性和画笔: private void initAttr(At ...
- android自定义表盘部件,Android自定义view仿支付宝芝麻信用表盘
演示效果 实现步骤: 1.画不同宽度和半径的内外圆弧 2.通过循环旋转canvas,在固定位置绘制短线刻度,长线刻度,刻度文字 3.绘制view中心几个文本,并调整位置 4.实时更新当前旋转角度刷新小 ...
- iOS仿支付宝芝麻信用仪表盘效果
概述 自定义View之高仿支付宝芝麻信用分数仪表盘动画效果 详细 代码下载:http://www.demodashi.com/demo/10654.html 仿支付宝芝麻信用仪表盘效果 一.主要思路 ...
- 如何提高支付宝芝麻信用的分数
支付宝的芝麻信用,可以用来做很多的事情,分数越高信用额度也越高,还有其他什么借款啊,租车啊,酒店之类的生活常用的服务都能享用到.不过芝麻信用的分数却总是迟迟不增,怎么才能提高支付宝芝麻信用的分数呢? ...
- 支付宝芝麻信用页面自定义View的简单制作(续)
前两个月刚刚写了一篇关于支付宝芝麻信用页面自定义View的总结,感觉写的不太好,链接如下: http://blog.csdn.net/anny_lin/article/details/49474555 ...
- 模仿支付宝芝麻信用 绘图 多种因素占比多边形
开发中涉及到了绘制图形,实现用多边形展示各个数值的占比,这种情形在支付宝芝麻信用中用到,实际并不复杂,本质就是确定各个点的坐标,然后进行连线.直接上代码如下: 运行效果图 其中需要注意以下几点: 1. ...
最新文章
- shell脚本中的引用
- StaticQueue
- 5-global_data介绍
- IO概述、异常、File文件类_DAY19
- JBoss Fuse –一些鲜为人知的技巧
- 输出一个整数的逆序数
- C# Types Type Members
- selinux-setroubleshoot安装及详解
- 机器视觉开源处理库汇总-介绍n款计算机视觉库/人脸识别开源库/软件 -几种图像处理类库的比较-视觉相关网站...
- 26.Linux/Unix 系统编程手册(上) -- 监控子进程
- linux 基础命令(三)
- 完全免费的公众号文章批量下载器
- GIS软件开发入门需要学习哪些内容?
- 索引缓存_如何重置您的Google桌面索引缓存
- 开源WebGIS开发——栅格图层
- Linux CentOS 系统实战笔记-基础篇
- 《大学物理》课程考试大纲
- 利用C++实现简单的文件加密
- 最新C语言深入剖析班项目实战教程(国嵌 唐老师主讲)
- 将url网址转换成对象
热门文章
- vijosP1006 晴天小猪历险记之Hill
- YOLOV7训练TT100K交通标识符数据集
- ‘SchemaItem‘ object, such as a ‘Column‘ or a ‘Constraint‘ expected, go <class ‘int‘>
- 学习C语言-学习指针
- 《鹰猎长空》分析国产儿童电影的历史经验与道路
- 音频开发_如何获取单词的音频mp3文件
- 用python自制微信机器人,定时发送天气预报
- 电子垃圾回收处置 蛋糕虽大为何难啃?
- JS中的遍历、点击、排他
- 关键词之-关键词堆砌!