翻翻git之---自定義View實現水位上漲效果 WaveProgressView
P1 (廢話部分,技術內容在P2)
上週陸續收到一些想嘗試性換工作的小夥伴們的簡歷,相關的負責的HR妹子已經電話轟炸過去了,如果有興趣的小夥伴可以看下http://blog.csdn.net/ddwhan0123/article/details/50756745的最下面部分,有相關職位的介紹,簡歷到QQ郵箱 [email protected]
P2 這篇介紹的 是 一個(動畫+思路)蠻不錯的 進度實現的效果
效果:
how to use?
gradle:
/build.gradle檔案
jitpack.io
repositories {
maven {
url "https://jitpack.io"
}
}
/app/build.gradle檔案
compile 'com.github.zeng1990java:WaveProgressView:1.0.5'
Eclipse:
把圈出來的地方copy下就行了,程式碼內容不多
我們先來看下自定義標籤(用於初始化和設定)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="WaveProgressView">
<attr name="waveColor" format="color"/>
<attr name="waveBorderWidth" format="dimension"/>
<attr name="waveBorderRadius" format="dimension"/>
<attr name="waveAmplitude" format="dimension"/>
<attr name="waveMax" format="integer"/>
<attr name="waveProgress" format ="integer"/>
</declare-styleable>
</resources>
大致是設定顏色啊,畫筆粗細啊,最大值啊,進度值啊,外部框體線條厚度之類的
那 如何使用呢?
<com.github.zeng1990java.widget.WaveProgressView
android:id="@+id/wave_progress_view_2"
android:layout_width="120dp"
android:layout_height="80dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="10dp"
android:layout_centerHorizontal="true"
app:waveMax="100"
app:waveColor="#3498db"
app:waveAmplitude="8dp"
app:waveBorderWidth="3dp"
app:waveBorderRadius="2dp"
/>
引用下就行了 不引用的話有預設值。
大致講一下實現,這裡就不讀程式碼了 首先先獲取了一大堆引數,然後根據根據長寬高和傳入的畫筆粗細 畫外面那個空心大方框,再是根據寬度計算Y的變化繪製那個水波的效果 最後再onDraw裡畫出來就行了 我覺得6的是下面那個方法的演算法(好吧,我菜)
核心路徑繪製在updatePath()方法中
private void updatePath() {
this.mPath.reset();
for (int i = 0; i < mWaveWidth; i++) {
int x = i;
int y = (int) clamp(
mAmplitude * Math.sin((i* mAngularVelocity + mAngle * Math.PI) / 180.0f) + (mWaveHeight - mWaveProgressHeight),
mHaftBorderRadius,
mWaveHeight
);
if (i == 0) {
this.mPath.moveTo( x, y);
}
this.mPath.quadTo( x, y, x + 1, y);
}
this.mPath.lineTo(mWaveWidth, mWaveHeight);
this.mPath.lineTo(0, mWaveHeight);
this.mPath.close();
}
其他就是一些各種set加Anim了。
再說下在Activity裡如何使用
首先,先獲取控制元件物件
WaveProgressView waveProgressView = (WaveProgressView) findViewById(R.id.wave_progress_view);
然後進行一些簡單的設定,還可以設定顏色啊,進度值什麼的。
waveProgressView.setMax(100);
作者在其官方的演示裡是讓動畫在不同持續時間無限迴圈的
private void animWave(WaveProgressView waveProgressView, long duration){
ObjectAnimator progressAnim = ObjectAnimator.ofInt(waveProgressView, "progress", 0, waveProgressView.getMax());
progressAnim.setDuration(duration);
progressAnim.setRepeatCount(ObjectAnimator.INFINITE);
progressAnim.setRepeatMode(ObjectAnimator.RESTART);
progressAnim.start();
}
總體來說,使用起來幾乎沒難度,如果要完全獨立自己寫一個類似的控制元件的話,還是要對 Canvas Paint 以及View的繪製有一定量好的基礎才可以做出來。
相關推薦
翻翻git之---自定義View實現水位上漲效果 WaveProgressView
P1 (廢話部分,技術內容在P2) 上週陸續收到一些想嘗試性換工作的小夥伴們的簡歷,相關的負責的HR妹子已經電話轟炸過去了,如果有興趣的小夥伴可以看下http://blog.csdn.net/ddwhan0123/article/details/507
Android自定義View——實現水波紋效果類似剩余流量球
string 三個點 pre ber block span 初始化 move 理解 最近突然手癢就想搞個貝塞爾曲線做個水波紋效果玩玩,終於功夫不負有心人最後實現了想要的效果,一起來看下吧: 效果圖鎮樓 一:先一步一步來分解一下實現的過程 需要繪制一個正弦曲線(sin
Android 自定義View實現拖拽效果
騰訊QQ有那種紅點拖動效果,今天就來實現一個簡單的自定義View拖動效果,再回到原處,並非完全仿QQ紅點拖動 先來看一下效果圖 簡單說一下實現步驟 1.建立一個類繼承View 2.繪製出一個
Android 自定義View實現圓形環繞效果
之前專案中需要實現一個四周環繞中心圓形頭像的效果,感覺還是自定義比較方便,於是就自己封裝了一個控制元件去實現。先貼張圖顯示最終效果。 首先自定義一個View繼承自LinearLayout,通過動態新增childView的方式將子控制元件新增到View中。思路是先新增中間圓形頭像
自定義view實現水波紋效果
自定義view實現水波紋效果 參考csdn大神 啟艦的部落格http://blog.csdn.net/harvic880925/article/details/50995587,自己實現了一遍,碰到的坑有2個: 1、記得呼叫mPath.reset(),否則每次的path內容會疊
Android 自定義view實現水波紋效果
今天主要分享水波紋效果:1.標準正餘弦水波紋;2.非標準圓形液柱水波紋;雖說都是水波紋,但兩者在實現上差異是比較大的,一個通過正餘弦函式模擬水波紋效果,另外一個會運用到影象的混合模式(PorterDuffXfermode);先看效果:
Android自定義View實現水波紋效果
本篇博文介紹一個Android自定義View的案例,後續博文會接下自定義View的相關流程和繪製原理。通過自定義控制元件實現。觸控式螢幕幕實現水波紋效果。實現步驟第1步.自定義MyWave繼承Viewpublic class MyWave extends View {}第2步
Android自定義View——實現水波紋效果類似剩餘流量球
最近突然手癢就想搞個貝塞爾曲線做個水波紋效果玩玩,終於功夫不負有心人最後實現了想要的效果,一起來看下吧: 效果圖鎮樓 一:先一步一步來分解一下實現的過程 需要繪製一個正弦曲線(sin)或者餘弦曲線(cos) 通過水平平移曲線來的到像水
Android:自定義View實現水波進度效果
首先上效果圖: 簡介: 1.自動適應螢幕大小; 2.水波自動橫向滾動; 3.各種繪製引數可通過修改常量進行控制。 程式碼不多,註釋也比較詳細,全部貼上: (一)自定義元件: /** * 水波進度效果. */ public class WaterWaveView e
Android自定義View實現圓弧進度效果
前言:Android開發中,自定義View實現自己想要的效果已成為一項必備的技能,當然自定義View也是Android開發中比較難的部分,涉及到的知識有Canvas(畫布),Paint(畫筆)等,自定義控制元件分為三種:一是直接繼承自View,完全的自定義;二是在原有控制元件
翻翻git之---自己定義郵件發送buttonSendButton(流程分析,實現思路能夠學習下)
現象 date() 加速 lag restart xtend fas trace str 轉載請註明出處:王亟亟的大牛之路 距離過春節還有1天。繼續這一系列的git翻料之旅。 昨天的工具類真的非常棒,這裏再推崇一下 傳送門:http://blog.c
Android進階之自定義View實戰(一)仿iOS UISwitch控制元件實現
一.引言 個人覺得,自定義View一直是Android開發最變換莫測、最難掌握、最具吸引力的地方。因為它涉及到的知識點比較多,想在實際應用中駕輕就熟,由淺入深,你需要掌握以下知識點: 1. View的繪製機制以及Canvas、Paint、Rect等的常用方
Android進階之自定義View(1)實現可換行的TextView
今天來一起學習一下最簡單的自定義view,自己動手寫一個MyTextView,當然不會像系統的TextView那麼複雜,只是實現一下TextView的簡單功能,包括分行顯示及自定義屬性的處理,主要目的是介紹自定義view的實現的基本思路和需要掌握的一些基礎知
我的Android進階之旅------>Android自定義View實現帶數字的進度條(NumberProgressBar)
今天在Github上面看到一個來自於 daimajia所寫的關於Android自定義View實現帶數字的進度條(NumberProgressBar)的精彩案例,在這裡分享給大家一起來學習學習!同時感謝daimajia的開源奉獻! 第一步、效果展
Android -- 自定義view實現keep歡迎頁倒計時效果
super onfinish -m use new getc awt ttr alt 1,最近打開keep的app的時候,發現它的歡迎頁面的倒計時效果還不錯,所以打算自己來寫寫,然後就有了這篇文章。 2,還是老規矩,先看一下我們今天實現的效果 相較於我們常見的倒計時
Android高階進階之自定義View
前言 在網上看到一張圖,花了些時間自己嘗試著寫了一個自定義View,裡面涉及到了自定義屬性、自定義View padding屬性的處理、畫筆(Paint)和畫布(Canvas)的使用、解析度適配問題、效能問題、屬性動畫等,覺得還是有些東西值的記錄一下的,效果圖如下: 自定義屬
自定義view實現圓中心顯示文字
自定義view實現:畫一個矩形 然後畫一個圓 再在圓中心顯示文字,效果如下 RectF rect = new RectF(100,100,500,500);//畫一個矩形 Paint mPaint = new Paint(); mPaint.setColor(
自定義view實現抽獎轉盤
------>自定義view類 public class LotteryView extends View implements View.OnClickListener { private Paint mPaint; private
Android自定義view實現圖片選色器
https://www.jb51.net/article/141336.htm 這篇文章主要為大家詳細介紹了Android自定義view實現圖片選色器,具有一定的參考價值,感興趣的小夥伴們可以參考一下 簡介 本文介紹該自定義view的使用及實現的方法,主要實現以下幾個功能: - 選取
自定義View實現圓形進度條跳轉頁面
效果: //首先在values資料夾下建立一個attrs.xml: ?xml version=“1.0” encoding=“utf-8”?> //佈局: <?xml version="1.0" encoding="utf-8"?>