一直感覺自定義view是乙個比較難的點,但是要成為乙個合格的android開發者,自定義view又是必經之路。今天我就帶大家寫乙個簡單的自定義textview。
在自定義view之前先看一下簡單知識點。
1.view的測量。
view的測量模式有三種,精確模式(exactly)如控制項具體寬高的大小;最大值模式(at_most)當指定為wrap_content時,隨view的內容大小變化,不指定模式(unspecified)view想多大就多大。view類預設只支援exactily模式,如果想要自定義view支援wrap_content屬性時,必須重寫onmeasure()方法來指定wrap_content屬性。
如下就是乙個和wifi****類似的閃爍textview;
packagecom.zyl_android.textviewtest;importandroid.content.context;
importandroid.graphics.canvas;
importandroid.graphics.color;
importandroid.graphics.lineargradient;
importandroid.graphics.matrix;
importandroid.graphics.shader;
importimportandroid.text.textpaint;
importandroid.util.attributeset;
/*** created by bibinet on 2017-9-27.
*/public classsecondtextviewextendsprivate intmviewwidith;
privatetextpaintmpaint;
privatelineargradientmlineargradient;
privatematrixmgradientmatrix;
private intmtranslate;
publicsecondtextview(context context)
publicsecondtextview(context context, attributeset attrs)
publicsecondtextview(context context, attributeset attrs,intdefstyleattr)
@override
protected voidonsizechanged(intw,inth,intoldw,intoldh) ,null, shader.tilemode.clamp);
mpaint.setshader(mlineargradient);
mgradientmatrix=newmatrix();}}
}@override
protected voidondraw(canvas canvas)
mgradientmatrix.settranslate(mtranslate,0);
mlineargradient.setlocalmatrix(mgradientmatrix);
postinvalidatedelayed(100);}}
}
Android自定義TextView閃爍文字的效果
要想實現這個效果,可以充分利用android中paint物件的shader渲染器。通過設定乙個不斷變化的lineargradient,並使用帶有該屬性的paint物件來繪製顯示的文字,首先在onsizechanged 方法中進行一些物件的初始化工作,並根據view的寬高設定乙個lineargradi...
自定義控制項textview
自定義控制項名稱 public class cheyouquanlinearlayout extends viewgroup public cheyouquanlinearlayout context context,int horizontalspacing,int verticalspacing...
Android 自定義TextView字型!
兩種方法 方法一 在assets目錄下新建目錄fonts,然後存放自己的字型庫,我這裡是微軟雅黑weiruanyahei.ttf。textview tv typeface tf2 typeface.createfromasset getassets fonts weiruanyahei.ttf tv...