Android UI效果之繪圖篇(四)
上一篇博文說(shuō)到了Shader的五個(gè)子類
- BitmapShader
- LinearGradient
- RadialGradient
- SweepGradient
- ComposeShader
其中BitmapShader和LinearGradient已經(jīng)做了說(shuō)明,今天就把剩余的三個(gè)Shader補(bǔ)充一下
3. RadialGradient
先看下構(gòu)造方法
/** @param centerX 中心X坐標(biāo) @param centerY 中心Y坐標(biāo) @param radius 半徑 @param centerColor 開(kāi)始顏色 @param edgeColor 結(jié)束顏色 @param tileMode The Shader tiling mode */ public RadialGradient(float centerX, float centerY, float radius,int centerColor, int edgeColor, @NonNull TileMode tileMode) public RadialGradient(float centerX, float centerY, float radius,@NonNull int colors[], @Nullable float stops[], @NonNull TileMode tileMode)
第一個(gè)構(gòu)造方法已經(jīng)進(jìn)行了文檔說(shuō)明,比較簡(jiǎn)單,而第二個(gè)構(gòu)造方法和LinearGradient同理,就不再贅述,使用方法也基本類似,這里直接看下效果即可
RadialGradient rg = new RadialGradient(canvas.getWidth()/2, canvas.getHeight()/2, 200, 0xffff0000, 0xff0000ff, Shader.TileMode.[CLAMP|REPEAT |MIRROR]);
paint.setShader(rg);
canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), paint);
① CLAMP

② REPEAT

③ MIRROR

1、SweepGradient
/** * * @param cx 中心X坐標(biāo) * @param cy 中心Y坐標(biāo) * @param color0 開(kāi)始顏色 * @param color1 結(jié)束顏色 */ public SweepGradient(float cx, float cy, int color0, int color1)

第一個(gè)構(gòu)造方法比較簡(jiǎn)單,沒(méi)什么好說(shuō)的,效果的話類似于做煎餅皮,展開(kāi)選擇360度。主要看第二個(gè)構(gòu)造方法
public SweepGradient(float cx, float cy,int colors[], float positions[])
cx、cy沒(méi)什么好說(shuō)的,中心點(diǎn)坐標(biāo),colors顏色數(shù)組,主要是positions,positions中每個(gè)item的取值范圍在0f-1f之間,對(duì)于colors中相應(yīng)顏色在圖形中的位置
int[] colors = {0xffff0000, 0xff00ff00, 0xffffff00, 0xffffffff,0xff000000};
float[] positions = {0f,0.25f, 0.5f, 0.75f, 1f};
SweepGradient rg = new SweepGradient(canvas.getWidth() / 2, canvas.getHeight() / 2, colors, positions);
paint.setShader(rg);
canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), paint);

ComposeShader
ComposeShader(Shader shaderA, Shader shaderB, Xfermode mode) ComposeShader(Shader shaderA, Shader shaderB, PorterDuff.Mode mode)
ComposeShader,混合Shader,看到構(gòu)造方法,大家應(yīng)該就已經(jīng)會(huì)用ComposeShader,其實(shí)就是對(duì)兩個(gè)shader進(jìn)行取并集交集操作,遺忘了的同學(xué)可以翻看下上一篇文章,這里就不再演示了。
相關(guān)文章
Android開(kāi)發(fā)中關(guān)于組件導(dǎo)出的風(fēng)險(xiǎn)及防范
這篇文章主要介紹了Android開(kāi)發(fā)中關(guān)于組件導(dǎo)出的風(fēng)險(xiǎn)及防范,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
Android 實(shí)現(xiàn)高斯模糊效果且兼容低版本
這篇文章主要介紹了Android 實(shí)現(xiàn)高斯模糊效果且兼容低版本的相關(guān)資料,本文圖文并茂介紹的非常詳細(xì),需要的朋友可以參考下2016-09-09
使用flutter的showModalBottomSheet遇到的坑及解決
這篇文章主要介紹了使用flutter的showModalBottomSheet遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
Android.mk引入第三方j(luò)ar包和so庫(kù)文件的方法
這篇文章主要介紹了Android.mk引入第三方j(luò)ar包和so庫(kù)文件的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
淺析Android Service中實(shí)現(xiàn)彈出對(duì)話框的坑
這篇文章主要介紹了Android Service中實(shí)現(xiàn)彈出對(duì)話框的坑,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Android實(shí)現(xiàn)QQ手機(jī)管家懸浮小火箭效果
這篇文章主要介紹了Android實(shí)現(xiàn)QQ手機(jī)管家懸浮小火箭效果,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Android編程使WebView支持HTML5 Video全屏播放的解決方法
這篇文章主要介紹了Android編程使WebView支持HTML5 Video全屏播放的解決方法,較為詳細(xì)的分析了全屏播放所涉及的相關(guān)技巧,并給出了完整代碼下載地址供讀者參考,需要的朋友可以參考下2015-10-10
Android 設(shè)置主題實(shí)現(xiàn)點(diǎn)擊波紋效果的示例
本篇文章主要介紹了Android 設(shè)置主題實(shí)現(xiàn)點(diǎn)擊波紋效果的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11

