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...