当前版本:SimpleWaveView_v1.0.20140618

先看效果图,这个加速球是动态的,并且当调用了myView.setRefresh(0.8F);方法后可以从当前值动态降到0再升到80%,期间可以看到颜色的变化。颜色不是渐变的。本人不会弄动态图所以只有静态图片 = =

本进度球的优点:

1之前我用一张波浪图片不停的截取来做,结果在我的200M的虚拟机上渐渐的开始卡,并且系统不停的自动GC,所以就用了这种方式来做,大大优化了其对CPU和内存的压力。

值得一提的是,当其所属的父View被cleanAnimation后,进度球的波浪会停止,由于本人时间非常紧,所以诸如此类的问题请给我留言,我会在有时间的时候来回复和加入新的东西。

2可以变色,最多可以设置三种颜色,详细看后的API

3反正一定要看API。

小提示:

亮色的背景可以减少视觉对锯齿的感知哦!

下图是在帧布局中的,就不上布局了哈,毕竟帧布局是最简单的布局。

当设置了

myView.setWaveDiffrentColor(0xffff0f04, 0xfffdd803, 0xff00ed04, 0.3F, 0.6F);

后进行刷新后的三种色的图片。相信看后边的中文API。文字是帧布局盖上去的,不是demo中的

demo的下载地址在CSDN上,老规矩,0分即可下载。我都这么虔诚了,所以请各位亲若转载我的文章附上我的blog的地址,以后若有新版本方便更换。http://www.cnblogs.com/uncle2000/

使用方法,这次不需要你传长宽和像素密度了。

LinearLayout ll;

com.ww.view.SimpleWaveViewmyview =new com.ww.view.SimpleWaveView(getApplicationContext());

ll=(LinearLayout)findViewById(R.id.ll);
ll.addView(myview); myview.setWaveDiffrentColor(0xffff0f04, 0xfffdd803, 0xff00ed04, 0.3F, 0.6F); myview.setRefresh(0.8F);

API:

    /**
* Level1在(0%,100%)之间则ColorLevel1,ColorLevel2生效,有两种颜色。Level2在(Level1,100%)之间则ColorLevel1,ColorLevel2,ColorLevel3生效,有三种颜色。
* 该方法一旦生效,则setColor()方法自动失效。
* @param ColorLevel1 [0%,Level1)之间的波浪的颜色
* @param ColorLevel2 Level2生效的情况下,显示为[Level1,Level2)之间的波浪的颜色,Level2不生效的情况下,显示为[Level1,100%]之间的波浪的颜色。
* @param ColorLevel3 [Level2,100%]之间的波浪的颜色
* @param Level1 第一分界
* @param Level2 第二分界,大于Level1生效,否则默认失效。
*/
public void setWaveDiffrentColor(int ColorLevel1,int ColorLevel2,int ColorLevel3,float Level1,float Level2) {}
/**
* 设置波浪的颜色,如果设置了setWaveDiffrentColor()方法则setColor()自动失效。
* @param color波浪颜色
*/
public void setColor(int color) {}
/**
* 从刷新前的高度降到0,然再升到刷新后的高度
* @param refresh 刷新之后的高度
*/
public void setRefresh(float refresh) {}
/**
* 取值0~255之间,255代表不透明。
* @param alpha 透明度
*/
public void setAlpha(int alpha) {}
    /**
* 决定了两个波峰之间的距离,该参数越大,波峰之间的距离越小
* @param peakSpacing 波间距(反比)
*/
public void setPeakSpacing(double peakSpacing) {}
    /**
* 决定了当前波浪停留的位置。取值0~1之间。
* @param percentage 百分比
*/
public void setPercentage(float percentage) {}
    /**
* 决定了波的高度
* @param amplitude 幅度
*/
public void setAmplitude(float amplitude) {}
    /**
*
* @param speedH 水平波浪的速度
*/
public void setSpeedH(float speedH) {}
/**
*
* @param speedV 升降的速度
*/
public void setSpeedV(float speedV) {}

下载地址:

http://download.csdn.net/detail/w52155242/7517331

【View】之【SimpleWaveView】可多色可刷新的加速球、进度球【demo】的更多相关文章

  1. Android 自定义View修炼-仿360手机卫士波浪球进度的实现

    像360卫士的波浪球进度的效果,一般最常用的方法就是 画线的方式,先绘sin线或贝塞尔曲线,然后从左到右绘制竖线,然后再裁剪圆区域. 今天我这用图片bitmap的方式,大概的方法原理是: (1)首先用 ...

  2. 【Android - 自定义View】之自定义可下拉刷新或上拉加载的ListView

    首先来介绍一下这个自定义View: (1)这个自定义View的名称叫做 RefreshableListView ,继承自ListView类: (2)在这个自定义View中,用户可以设置是否支持下拉刷新 ...

  3. 用 Python 写出这样的进度条,刷新了我对进度条的认知

    ❞ 1 简介 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给 ...

  4. 解决:View调用invalidate()后不刷新onDraw()

    近来学android图片处理,按照例子来,自定义一个View,之后在Activity里面手动调用该View的invalidate()后,一直无法刷新onDraw() 上网搜了一下,有两种解决办法: 一 ...

  5. Android高手速成--第一部分 个性化控件(View)

    第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...

  6. Android之下拉刷新的ListView

    不废话,代码里面注释很详细,直接上代码: 自定义的RefreshableListView代码: public class RefreshableListView extends ListView im ...

  7. Android之自定义控件-下拉刷新

    实现效果: 图片素材:         --> 首先, 写先下拉刷新时的刷新布局 pull_to_refresh.xml: <resources> <string name=& ...

  8. ListView下拉刷新

    本内容为复制代码: 一.自定义ListView控件: package com.xczl.smart.view; import java.util.Date; import com.suliang.R; ...

  9. Android--ListView下拉刷新

    整理了下以前写的小项目,ListView的下拉刷新,虽然小但还是想纪念下..适合新手看,大神略过... 效果图:     代码:  实体类 package com.example.listviewre ...

随机推荐

  1. 强者联盟——Python语言结合Spark框架

    引言:Spark由AMPLab实验室开发,其本质是基于内存的高速迭代框架,"迭代"是机器学习最大的特点,因此很适合做机器学习. 得益于在数据科学中强大的表现,Python语言的粉丝 ...

  2. ntp服务的细节全解析

    在linux里设置NTP服务并不难,但是NTP本身确是一个很复杂的协议. 你都了解细节么? 1. 时间和时区 date命令可显示时间与市区 [root@T_PV1_DB ~]# date Tue Fe ...

  3. 告诉你38个MySQL数据库的小技巧

    无论是运维.开发.测试,还是架构师,数据库技术是一个必备加薪神器,那么,一直说学习数据库.学MySQL,到底是要学习它的哪些东西呢? 1.如何快速掌握MySQL? 培养兴趣 兴趣是最好的老师,不论学习 ...

  4. Java多线程和并发基础

    第一:Java多线程面试问题 1:进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运 ...

  5. Makefile初探

    选择一个目录创建一个Makefile文件: 注意第二行的开头需要时TAB建空开,不要用空格 执行make make的时候,无论你创建的是makefile还是Makefile都可以识别 ,不在乎开头的字 ...

  6. python下RSA加密解密以及跨平台问题

    Reference:  http://www.cnblogs.com/luchanghong/archive/2012/07/18/2596886.html 项目合作需要,和其他网站通信,消息内容采用 ...

  7. 一款纯css3实现的动画按钮

    今天给大家分享一款纯css3实现的动画按钮.第一排的按钮当鼠标经过的背景色动画切换,图标从右侧飞入,第二排的按钮当鼠标经过的时候边框动画切换,图标右侧飞入,效果非常好,一起看下效果图: 在线预览    ...

  8. MapReduce的集群行为和框架

    MapReduce的集群行为 MapReduce的集群行为包括: 1.任务调度与执行MapReduce任务由一个JobTracker和多个TaskTracker两类节点控制完成.(1)JobTrack ...

  9. [sz,rz]使用sz/rz在两台Linux设备之间传输数据

    转自:https://superuser.com/questions/604055/using-rz-and-sz-under-linux-shell zsend #!/bin/sh DEV=/dev ...

  10. [LintCode]判断一个字符串是否包含另一个字符串的所有字符

    问题描述: 比较两个字符串A和B,确定A中是否包含B中所有的字符.字符串A和B中的字符都是 大写字母. 样例 给出 A = "ABCD" B = "ACD",返 ...