android仿ios菊花,android仿IOS 旋转菊花Loading、等待Loading、花瓣
好久没写博客了,每天都在不停的进步着,今天给大家带来的是仿菊花loading,在百度看了许多,大部分都是通过图片的方式实现的,那么我现在是通过自定义view的方式实现的,废话也不多说了,就在代码中注释讲解。本文地址:http://blog.csdn.net/qq_29849667/article/details/53446911
/**
* Created by Sick on 2016/12/2.
*/
public class IOSLoadingView extends View {
private static final String TAG = IOSLoadingView.class.getSimpleName();
/**
* view宽度
*/
private int width;
/**
* view高度
*/
private int height;
/**
* 菊花的矩形的宽
*/
private int widthRect;
/**
* 菊花的矩形的宽
*/
private int heigheRect;
/**
* 菊花绘制画笔
*/
private Paint rectPaint;
/**
* 循环绘制位置
*/
private int pos = 0;
/**
* 菊花矩形
*/
private Rect rect;
/**
* 循环颜色
*/
private String[] color = {"#bbbbbb", "#aaaaaa", "#999999", "#888888", "#777777", "#666666",};
public IOSLoadingView(Context context) {
this(context, null);
}
public IOSLoadingView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public IOSLoadingView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
rectPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
//根据个人习惯设置 这里设置 如果是wrap_content 则设置为宽高200
if (widthMode == MeasureSpec.AT_MOST || heightMode == MeasureSpec.AT_MOST) {
width = 200;
} else {
width = MeasureSpec.getSize(widthMeasureSpec);
height = MeasureSpec.getSize(heightMeasureSpec);
width = Math.min(width, height);
}
widthRect = width / 12; //菊花矩形的宽
heigheRect = 4 * widthRect; //菊花矩形的高
setMeasuredDimension(width, width);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//绘制部分是关键了,菊花花瓣矩形有12个,我们不可能去一个一个的算出所有的矩形坐标,我们可以考虑
//旋转下面的画布canvas来实现绘制,每次旋转30度
//首先定义一个矩形
if (rect == null) {
rect = new Rect((width - widthRect) / 2, 0, (width + widthRect) / 2, heigheRect);
}
// 0 1 2 3 4 5 6 7 8 9 10 11 i的值
// ————————————————————————————————————————————————————————
// 0 ‖ 0 | 1 | 2 | 3 | 4 | 5 | 5 | 5 | 5 | 5 | 5 | 5 ‖
// 1 ‖ 5 | 0 | 1 | 2 | 3 | 4 | 5 | 5 | 5 | 5 | 5 | 5 ‖
// 2 ‖ 5 | 5 | 0 | 1 | 2 | 3 | 4 | 5 | 5 | 5 | 5 | 5 ‖
// 3 ‖ 5 | 5 | 5 | 0 | 1 | 2 | 3 | 4 | 5 | 5 | 5 | 5 ‖
// 4 ‖ 5 | 5 | 5 | 5 | 0 | 1 | 2 | 3 | 4 | 5 | 5 | 5 ‖
// 5 ‖ 5 | 5 | 5 | 5 | 5 | 0 | 1 | 2 | 3 | 4 | 5 | 5 ‖
// 6 ‖ 5 | 5 | 5 | 5 | 5 | 5 | 0 | 1 | 2 | 3 | 4 | 5 ‖
// 7 ‖ 5 | 5 | 5 | 5 | 5 | 5 | 5 | 0 | 1 | 2 | 3 | 4 ‖
// 8 ‖ 4 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 0 | 1 | 2 | 3 ‖
// 9 ‖ 3 | 4 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 0 | 1 | 2 ‖
// 10 ‖ 2 | 3 | 4 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 0 | 1 ‖
// 11 ‖ 1 | 2 | 3 | 4 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 0 ‖
// pos的值
for (int i = 0; i < 12; i++) {
if (i - pos >= 5) {
rectPaint.setColor(Color.parseColor(color[5]));
} else if (i - pos >= 0 && i - pos < 5) {
rectPaint.setColor(Color.parseColor(color[i - pos]));
} else if (i - pos >= -7 && i - pos < 0) {
rectPaint.setColor(Color.parseColor(color[5]));
} else if (i - pos >= -11 && i - pos < -7) {
rectPaint.setColor(Color.parseColor(color[12 + i - pos]));
}
canvas.drawRect(rect, rectPaint); //绘制
canvas.rotate(30, width / 2, width / 2); //旋转
}
pos++;
if (pos > 11) {
pos = 0;
}
postInvalidateDelayed(100); //一个周期用时1200
}
// public void setStartAnimal() {
// ValueAnimator valueAnimator = ValueAnimator.ofInt(0, 12);
// valueAnimator.setDuration(1500);
// valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
// valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
// @Override
// public void onAnimationUpdate(ValueAnimator animation) {
// pos = (int) animation.getAnimatedValue();
// Log.d(TAG, "pos:" + pos);
// invalidate();
// }
// });
// valueAnimator.start();
// }
}到这里就结束了,下一篇 会重新写一个弹性recyclerview的容器。
android仿ios菊花,android仿IOS 旋转菊花Loading、等待Loading、花瓣相关推荐
- android仿ios菊花,简易仿ios菊花加载loading图
项目中经常会用到加载数据的loading显示图,除了设计根据app自身设计的动画loading,一般用的比较多的是仿照ios 的菊花加载loading 图,当然一些条件下还会涉及到加载成功/ 失败情况 ...
- 高仿书旗小说 Flutter版,支持iOS、Android
高仿书旗小说 Flutter版,支持iOS/Android Github地址 github.com/huanxsd/flu- screen shot for iOS screen shot for A ...
- android 仿支付宝菜单_这个 Android 几乎放弃的设计,iOS 要用上了?
iOS 和 Android,两个移动时代的操作系统在历经十多年发展后,成熟度之高已经很难再找出大的短板. 如今,这两个系统相似的部分,大概比它们不相似的地方还要多得多.从早期的下拉通知栏,再到现在的侧 ...
- android 仿ios三级联动,仿iOS的PickerView控件,有时间选择和选项选择并支持一二三级联动效果...
Android-PickerView 注意事项.详请使用方式.更新日志等,请查看 Wiki文档 Wiki文档,Wiki文档,Wiki文档 !~ 重要的事情说三遍 对于使用上有任何疑问或优化建议等,欢迎 ...
- Android设置透明状态栏,仿ios状态栏
为什么80%的码农都做不了架构师?>>> Android设置透明状态栏,仿ios状态栏 设置透明状态栏后,效果如下: 我的实现思路是: 在根布局上添加一块布局 添加了一块线性布 ...
- switch+ios风格android,安卓仿IOS Switch开关按钮
老规矩,先放上一张图,对比一下安卓原生实现的Switch按钮和仿IOS实现的区别: Switch效果对比 下面主要讲讲仿IOS Switch控件的实现,其实安卓Switch控件中提供了两个属性让我们去 ...
- 高仿书旗小说 Flutter 版,支持 iOS、Android
flutter_shuqi 项目地址:huanxsd/flutter_shuqi 简介:高仿书旗小说 Flutter 版,支持 iOS.Android 更多:作者 提 Bug 标签: 简书 sc ...
- 移动端实现swiper轮播的图片视频播放video,仿淘宝商品详情的视频播放(兼容ios和android)
前段时间项目里需要,实现仿淘宝图片视频切换的功能,在网上找了很久,根据网上所收集的信息,最后整合实现项目需求,这里兼容了ios和android,直接拿来用即可,这里是用来记录学习使用的,大家有什么问题 ...
- android 日历仿IOS,基于Android week view仿小米和iphone日历效果
前言 最近由于项目需求,要做一个仿小米日历的功能,下面显示一天的日程,header以周为单位进行滑动,github上找了很久也没有找到合适的,但找到一相近的开源项目Android-week-view, ...
- android仿苹果滑动,Android开发仿IOS的滑动按钮
释放双眼,带上耳机,听听看~! 项目结构 MainActivity public class MainActivity extends AppCompatActivity { @Override pr ...
最新文章
- python简单代码hello-PySide教程:一个简单的点击按钮示例
- vb.net 如何从文件中读取图像
- leaflet-webpack 入门开发系列二加载不同在线地图切换显示(附源码下载)
- mysql列的数值型,字符型,日期型
- Failed to connect to github.com port 443 after 21505 ms: Timed out
- linux 编译.sh,Linux内核编译步骤
- javascript 类的创建1
- Machine Learning——Homework2
- jdk中运行java程序的工具,采用JDK工具编译运行java程序
- win7计算机怎么录屏,怎么用win7系统的电脑录屏
- Android信鸽推送全解
- 安卓游戏开发,vs win32到eclipse apk出现的跨平台问题
- stable diffusion webui安装部署教程
- 【魔域口袋版】一键端+一键配置器+架设教程+GM工具
- RPG游戏Demo学习笔记一
- 关于配置ssl证书后网页无法访问的原因
- 计算机里被删除的文件可以在哪里进行恢复,电脑里的文件夹不小心删除了找回来的方法...
- linux 7分区 fdisk,CentOS7创建逻辑卷,fdisk分区方式。
- 解决华硕电脑Ubuntu16.04连接不上wifi的问题
- 按键精灵手机版 找图(Findpic)以及其与点击、runapp和找点的对比
热门文章
- qt中使用winhttp发送服务端请求
- c++分布式游戏服务器架构设计
- 其他常见的getshell方式
- java 数组求和_java 实现随机数组输出及求和实例详解
- 聚焦2020九大科技热点,本周三ELEXCON电子展大幕将启!(含展商名单+会议推荐)...
- 关于微信静默登陆和OAuth2
- java-php-python-ssm-预约健身私教网站-计算机毕业设计
- 链表归并成递减c语言,将递增有序单链表A和B归并成表C 递减单链表的尾插法建立和输出...
- android添加语言,android如何添加一种新语言
- 文件之获取文件夹路径/data/data/