1. 程式人生 > >【View】之【SimpleWaveView】可多色可重新整理的加速球、進度球【demo】

【View】之【SimpleWaveView】可多色可重新整理的加速球、進度球【demo】

轉載  http://www.cnblogs.com/uncle2000/p/3796034.html


當前版本: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