好久没写博客了,每天都在不停的进步着,今天给大家带来的是仿菊花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、花瓣相关推荐

  1. android仿ios菊花,简易仿ios菊花加载loading图

    项目中经常会用到加载数据的loading显示图,除了设计根据app自身设计的动画loading,一般用的比较多的是仿照ios 的菊花加载loading 图,当然一些条件下还会涉及到加载成功/ 失败情况 ...

  2. 高仿书旗小说 Flutter版,支持iOS、Android

    高仿书旗小说 Flutter版,支持iOS/Android Github地址 github.com/huanxsd/flu- screen shot for iOS screen shot for A ...

  3. android 仿支付宝菜单_这个 Android 几乎放弃的设计,iOS 要用上了?

    iOS 和 Android,两个移动时代的操作系统在历经十多年发展后,成熟度之高已经很难再找出大的短板. 如今,这两个系统相似的部分,大概比它们不相似的地方还要多得多.从早期的下拉通知栏,再到现在的侧 ...

  4. android 仿ios三级联动,仿iOS的PickerView控件,有时间选择和选项选择并支持一二三级联动效果...

    Android-PickerView 注意事项.详请使用方式.更新日志等,请查看 Wiki文档 Wiki文档,Wiki文档,Wiki文档 !~ 重要的事情说三遍 对于使用上有任何疑问或优化建议等,欢迎 ...

  5. Android设置透明状态栏,仿ios状态栏

    为什么80%的码农都做不了架构师?>>>    Android设置透明状态栏,仿ios状态栏 设置透明状态栏后,效果如下: 我的实现思路是: 在根布局上添加一块布局 添加了一块线性布 ...

  6. switch+ios风格android,安卓仿IOS Switch开关按钮

    老规矩,先放上一张图,对比一下安卓原生实现的Switch按钮和仿IOS实现的区别: Switch效果对比 下面主要讲讲仿IOS Switch控件的实现,其实安卓Switch控件中提供了两个属性让我们去 ...

  7. 高仿书旗小说 Flutter 版,支持 iOS、Android

    flutter_shuqi 项目地址:huanxsd/flutter_shuqi  简介:高仿书旗小说 Flutter 版,支持 iOS.Android 更多:作者   提 Bug 标签: 简书 sc ...

  8. 移动端实现swiper轮播的图片视频播放video,仿淘宝商品详情的视频播放(兼容ios和android)

    前段时间项目里需要,实现仿淘宝图片视频切换的功能,在网上找了很久,根据网上所收集的信息,最后整合实现项目需求,这里兼容了ios和android,直接拿来用即可,这里是用来记录学习使用的,大家有什么问题 ...

  9. android 日历仿IOS,基于Android week view仿小米和iphone日历效果

    前言 最近由于项目需求,要做一个仿小米日历的功能,下面显示一天的日程,header以周为单位进行滑动,github上找了很久也没有找到合适的,但找到一相近的开源项目Android-week-view, ...

  10. android仿苹果滑动,Android开发仿IOS的滑动按钮

    释放双眼,带上耳机,听听看~! 项目结构 MainActivity public class MainActivity extends AppCompatActivity { @Override pr ...

最新文章

  1. python简单代码hello-PySide教程:一个简单的点击按钮示例
  2. vb.net 如何从文件中读取图像
  3. leaflet-webpack 入门开发系列二加载不同在线地图切换显示(附源码下载)
  4. mysql列的数值型,字符型,日期型
  5. Failed to connect to github.com port 443 after 21505 ms: Timed out
  6. linux 编译.sh,Linux内核编译步骤
  7. javascript 类的创建1
  8. Machine Learning——Homework2
  9. jdk中运行java程序的工具,采用JDK工具编译运行java程序
  10. win7计算机怎么录屏,怎么用win7系统的电脑录屏
  11. Android信鸽推送全解
  12. 安卓游戏开发,vs win32到eclipse apk出现的跨平台问题
  13. stable diffusion webui安装部署教程
  14. 【魔域口袋版】一键端+一键配置器+架设教程+GM工具
  15. RPG游戏Demo学习笔记一
  16. 关于配置ssl证书后网页无法访问的原因
  17. 计算机里被删除的文件可以在哪里进行恢复,电脑里的文件夹不小心删除了找回来的方法...
  18. linux 7分区 fdisk,CentOS7创建逻辑卷,fdisk分区方式。
  19. 解决华硕电脑Ubuntu16.04连接不上wifi的问题
  20. 按键精灵手机版 找图(Findpic)以及其与点击、runapp和找点的对比

热门文章

  1. qt中使用winhttp发送服务端请求
  2. c++分布式游戏服务器架构设计
  3. 其他常见的getshell方式
  4. java 数组求和_java 实现随机数组输出及求和实例详解
  5. 聚焦2020九大科技热点,本周三ELEXCON电子展大幕将启!(含展商名单+会议推荐)...
  6. 关于微信静默登陆和OAuth2
  7. java-php-python-ssm-预约健身私教网站-计算机毕业设计
  8. 链表归并成递减c语言,将递增有序单链表A和B归并成表C 递减单链表的尾插法建立和输出...
  9. android添加语言,android如何添加一种新语言
  10. 文件之获取文件夹路径/data/data/