📲 點擊連接,下載體驗 Demohtml
嘿,開發者您好,歡迎使用 SuperTextView !感謝您及數萬位 Android 開發者的信賴 😘 android
在過去 1 年半的時間裏,SuperTextView 通過了屢次迭代和上百次的 commit,已經被普遍應用於各種型商業 App 中,經受住了千萬級日活的考驗。相信 SuperTextView 也能爲您帶來開發體驗上的提高,以及協助您構建或改進出更加精美的應用。git
若是您是初次使用 SuperTextView,那麼這篇文檔將會向您詳細的講解 SuperTextView 的每一項功能,以便您能快速上手。
若是您是 SuperTextView 老粉,經過這篇文檔您也許會發現一些以前不曾涉及到便捷功能。 github
在你的build.gradle中加入:算法
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.1.4'
}
複製代碼
項目地址canvas
注:關注本項目以及時得到最新版本信息。網絡
對於 SuperTextView 說支持的絕大部分酷炫的效果,開發者都可以經過在 xml 佈局文件中,經過簡單的屬性配置就可以實現。而且,藉助 AndroidStudio 的 Preview 插件,能夠實時的預覽這些效果。 app
如下是目前 SuperTextView 所支持的全部屬性。框架
<SuperTextView
//設置圓角。會同時做用於填充和邊框(若是邊框存在的話)。
//若是要設置爲圓形,只須要把該值設置爲寬或長的1/2便可。
app:stv_corner="25dp"
//設置左上角圓角
app:stv_left_top_corner="true"
//設置右上角圓角
app:stv_right_top_corner="true"
//設置左下角圓角
app:stv_left_bottom_corner="true"
//設置右下角圓角
app:stv_right_bottom_corner="true"
//設置填充顏色
app:stv_solid="@color/red"
//設置邊框顏色
app:stv_stroke_color="@color/black"
//設置邊框的寬度。
app:stv_stroke_width="2dp"
//放置一個drawable在背景層上。默認居中顯示。
//而且默認大小爲SuperTextView的一半。
app:stv_state_drawable="@drawable/emoji"
//設置drawable的顯示模式。可選值以下:
// left、top、right、bottom、center(默認值)、
//leftTop、rightTop、leftBottom、rightBottom、
//fill(充滿整個SuperTextView,此時會使設置drawable的大小失效)
app:stv_state_drawable_mode="center"
//設置drawable的height
app:stv_state_drawable_height="30dp"
//設置drawable的width
app:stv_state_drawable_width="30dp"
//設置drawble相對於基礎位置左邊的距離
app:stv_state_drawable_padding_left="10dp"
//設置drawble相對於基礎位置上邊的距離
app:stv_state_drawable_padding_top="10dp"
// boolean類型。是否顯示drawable。
//若是你想要設置的drawable顯示出來,必須設置爲true。
//當不想讓它顯示時,再設置爲false便可。
app:stv_isShowState="true"
// 是否將state_drawable做爲背景圖
// 將state_drawable做爲背景圖可讓SuperTextView具有展現圖片的能力
// 經過調節corner、stroke等屬性,能夠給圖片設置圓角、邊框等
app:stv_drawableAsBackground="true"
//放置一個drawable在背景層上。默認居中顯示。
//而且默認大小爲SuperTextView的一半。
app:stv_state_drawable2="@drawable/emoji"
//與state_drawable相似
app:stv_state_drawable2_mode="center"
//與state_drawable_height相似
app:stv_state_drawable2_height="30dp"
//與state_drawable_width相似
app:stv_state_drawable2_width="30dp"
//與state_drawable_padding_left相似
app:stv_state_drawable2_padding_left="10dp"
//與state_drawable_padding_top相似
app:stv_state_drawable2_padding_top="10dp"
//與isShowState相似
app:stv_isShow2State="true"
# 修改 drawable 的顏色
app:stv_state_drawable_tint="@color/gray"
# 修改 drawable2 的顏色
app:stv_state_drawable2_tint="@color/red"
# 修改 drawable 的旋轉角度
app:stv_state_drawable_rotate="90"
# 修改 drawable2 的旋轉角度
app:stv_state_drawable2_rotate="90"
//是否開啓文字描邊功能。
//注意,啓用這個模式以後經過setTextColor()設置的顏色將會被覆蓋。
//你須要經過text_fill_color來設置文字的顏色。
app:stv_text_stroke="true"
// 文字的描邊顏色。默認爲Color.BLACK。
app:stv_text_stroke_color="@color/black"
// 文字描邊的寬度。
app:stv_text_stroke_width="1dp"
// 文字填充的顏色。默認爲Color.BLACK。
app:stv_text_fill_color="@color/blue"
// boolean類型。是否啓用Adjuster功能。
//具體幹什麼,須要在Java中爲SuperTextView實現一個Adjuster。
//當你啓用這個功能而沒有實現本身的Adjuster時,
//SuperTextView會啓用默認的Adjuster。它會按照必定的規則調整文字大小。
app:stv_autoAdjust="true"
// 必須設置爲true才能啓用漸變功能。這意味着你能夠靈活的控制這一功能。
app:stv_shaderEnable="true"
// 設置起始顏色。
app:stv_shaderStartColor="@color/main_blue"
// 設置結尾顏色。
app:stv_shaderEndColor="@color/pink"
// 設置漸變模式。如上圖可見,一共支持4中模式:
// topTopBottom, bottomToTop, leftToRight, rightToLeft
app:stv_shaderMode="rightToLeft"
// 設置按壓時的背景色
app:stv_pressBgColor="@color/red"
// 設置按壓時的文字顏色
app:stv_pressTextColor="@color/white"
// 修改 drawable 的顏色
app:stv_state_drawable_tint="@color/gray"
// 修改 drawable2 的顏色
app:stv_state_drawable2_tint="@color/red"
// 修改 drawable 的旋轉角度
app:stv_state_drawable_rotate="90"
// 修改 drawable2 的旋轉角度
app:stv_state_drawable2_rotate="90"
// 是否啓用漸變色文字
app:stv_textShaderEnable="true"
// 設置文字的起始漸變色
app:stv_textShaderStartColor="@color/red"
// 設置文字的結束漸變色
app:stv_textShaderEndColor="@color/yellow"
// 設置文字的漸變的模式
// leftToRight:左 -> 右
// rightToLeft:右 -> 左
// topToBottom:上 -> 下
// bottomToTop:下 -> 上
app:stv_textShaderMode="leftToRight"
/>
複製代碼
點擊此處,查看詳細的《SuperTextView Api文檔》
該部分將會詳細講解目前 SuperTextView 所支持功能,以及如何使用這些能力來創造使人驚歎的應用。
在 SuperTextView 中,將繪製內容劃分爲了 4 個層級。瞭解 SuperTextView 中的層級設計,將會有助於開發者更加合理的組織 UI 邏輯。
1.Background層:View的 Background
背景層。
2.背景層:即經過 app:stv_solid
設置的純色背景層。在 SuperTextView
中一般將該層視作背景層,而不是View的 Background
。就是說,當咱們設置了背景層色後,VIew 自己的 Background
將會被覆蓋。
3.Drawable層:SuperTextView
的 Drawable 所在的層級。若是你但願經過 SuperTextView
來展現圖片,就是在該層展現。從 v2.0 版本開始,SuperTextView 的 1 號 Drawable 能夠被支持用於做爲 SuperTextView 的背景圖片,這意味着當開發者這麼作時,經過 solid 屬性設置的背景顏色將會被覆蓋。
4.文字層:即繪製文字的層級。
理解層級的概念,對於後面將要講述的 Adjuster 頗有幫助。
圓角化功能是 SuperTextView 最基本的功能,你能夠在 xml 佈局文件或者 Java 中進行設置。
在xml中:
app:stv_corner="25dp"
複製代碼
在Java中:
stv.setCorner(25);
複製代碼
圓角化的設置僅對 SuperTextView 的【背景層】,或者將 Drawble
用於展現圖片(即:配置了app:stv_drawableAsBackground="true"
)時有效。
若是你須要一個圓形的效果,只須要將corner
值設置爲控件最大邊長度的一半,即:corner = layout_width / 2
。好比:
android:layout_width="80dp"
android:layout_height="80dp"
app:stv_corner="40dp"
app:stv_solid="#008673"
複製代碼
將一張普通的圖片圓角化:
app:stv_corner="15dp"
app:stv_state_drawable="@drawable/avatar1"
app:stv_drawableAsBackground="true"
複製代碼
若是你但願實現圓形頭像,或者圓角背景圖的效果,那最適合不過了。
默認狀況下,對 SuperTextView 設置 corner
會對控件的4個角都有效。固然,也能夠單獨指定那一個角纔是真正須要圓角化的。
在 xml
//設置左上角圓角
app:stv_left_top_corner="true"
//設置右上角圓角
app:stv_right_top_corner="true"
//設置左下角圓角
app:stv_left_bottom_corner="true"
//設置右下角圓角
app:stv_right_bottom_corner="true"
複製代碼
在 Java 中
//設置左上角圓角
stv.setLeftTopCornerEnable( boolean);
// 設置左下角圓角
stv.setLeftBottomCornerEnable( boolean);
//設置右上角圓角
stv.setRightTopCornerEnable(boolean);
//設置右下角圓角
stv.setRightBottomCornerEnable(boolean);
複製代碼
須要注意的時候,一旦指定了任何一個圓角,app:stv_corner
將再也不對4個角都有效了,你須要一個一個的去設置。
SuperTextView 能夠經過簡單的配置給控件加上邊框,實際開發中十分的便捷。
app:stv_solid="#78C3ED"
app:stv_stroke_color="#5166ED"
app:stv_stroke_width="5dp"
複製代碼
只須要設置 app:stv_stroke_width
大於0即開啓了邊框功能,若是沒有設置 app:stv_stroke_color
,會有默認的黑色邊框。邊框的圓角化也會受到 corner
屬性的影響。
邊框的效果一樣可以在展現圖片的時候有效。
使用 SuperTextView 可以很輕鬆的實現文字描邊的功能。
# 開啓文字描邊功能
app:stv_text_stroke="true"
# 設置文字填充顏色
app:stv_text_fill_color="@color/white"
# 設置文字描邊顏色
app:stv_text_stroke_color="#461B50"
# 設置文字描邊寬度
app:stv_text_stroke_width="1dp"
複製代碼
⚠️ 注意,開啓文字描邊的功能後,文字顏色只可以經過 app:stv_text_fill_color
來設置,不要使用 android:textColor
!
若是想要實現空心文字的效果,只須要將 app:stv_text_fill_color
設置爲透明色,或者與背景色相同便可。
SuperTextView 自帶狀態圖功能。經過 Drawable、Drawable2 兩個 Drawable 坑位,可以展現兩個狀態圖。
不一樣於系統的原生 TextView 的 Drawable,SuperTextView 的 Drawable 可以精確的控制其位置和大小。
# boolean類型。是否開啓狀態圖1的功能。
app:stv_isShowState="true"
# 設置狀態圖1的圖片
app:stv_state_drawable="@drawable/emoji"
# 設置狀態圖1的顯示模式,決定了狀態圖1的基礎位置
# 可選值以下:
# left、top、right、bottom、center(默認值)、
# leftTop、rightTop、leftBottom、rightBottom、
# fill(充滿整個SuperTextView,此時會使設置drawable的大小失效)
app:stv_state_drawable_mode="center"
# 設置狀態圖1的height
app:stv_state_drawable_height="30dp"
# 設置狀態圖1的width
app:stv_state_drawable_width="30dp"
# 設置狀態圖1相對於基礎位置的左邊的距離
app:stv_state_drawable_padding_left="10dp"
# 設置狀態圖1相對於基礎位置上邊的距離
app:stv_state_drawable_padding_top="10dp"
# boolean類型。是否開啓狀態圖2的功能。
app:stv_isShow2State="true"
# 設置狀態圖2的圖片
app:stv_state_drawable2="@drawable/emoji"
# 設置狀態圖2的顯示模式,決定了狀態圖2的基礎位置
# 可選值以下:
# left、top、right、bottom、center(默認值)、
# leftTop、rightTop、leftBottom、rightBottom、
# fill(充滿整個SuperTextView,此時會使設置drawable的大小失效)
app:stv_state_drawable2_mode="center"
# 設置狀態圖2的height
app:stv_state_drawable2_height="30dp"
# 設置狀態圖2的width
app:stv_state_drawable2_width="30dp"
# 設置狀態圖2相對於基礎位置的左邊的距離
app:stv_state_drawable2_padding_left="10dp"
# 設置狀態圖2相對於基礎位置上邊的距離
app:stv_state_drawable2_padding_top="10dp"
複製代碼
上圖是一些使用一個狀態圖實現的功能,能夠看到,你能夠輕鬆準確的控制狀態圖的位置和大小。
如今,來看看兩個狀態圖可以幹什麼。
示例一
<com.coorchice.library.SuperTextView
android:layout_width="100dp"
android:layout_height="100dp"
...
app:stv_corner="50dp"
app:stv_state_drawable="@drawable/avatar1"
# 將狀態圖1做爲控件背景,以展現圖片
app:stv_drawableAsBackground="true"
# state_drawable2的配置由此開始
app:stv_isShowState2="true"
app:stv_state_drawable2="@drawable/recousers"
app:stv_state_drawable2_mode="rightTop"
app:stv_state_drawable2_height="20dp"
app:stv_state_drawable2_width="20dp"
...
/>
複製代碼
示例二
<com.coorchice.library.SuperTextView
android:layout_width="100dp"
android:layout_height="100dp"
...
# 背景圖
android:background="@drawable/avatar7"
# drawable1的配置由此開始
app:stv_isShowState="true"
app:stv_state_drawable="@drawable/triangle"
app:stv_state_drawable_mode="leftTop"
app:stv_state_drawable_width="20dp"
app:stv_state_drawable_height="20dp"
# state_drawable2的配置由此開始
app:stv_isShowState2="true"
app:stv_state_drawable2="@drawable/recousers"
app:stv_state_drawable2_mode="rightTop"
app:stv_state_drawable2_height="20dp"
app:stv_state_drawable2_width="20dp"
...
/>
複製代碼
如你所見,使用 SuperTextView 來處理此類 ui 需求實在是使人愉快,開發者今後能夠沒必要再爲這種效果而費腦的想該如何經過一個個控件疊加嵌套實現了。
SuperTextView 支持經過配置簡單的屬性實現漸變色效果。
# 必須設置爲true才能啓用漸變功能。這意味着你能夠靈活的控制這一功能。
app:stv_shaderEnable="true"
# 設置起始顏色
app:stv_shaderStartColor="@color/main_blue"
# 設置結尾顏色。
app:stv_shaderEndColor="@color/pink"
# 設置漸變模式。如上圖可見,一共支持4中模式:
# topTopBottom, bottomToTop, leftToRight, rightToLeft
app:stv_shaderMode="rightToLeft"
複製代碼
這些屬性也支持在 Java 中設置。
// 開啓漸變色功能
stv.setShaderEnable(true);
// 設置起始顏色
stv.setShaderStartColor(Color.BLUE);
// 設置結束顏色
stv.setShaderEndColor(Color.RED);
// 設置模式
stv.setShaderMode(SuperTextView.ShaderMode.LEFT_TO_RIGHT);
複製代碼
漸變模式共有4種:
public static enum ShaderMode {
/**
* 從上到下
*/
TOP_TO_BOTTOM(0),
/**
* 從下到上
*/
BOTTOM_TO_TOP(1),
/**
* 從左到右
*/
LEFT_TO_RIGHT(2),
/**
* 從右到左
*/
RIGHT_TO_LEFT(3);
}
複製代碼
SuperTextView 可以快速的支持按壓變色效果,就像下圖同樣,文字和背景色都支持。
只需配置簡單的屬性:
# 設置按壓時的背景色
app:stv_pressBgColor="@color/red"
# 設置按壓時的文字顏色
app:stv_pressTextColor="@color/white"
複製代碼
在Java中:
// 設置按壓背景變色
stv.setPressBgColor(Color.RED);
// 取消按壓文字變色
stv.setPressTextColor(-99);
複製代碼
PressBgColor
爲透明色,Color.TRANSPARENT
。PressTextColor
爲-99。前面有提到過,SuperTextView 能夠經過狀態圖1變成一個 ImageView
。在設置好狀態圖1後,只需開啓圖片展現功能便可。
<com.coorchice.library.SuperTextView
...
app:stv_state_drawable="@drawable/avatar1"
# 開啓圖片展現功能
app:stv_drawableAsBackground="true"
...
/>
複製代碼
須要注意的是,當將狀態圖1用於展現圖片後,狀態圖1將再也不具有狀態圖的功能,直到你關閉了圖片展現功能,經過 stv.setDrawableAsBackground(false)
。
stv.setUrlImage(url);
複製代碼
在 SuperTextView 中,經過上面簡單的一句便可將 SuperTextView 做爲一個能夠展現網絡圖片的ImageView。
調用上面的方法會默認開啓 SuperTextView 的圖片展現功能,所以,此時狀態圖1的狀態圖功能會被停用。你也能夠經過如下方法,使得可以從網絡中下載狀態圖1:
stv.setUrlImage(url, false);
複製代碼
第二個參數表示關閉圖片展現功能。
上圖中,第一個例子是從網絡中下載圖片用做狀態圖,第二個例子是用做展現圖片。
SuperTextView 爲了保持依賴庫的純淨和儘量小的體積,並無內置任何的圖片加載框架。因此默認狀況,將使用內置的一個簡易圖片引擎去下載圖片,確保開發者可以正常使用展現網絡圖片的功能。
SuperTextView 具有兼容任意第三方圖片下載框架的能力,建議開發者根據項目的具體狀況,選擇一個目前正在使用的圖片加載框架,設置到 SuperTextView 中,以用來加載圖片。 下面將經過幾個的例子展現如何將現有的圖片框架安裝到 SuperTextView 中。
第一步:實現圖片引擎Engine
在 SuperTextView 中,核心的圖片加載引擎被抽象成接口 Engine ,開發者須要根據所用的圖片框架,實現一個 Engine。
Glide圖片加載框架
public class GlideEngine implements Engine {
private Context context;
public GlideEngine(Context context) {
this.context = context;
}
@Override
public void load(String url, final ImageEngine.Callback callback) {
Glide.with(context).load(url).into(new SimpleTarget<GlideDrawable>() {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) {
// 主要是經過callback返回Drawable對象給SuperTextView
callback.onCompleted(resource);
}
});
}
}
複製代碼
Picasso圖片加載框架
public class PicassoEngine implements Engine {
private Context context;
public PicassoEngine(Context context) {
this.context = context;
}
@Override
public void load(String url, final ImageEngine.Callback callback) {
Picasso.with(context).load(url).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
// 主要是經過callback返回Drawable對象給SuperTextView
callback.onCompleted(new BitmapDrawable(Resources.getSystem(), bitmap));
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
}
}
複製代碼
第二步:安裝圖片引擎Engine
實現好 Engine 後,下一步就是要將其安裝到 SuperTextView 中。
建議能夠在 Application的 onCreate()
中進行安裝,這樣當須要使用 SuperTextView 加載顯示網絡圖片的時候,就可以用到三方圖片框架了。
public class STVApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 安裝圖片引擎
ImageEngine.install(new GlideEngine(this));
// ImageEngine.install(new PicassoEngine(this));
}
}
複製代碼
一行代碼,輕鬆安裝。
須要注意的是,任什麼時候候,後安裝的 Engine 實例老是會替換掉先前安裝的 Engine 實例,即 SuperTextView 只容許全局存在一個 Engine 實例。
只需簡單兩步,便可完成任意三方圖片加載框架的適配。
當你經過 Drawable 坑位展現背景圖片時,全部的圓角和邊框設置都一樣有效。
Adjuster 被設計用來在 SuperTextView 的繪製過程當中插入一些操做。這具備很是重要的意義。好比,實時的改變控件的狀態,製做複雜的動畫效果或者交互效果。
public class YourAdjuster extends SuperTextView.Adjuster {
@Override
protected void adjust(SuperTextView v, Canvas canvas) {
//do your business。
}
@Override
public boolean onTouch(SuperTextView v, MotionEvent event) {
//you can get the touch event.
//If want to get a series of touch event, you must return true here.
}
}
複製代碼
經過重寫 Adjuster 的 adjust()
方法,能夠獲取每次繪製過程當中控件的 Canvas
對象,這意味着能夠在繪製過程當中從外部插入一些新的元素。固然,單單經過 SuperTextView 的實例修改其狀態也是能夠的。
經過重寫 Adjuster 的 onTouch()
方法,能夠獲取每一次控件的觸摸事件,若是在該方法中返回true,代表該 Adjuster 須要獲取後續的觸摸事件,同時也會使得 SuperTextView 在整個控件樹中回去攔截觸摸事件。配合 adjust()
能夠實現一些複雜的交互效果。值得注意的是,若是在 SuperTextView 以前,已經有控件攔截的觸摸事件,那麼其中的 Adjuster 將沒法獲取到觸摸事件。
當裝載 Adjuster 到 SuperTextView 以後,須要調用如下方法來開啓 Adjuster 的功能:
stv.setAutoAdjust(true);
複製代碼
固然,中止 Adjuster 只須要設置爲false便可。
stv.addAdjuster(mAdjuster);
複製代碼
經過上面方法能夠將一個 Adjuster 添加到 SuperTextView 中,最多支持添加3個 Adjuster 。超過3個的部分,將會始終覆蓋最後一個 Adjuster。
若是你想要移除一個 Adjuster,經過下面方法來實現。
// 移除指定位置的 Adjuster
stv.removeAdjuster(index)
// 移除指定的 Adjuster
stv.removeAdjuster(adjuster)
複製代碼
前面有描述過 SuperTextView 的層級劃分,Adjuster 能夠經過配置,將其插入到指定的層級。
mAdjuster.setOpportunity(opportunity);
複製代碼
層級定義了以下幾個枚舉變量:
public enum Opportunity {
// 背景層和Drawable層之間
BEFORE_DRAWABLE,
// Drawable層和文字層之間
BEFORE_TEXT,
// 最上層
AT_LAST
}
複製代碼
分別對應以下幾種場景,其中Emoji圖是StateDrawable狀態圖,藍色圓形就是一個 Adjuster :
在 SuperTextView 中,能夠經過如下方法觸發 SuperTextView 的定時繪製:
stv.startAnim();
複製代碼
啓動動畫後, SuperTextView 將會以默認 60fps 的幀率進行刷新。配合 Adjuster 能夠十分簡單的實現動畫效果。
當 SuperTextView 離開屏幕後,將會自動中止正在播放的動畫,當在次進入屏幕時,又會自動啓動。因此開發者能夠無需擔憂動畫在後臺消耗資源。
固然,開發者也能夠隨時中止動畫,經過調用如下方法:
stv.stopAnim();
複製代碼
經過如下方法,開發者能夠隨時修改 SuperTextView 的刷新頻率:
// 每秒30幀
stv.setFrameRate(30);
複製代碼
Adjuster 中包含了兩個函數:
onAttach()
:當 Adjuster 被設置到一個 SuperTextView 中時會被調用。onDetach()
:當 Adjuster 被從一個 SuperTextView 中移除時會被調用。經過在 Adjuster 中重寫這兩個函數,開發者能夠在正確的時機進行狀態註冊、初始化,或者取消註冊、釋放資源等操做。
public class MyAdjuster extends SuperTextView.Adjuster{
@Override
protected void adjust(SuperTextView superTextView, Canvas canvas) {
}
@Override
public void onAttach(SuperTextView stv) {
// 當 Adjuster 被加入一個 SuperTextView 時會被調用
}
@Override
public void onDetach(SuperTextView stv) {
// 當 Adjuster 被從 SuperTextView 移除時會被調用
}
}
複製代碼
開發者能夠輕鬆的改變一個圖標的顏色,而不用再增長一個僅僅是顏色不一樣的圖標到項目中。這項技術將爲你的 Android 應用程序帶來一次瘦身的機遇。
# 修改 drawable 的顏色
app:stv_state_drawable_tint="@color/gray"
# 修改 drawable2 的顏色
app:stv_state_drawable2_tint="@color/red"
複製代碼
只須要如此一行簡單的代碼,就能瞬間賦予一張圖片變幻無窮的能力。想要任何色彩,固然是你說了算。而這一切的發生,無需再引進另一張圖片。
在 Java 代碼中,有與之對應 set/get 函數,讓開發者能夠在任什麼時候候都能施展魔法,改變一張圖片的色彩。
SuperTextView 被賦予了改變 StateDrawable 形態的能力。一樣的一張圖,開發者能夠組合出無數種可能。
只需簡單的幾行代碼,你即可以爲所欲爲的變換任何一張圖片。
# 修改 drawable 的旋轉角度
app:stv_state_drawable_rotate="90"
# 修改 drawable2 的旋轉角度
app:stv_state_drawable2_rotate="90"
複製代碼
無需複雜的代碼,SuperTextView 一如既往的簡潔、優雅。
一樣,在 Java 代碼中,也提供了對應的 `set/get· 函數。
這項能力,能夠有效的幫助開發者將 Android 應用的體積向着極致的方向壓縮。
經過和 Drawable 着色功能的聯合使用,開發者能夠將應用中本來必要存在的 .png 通通移除掉。好比,箭頭等。開發者只須要一張箭頭圖片,就能夠經過修改其顏色、旋轉角度、大小等屬性,組合出任何需求的箭頭 icon。
這就是漸變文字!
SuperTextView 所提供的多是目前爲止實現漸變文字最簡潔、優雅的解決方案。只須要簡單的配置,就能實現酷炫的漸變文字效果。
# 是否啓用漸變色文字
app:stv_textShaderEnable="true"
# 設置文字的起始漸變色
app:stv_textShaderStartColor="@color/red"
# 設置文字的結束漸變色
app:stv_textShaderEndColor="@color/yellow"
# 設置文字的漸變的模式
# leftToRight:左 -> 右
# rightToLeft:右 -> 左
# topToBottom:上 -> 下
# bottomToTop:下 -> 上
app:stv_textShaderMode="leftToRight"
複製代碼
這些屬性也在 Java 中開放了 set/get
接口,便於開發者隨時動態的修改它們。
若是你喜歡 SuperTextView,但願能到 Github 點個 star 🌟 哦!
此外,CoorChice 會不按期的在博客平臺分享乾貨,內容包括 Android 相關技術、機器學習、算法、新的技術,以及一些對我的發展提高的感悟和思考。快進入 CoorChice的【我的主頁】 關注一波吧。
文檔結束。更多例子能夠Clone項目到本地學習,祝你使用愉快!