Android-自定義TextView ,打破常規默認TextView

序:有時候UI設計常常會在界面設計中加入與設計風格相搭配的字體,而作爲APP開發的我們一般都會引用默認的TextView字體進行顯示;今天就來寫一篇自定義字體的文章!

PS:別忘了向UI要ttf字體文件哦

這裏寫圖片描述

1 在工程目錄下創建assets 文件夾,將ttf字體文件copy到該文件下

這裏寫圖片描述

我這裏從電腦字體庫裏面隨便拿了三種字體,楷書、行楷、隸書 (控制器面板,字體就找到系統字體庫了)

2 創建自定義TextView

2.1 自定義字體View繼承TextView 實現三個構造器

   public class KaitiTextView extends TextView {

    public KaitiTextView(Context context) {
        super(context);
    }

    public KaitiTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public KaitiTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
   }

2.2 獲取字體文件構造器中初始化字體

   private void init(Context context)
    {
        Typeface roboto= Typeface.createFromAsset(context.getAssets(),"STKAITI.TTF");
        this.setTypeface(roboto);
    }

2.3 完成自定義TextView

public class KaitiTextView extends TextView {


    public KaitiTextView(Context context) {
        super(context);
        init(context);
    }

    public KaitiTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    public KaitiTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }

    private void init(Context context)
    {
        Typeface roboto= Typeface.createFromAsset(context.getAssets(),"STKAITI.TTF");
        this.setTypeface(roboto);
    }
}

3 在佈局文件中引用自定義的TextView

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ui.MainActivity">

    <com.hengda.smart.blueamer.textview.KaitiTextView
        android:id="@+id/tv_kaiti"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="23sp" />

    <com.hengda.smart.blueamer.textview.XinkaiTextView
        android:id="@+id/tv_xingkai"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="23sp"/>

    <com.hengda.smart.blueamer.textview.KaitiTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="23sp"
        android:text="舉頭望明月"/>

    <com.hengda.smart.blueamer.textview.XinkaiTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="23sp"
        android:text="低頭思故鄉"/>

    <com.hengda.smart.blueamer.textview.LitiTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:textSize="23sp"
        android:text="   人生本就該簡簡單單的做好每時每刻的自己,而不應該把過多的期望,放在未來,因爲時光是最無情的東西。先不說未來的人或事的改變,說不定未來變的是你自己。現在的你,或許頹廢不堪,或許滿懷鬥志,或許忙忙碌碌,或許無所事事。但未來的你會是怎樣,誰知道呢?"/>

</LinearLayout>

4 完成了自定義TextView 的顯示

是不是很簡單呢?

SampleCode:https://github.com/BlueAmberTec/BlueAmerTj_TextView

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