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