android中使用shader實現漸變效果

2021-06-06 05:29:48 字數 1141 閱讀 5955

android中可以使用多種shader對影象進行渲染,常見有下:

bitmapshader點陣圖

lineargradient線性

radialgradient光束

sweepgradient梯度

composeshader混合

基本步驟是:

1.首先建立好要設定的渲染物件shader

2.接著使用paint物件的setshader方法傳入該shader物件(然後重新整理頁面,觸發ondraw方法則可使用新的渲染物件畫圖了!!)

例項關鍵**:

bm = bitmapfactory.decoderesource(getresources(), r.drawable.girl);

paint = new paint();

colors = new int;

bitmapshader = new bitmapshader(bm, tilemode.repeat, tilemode.mirror);

——橫向使用重複模式,縱向使用映象模式繪製bm點陣圖至整個螢幕

lineargradient = new lineargradient(0, 0, 100, 100, colors, null,  tilemode.repeat);

——從(0,0)至(100,100)的位置設定color陣列中顏色的線性漸變,其他剩餘空間為此空間的重複模式。

radialgradient = new radialgradient(100, 100, 80, colors, null,  tilemode.repeat);

——以(100,100)為圓心,80為半徑,以color陣列中顏色繪製重複模式的光束渲染

sweepgradient =  new sweepgradient(100, 100, colors, null);

——以(100,100)的位置為中心,以color陣列中顏色繪製梯度渲染

composeshader = new composeshader(lineargradient, radialgradient,porterduff.mode.darken);

——混合以上多種渲染而成

相應結果見附件。

paint.setshader(composeshader);

postinvalidate();

Android中使用全屏

在開發android研發時,最開始一般都會有個全屏顯示的閃屏,下面提供實現全屏的兩種方法 1 通過 實現 去掉標題欄 this.requestwindowfeature window.feature no title 全屏顯示 this.getwindow setflags windowmanage...

Android中使用AsyncTask實現非同步載入

使用該類可以在子執行緒中更新ui,具體表現在和handler相比,其封裝和簡化了非同步操作的過程 一般需要重寫乙個類來繼承和實現asynctask類,如public myasynctask extends asynctask,三個引數一次表示 1,params 啟動任務時輸入引數的型別 2,prog...

Android中使用FFmpeg(一)

1 編譯環境 2 準備工作 3 編譯ffmpeg 修改configure檔案 slibname with major slibname libmajor lib install extra cmd ranlib libdir libname slib install name slibname wi...