震驚!這個(gè)控件絕對(duì)值得收藏。輕松實(shí)現(xiàn)圓角、文字描邊、狀態(tài)指示等效果

效果圖

簡(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è)贊哦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容