Android文本樣式(二)

繼續就android的文本樣式進行分析:

10.MaskFilterSpan

MaskFilterSpan,濾鏡樣式,只有一個構造函數:
MaskFilterSpan(MaskFilter filter):參數filter,濾鏡樣式。
說明:
在android系統裏,MaskFilter提供了兩個子類,BlurMaskFilter和EmbossMaskFilter,分別用來製作模糊效果和浮雕效果。
效果:

11.QuoteSpan

QuoteSpan,引用樣式,在文本左側添加一條表示引用的豎線,該類有3個構造函數:
QuoteSpan():無參構造,默認顏色爲藍色。
QuoteSpan(int color):參數color,顏色值。
QuoteSpan(Parcel src):包含顏色值信息的包裝類。使用:
Parcel p = Parcel.obtain();
p.writeInt(Color.BLACK);
p.setDataPosition(0);
QuoteSpan qs = new QuoteSpan(p);
效果:

12.RasterizerSpan

RasterizerSpan,字面義爲光柵化,實際效果不明顯,待完善。一個構造函數:
RasterizerSpan(Rasterizer r):Rasterizer只有一個系統定義了的子類LayerRasterizer

13.RelativeSizeSpan

RelativeSizeSpan,相對大小,指相對於文本設定的大小的相對比例,如果沒有設定則採用系統默認值。該類有兩個構造函數:
RelativeSizeSpan(float proportion):參數proportion,比例值。如果文字設定大小爲A,則顯示出來的大小爲A×proportion。
RelativeSizeSpan(Parcel src):參數src,包含了比例值信息的包裝類。使用:
Parcel p = Parcel.obtain();
p.writeFloat(2.5f);
p.setDataPosition(0);
RelativeSizeSpan rss = new RelativeSizeSpan(p);
效果:

14.ScaleXSpan

ScaleXSpan,橫向縮放樣式,將字體按比例進行橫向縮放。構造函數:
ScaleXSpan(float proportion):參數proportion,縮放比例。如果字體設置的大小爲A,則實際顯示爲A×proportion。
ScaleXSpan(Parcel src):參數src,包含了縮放比例信息的包裝類。使用:
Parcel p = Parcel.obtain();
p.writeFloat(2.5f);
p.setDataPosition(0);
ScaleXSpan rss = new ScaleXSpan(p);
效果:

15.StrikethroughSpan

StrikethroughSpan,刪除線樣式。該類有兩個構造函數:
StrikethroughSpan()和SrickkethroughSapn(Parcel src)。但有參數的構造函數並未對src參數做處理,
public StrikethroughSpan(Parcel src) {
}
因此這兩個構造函數完全是同樣的效果。

16.StyleSpan

StyleSpan,主要由正常、粗體、斜體和同時加粗傾斜四種樣式,常量值定義在Typeface類中。構造函數:
StyleSpan(int style):參數style,定義在Typeface中的常量。
StyleSpan(Parcel src):參數src,包含字體信息的包裝類,用法:
Parcel p = Parcel.obtain();
p.writeInt(Typeface.BOLD_ITALIC);
p.setDataPosition(0);
StyleSpan ss = new StyleSpan(p);
效果:

17.SubscriptSpan

SubscriptSpan,腳註樣式,比如化學式的常見寫法,當然,還可以對腳註的文字做一定的縮放。構造函數:
SubscriptSpan():無參構造。
SubscriptSpan(Parcel src):一參構造,參數src並未起任何作用,源碼中爲:
public SuperscriptSpan(Parcel src) {
}
效果:

18.SuperscriptSpan

SuperscriptSpan,上標樣式,比如數學上的次方運算,當然,還可以對上標文字進行縮放。構造函數:
SuperscriptSpan():無參構造。
SuperscriptSpan(Parcel src):一參構造,參數src並未起任何作用,源碼中爲:
public SuperscriptSpan(Parcel src) {
}
效果:

19.TabStopSpan

TabStopSpan.Standard,製表位偏移樣式,距離每行的leading margin的偏移量,據測試在首行加入製表符時才產生效果。構造函數:
TabStopSpan.Standard(int where):參數where,偏移量。
效果:

20.TextAppearanceSpan

TextAppearanceSpan,使用style文件來定義文本樣式,該類有4個構造函數:
TextAppearanceSpan(Context context, int appearance):參數context,傳入的上下文,參數appearance,引用的樣式表,如R.style.my_style。
TextAppearanceSpan(Context context, int appearance, int colorList):參數context,使用的上下文,參數appearance,引用的樣式表,如R.style.my_style,參數colorList,使用方式未知,如果設置爲小於0,則參數將不產生效果。
TextAppearanceSpan(String family, int style, int size,ColorStateList color, ColorStateList linkColor):參數family,字體,僅支持系統自帶的三種字體,MONOSPACE、SERIF和SANS,參數style,TypeFace中定義的字體樣式,BOLD、ITALIC等,參數size,字體大小,參數color,字體顏色,參數linkColor,使用方式未知。TextAppearanceSpan(Parcel src):參數src,含有樣式信息的包裝類,樣式信息參照5參構造。使用:
Parcel p = Parcel.obtain();
p.writeString(\"SERIF\");
p.writeInt(Typeface.BOLD_ITALIC);
p.writeInt(10);
try {
    ColorStateList colorlist = ColorStateList.createFromXml(ctx.getResources(),ctx.getResources().getXml(R.drawable.parcelcolorlist));
    p.writeInt(1);
    colorlist.writeToParcel(p, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
    p.writeInt(1);
    colorlist.writeToParcel(p, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
} catch (Exception e) {
    e.printStackTrace();
}
p.setDataPosition(0);
TextAppearanceSpan tas = new TextAppearanceSpan(p);
注:在這個設置中style似乎並未起到作用,另外關於這個類的colorList和linkColor參數的使用尚不明瞭,有待解答。
效果:

21.TypefaceSpan

TypefaceSpan,字體樣式,可以設置不同的字體,比如系統自帶的SANS_SERIF、MONOSPACE和SERIF。構造函數:
TypefaceSpan(String family):參數family,字體的值,以字符串表示。
TypefaceSpan(Parcel src): 參數src,包含字體family信息的包裝類,使用如下:
Parcel p = Parcel.obtain();
p.writeString(\"SERIF\");
p.setDataPosition(0);
TypefaceSpan ts = new TypefaceSpan(p);
 效果:

22.UnderlineSpan

UnderlineSpan,下劃線樣式,給一段文字加上下劃線。構造函數:
UnderlineSpan(): 無參構造。
UnderlineSpan(Parcel src):一參構造, 與無參構造效果相同,構造中未對src做處理。源碼:
public UnderlineSpan(Parcel src) {
}
效果:

23.URLSpan

URLSpan,可以打開一個鏈接。兩個構造函數:
URLSpan(String url):參數url,鏈接地址。
URLSpan(Parcel src):參數src,包含鏈接地址信息的包裝類,使用如下:
Parcel p = Parcel.obtain();
p.writeString("http://www.sina.com.cn");
p.setDataPosition(0);
URLSpan us = new URLSpan(p);
效果:

四、標註:

以上效果均在android2.3中測試,以後新增的幾個類並未做說明,上面的類中還有幾處使用的不甚明瞭的地方,希望能夠儘快的完善。
以上所有的效果均寫在了一個APK裏,源碼已上傳至Android文本樣式

轉載地址:http://blog.csdn.net/lixin84915/article/details/8110667

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章