要想實現這個效果,可以充分利用android中paint物件的shader渲染器。通過設定乙個不斷變化的lineargradient,並使用帶有該屬性的paint物件來繪製顯示的文字,首先在onsizechanged()方法中進行一些物件的初始化工作,並根據view的寬高設定乙個lineargradient漸變渲染器。
其中最關鍵的就是使用getpaint()方法獲取當前繪製textview的paint物件,並給這個paint物件設定原生textview沒有的lineargradient屬性,最後,在ondraw()方法中,通過矩陣的方式不斷平移漸變效果,從而在繪製文字時,產生動態的閃動效果,
自定義textview整體**如下:
import android.content.context;
import android.graphics.canvas;
import android.graphics.color;
import android.graphics.lineargradient;
import android.graphics.matrix;
import android.graphics.paint;
import android.graphics.shader;
import android.util.attributeset;
import android.widget.textview;
/** * created by song on 2016/12/27.
*/public class mytextview extends textview
public mytextview(context context, attributeset attrs)
@override
protected void onsizechanged(int w, int h, int oldw, int oldh) , null, shader.tilemode.clamp);
mpaint.setshader(mlineargradient);
mgradientmatrix = new matrix();}}
}@override
protected void ondraw(canvas canvas)
mgradientmatrix.settranslate(mtranslate, 0);
mlineargradient.setlocalmatrix(mgradientmatrix);
postinvalidatedelayed(100);}}
}
Android自定義控制項 自定義屬性
自定義屬性的過程 1.在res values資料夾中建立attrs的xml檔案。2.寫入標籤,定義子標籤attr,放入自定義屬性的名稱。format 可以用 來同時使用 1 reference 參考某一資源id 2 color 顏色值 3 boolean 布林值 4 dimension 尺寸值 帶有...
Android自定義View 自定義元件
自繪控制項也分兩種,自定義元件和自定義容器,自定義元件是繼承view類,自定義容器時繼承viewgrounp 今天主要分析下自定義元件 還是舉個例子來的實際些,假如我們要畫乙個最簡單的textview,首先想到的就是canvas.drawtext 方法,怎麼畫了?還是得一步一步來 1 寫乙個myte...
Android自定義控制項之自定義View 二
效果如下圖 1 自定義ringview繼承view新增其構造方法並建立畫筆 public class ringview extends view protected boolean isrunning false public ringview context context public ring...