
簡(jiǎn)介
RoundCornerTextView 繼承自TextView。它擁有TextView的方法,并且進(jìn)行了功能擴(kuò)展。RoundCornerTextView 能夠輕松的實(shí)現(xiàn)原本需要編寫(xiě)Shape 設(shè)置背景等繁瑣操作才能實(shí)現(xiàn)的控件效果。因此,使用了RoundCornerTextView 之后能夠使你不用頻繁的創(chuàng)建Shape 或?qū)雸D片,節(jié)省了大量?jī)?nèi)存。
主要功能
通過(guò)組合RoundCornerTextView 的功能,能夠創(chuàng)造出上面的效果圖中的幾種基本效果。當(dāng)然,當(dāng)你腦洞大開(kāi)時(shí)能夠創(chuàng)造更多有趣而奇怪的效果。下面將介紹RoundCornerTextView 的一些特性。
使用前準(zhǔn)備
你可以在xml文件中直接設(shè)置RoundCornerTextView 的這些有趣的特有屬性。當(dāng)然,在此之前,你必須確保已經(jīng)把RoundCornerTextView的<declare-styleable> 的自定義屬性加入到你項(xiàng)目中的attrs.xml中(點(diǎn)擊這里尋找RoundCornerTextView的<declare-styleable>)。然后,你需要在布局文件的開(kāi)頭申明自定義命名空間xmlns:app="http://schemas.android.com/apk/res-auto"?,F(xiàn)在,可以開(kāi)始使用RoundCornerTextView 進(jìn)行創(chuàng)作了。
屬性說(shuō)明
<RoundCornerTextView
android:layout_width="50dp"
android:layout_height="50dp"
app:corner="25dp" //設(shè)置圓角。會(huì)同時(shí)作用于填充和邊框(如果邊框存在的話)。如果要設(shè)置為圓形,只需要把該值設(shè)置為寬或長(zhǎng)的1/2即可。
app:solid="@color/red" //設(shè)置填充顏色
app:stroke_color="@color/black" //設(shè)置邊框顏色
app:stroke_width="2dp" //設(shè)置邊框的寬度。
app:state_drawable="@drawable/vector_emoji_1" //放置一個(gè)drawable在背景上。默認(rèn)居中顯示。
app:state_drawable_mode="center" //設(shè)置drawable的顯示模式。可選值如下:
// left、top、right、bottom、center(默認(rèn)值)、leftTop、rightTop、leftBottom、rightBottom、fill(充滿整個(gè)RoundCornerTextView)
app:isShowState="true" // boolean類型。是否顯示drawable。這在控制狀態(tài)時(shí)十分有用。
app:text_stroke="true" // boolean類型。是否啟用文字描邊模式。注意,啟用這個(gè)模式之后通過(guò)setTextColor()設(shè)置的顏色將會(huì)被覆蓋。
app:text_stroke_color="@color/black" // 文字的描邊顏色。默認(rèn)為Color.BLACK。
app:text_stroke_width="1dp" // 文字描邊的寬度。
app:text_fill_color="@color/blue" // 文字填充的顏色。默認(rèn)為Color.BLACK。
app:autoAdjust="true" // boolean類型。是否啟用自動(dòng)調(diào)整功能。具體調(diào)整什么,需要在Java中為RoundCornerTextView實(shí)現(xiàn)一個(gè)TextAdjuster。
//當(dāng)你啟用這個(gè)功能而沒(méi)有實(shí)現(xiàn)自己的TextAdjuster時(shí),RoundCornerTextView會(huì)啟用默認(rèn)的TextAdjuster。它會(huì)按照一定的規(guī)則調(diào)整文字大小。
/>
以上這些屬性,你均可以在Java中進(jìn)行動(dòng)態(tài)的設(shè)置。同時(shí)也能夠獲得它們的值。例如:
mRoundCornerTextView.setCorner(10);
mRoundCornerTextView.getCorner();
TextAdjuster
如果你實(shí)現(xiàn)了TextAdjuster ,它將會(huì)在繪制文字之前被調(diào)用。因此,你可以根據(jù)需求在文字繪制前進(jìn)行一些操作,例如默認(rèn)的字體大小調(diào)整。如果你希望停止這種變化,只需要調(diào)用setTextAdjuster(null)。
mRoundCornerTextView.setTextAdjuster(v->{
// 在這里進(jìn)行一些操作,它們將在文字開(kāi)始被繪制的前一刻被執(zhí)行
});
鏈接
點(diǎn)擊這里查看RoundCornerTextView的源碼。
如果你覺(jué)得還不錯(cuò)的話,那么感謝你關(guān)注我哦,或者給我點(diǎn)個(gè)贊哦。