Android繪製(三):Path結合屬性動畫,讓圖示動起來!
Android繪製(一):來用shape繪出想要的圖形吧!
Android繪製(二):來用Path繪出想要的圖形吧!
目錄
- 效果圖
- 前言
- 繪製
- 屬性動畫
- 最後
效果圖
不廢話, 直接上效果圖, 感興趣再看下去. 其實不單單是效果圖演示的, 運用熟練的話各種圖示之間都是可以切換的.
前言
之前的文章也說了, path還是很有潛力的. 但是很遺憾, 我本人不太擅長用貝塞爾曲線畫東西, 所以只能演示一些簡單的變化(手動無奈). 來看看是如何實現的吧.
繪製
想要繪製矩形很簡單啦, 移動到左上角, 然後逆時針畫一圈, 或者順時針畫一圈. 那其實暫停和終止就是兩個矩形, 播放就是兩個三角形. 所以稍微改變下path繪製的位置就解決問題啦.
mLPath.moveTo(left, top);
mLPath.lineTo(left, bottom);
mLPath.lineTo(right, bottom);
mLPath.lineTo(right, top);
mLPath.close();
但是需要弄清繪製區域. 首先要測出設定檢視寬高, 再以此畫一個圓, 然後設定一個內邊距, 然後再繪製圖示. 來張圖:
屬性動畫
其實這裡的屬性動畫的使用部分是最簡單的使用, 就是值變化, 從0到1或者從1到0.
ValueAnimator valueAnimator = ValueAnimator.ofFloat(isPlaying ? 1 : 0, isPlaying ? 0 : 1);
valueAnimator.setDuration(mAnimDuration);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
mProgress = (float) animation.getAnimatedValue();
invalidate();
}
});
然後依據mProgress的值變化圖形. 那要怎麼構建這個變化呢? 注意看我的註釋部分, 變化的值就那幾個, 你將0時的值和1時的值先寫好, 然後推算函式, 就是初中數學的難度, 大概(天知道現在小學生變成什麼樣了)(手動滑稽).
// 暫停間距(0: mMidSpace 1: 0)
float pauseDis = mMidSpace * (1 - mProgress);
// 暫停單條寬(0: mRectWidth / 3 1: mRectWidth / 2)
float pauseWidth = (mRectWidth - pauseDis) / 2;
// 左暫停左上(0: 0 1: mRectWidth / 2)
float pauseLLT = pauseWidth * mProgress;
// 右暫停左上(0: mRectWidth / 3 * 2 1: mRectWidth / 2)
float pauseRLT = pauseWidth + pauseDis;
// 右暫停右上(0: mRectWidth 1: mRectWidth)
float pauseRRT = pauseWidth * 2 + pauseDis;
// 右暫停右下(0: mRectWidth 1: mRectWidth / 2)
float pauseRRB = pauseRRT - pauseWidth * mProgress;
最後
之後實現應該都不太難了, 不管是監聽還是自定義屬性. 那自定義檢視可以看這篇-介面無小事(五):自定義TextView, 屬性動畫可以看這篇-動畫必須有(一): 屬性動畫淺談. 當然了, 要是前一篇沒看的, 建議看下Android繪製(二):來用Path繪出想要的圖形吧!. 喜歡記得點贊哦, 有意見或者建議評論區見, 暗中關注我也是可以的哦~
相關文章
- 【Android 動畫】動畫詳解之屬性動畫(三)Android動畫
- Android 動畫之屬性動畫Android動畫
- android屬性動畫Android動畫
- 【Android 動畫】動畫詳解之屬性動畫(五)Android動畫
- Android 屬性動畫實戰Android動畫
- Android 動畫詳解:屬性動畫、View 動畫和幀動畫Android動畫View
- Android動畫實現繪製原理Android動畫
- 使用joinjs繪製流程圖(三)-Rect物件屬性JS流程圖物件
- Android 顏色漸變 屬性動畫Android動畫
- Android備忘錄《屬性動畫-ValueAnimator》Android動畫
- Android 自定義View:屬性動畫(六)AndroidView動畫
- 屬性動畫動畫
- Android動畫:行雲流水的向量圖示動畫Android動畫
- SVG剪下蒙版屬性clip-path實戰,動態蒙版+動態圖形,動動組合SVG
- 三、動態繫結屬性
- 三談屬性動畫——Keyframe以及ViewPropertyAnimator動畫View
- 如何讓資料動起來?Python動態圖表製作一覽。Python
- 視覺化學習:如何生成簡單動畫讓圖形動起來視覺化動畫
- SVG 動畫 fill 屬性SVG動畫
- SVG restart 動畫屬性SVGREST動畫
- SVG restart動畫屬性SVGREST動畫
- Android原生繪圖之一起畫個表Android繪圖
- Flutter 中如何繪製動畫Flutter動畫
- canvas繪製動畫的技巧Canvas動畫
- 初識屬性動畫——使用Animator建立動畫動畫
- 一句話讓圖片動起來,蘋果發力大模型動畫生成,可直接編輯結果蘋果大模型動畫
- CSS——讓“盒子”動起來:① 浮動CSS
- 屬性動畫與差值器動畫
- 如何繪製三維動畫設計和製作場景更好動畫
- 使用joinjs繪製流程圖(四)-Link物件屬性JS流程圖物件
- 使用canvas繪製圓弧動畫Canvas動畫
- [Android]多層波紋擴散動畫——自定義View繪製Android動畫View
- [-Flutter 自定義元件-] 蛛網圖+繪製+動畫實踐Flutter元件動畫
- 【 HTML5畫布漂浮分子 讓化學動起來!】HTML
- Android原生繪圖之讓你瞭解View的運動Android繪圖View
- 動畫函式的繪製及自定義動畫函式動畫函式
- HenCoder Android 自定義 View 1-6: 屬性動畫(上手篇)AndroidView動畫
- SVG accumulate和additive動畫屬性SVG動畫