Git 廣告
您好,開發者,歡迎使用SuperTextView !
感謝您和數以萬計的Android開發者對我的信任?
SuperTextView的不同之處在於它只是一個簡單的視圖元素,而不僅僅是一個視圖。
它充滿活力,具有強大的嵌入式邏輯,持續為您提供豐富但異常簡單的開發支援。
SuperTextView讓您免於複雜的渲染邏輯。簡單的API方法調用,炫麗的渲染效果即刻呈現。
您只需享受自己編寫的令人驚嘆的視覺效果即可,其餘的將交給SuperTextView 。
?點擊此處(或掃描下方二維碼)下載Demo
【傳送門】:《SuperTextView開發參考文件》-您可以學習如何使用SuperTextView更有效率地建立您的應用程式
【傳送門】:《SuperTextView API文件》-可以查看SuperTextView所有可用的api與屬性
將其添加到您的 build.gradle 中:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.chenBingX:SuperTextView:VERSION_CODE'
}
最新版本的版本代碼可以在這裡找到。
v3.2.6支持: armeabi-v7a
v3.2.6.64支援: armeabi-v7a
、 arm64-v8a
v3.2.6.99支援: armeabi-v7a
、 arm64-v8a
、 x86
proguard-rules.pro
請加-keep class com.coorchice.library.gifdecoder.JNI { *; }
在 XML 中,使用「網路影像」作為背景影像
< com .coorchice.library.SuperTextView
android:id =" @+id/stv_40 "
android:layout_width =" 150dp "
android:layout_height =" 150dp "
android:layout_gravity =" center_horizontal "
android:layout_marginTop =" 16dp "
android:gravity =" bottom|center "
android:paddingBottom =" 1dp "
android:text ="网络背景图"
android:textColor =" #000 "
android:textSize =" 14sp "
app:stv_corner =" 10dp "
app:stv_isShowState =" true "
app:stv_drawableAsBackground =" true "
app:stv_solid =" #f1f1f1 "
app:stv_state_drawable =" https://gw.alicdn.com/imgextra/i3/O1CN01suhAFr1cXQX49D2xp_!!6000000003610-0-tps-468-466.jpg " />
在 XML 中,為 StateDrawable2 設定“網路影像”
< com .coorchice.library.SuperTextView
android:id =" @+id/stv_41 "
android:layout_width =" 350dp "
android:layout_height =" 100dp "
android:layout_gravity =" center_horizontal "
android:layout_marginTop =" 30dp "
android:paddingLeft =" 116dp "
android:paddingTop =" 30dp "
android:text =" StateDrawable2 网络图"
android:textColor =" @color/black "
android:textSize =" 14sp "
app:stv_corner =" 50dp "
app:stv_isShowState2 =" true "
app:stv_left_bottom_corner =" true "
app:stv_left_top_corner =" true "
app:stv_solid =" #f1f1f1 "
app:stv_state_drawable2 =" https://gw.alicdn.com/imgextra/i3/O1CN01XPmcmt1vJfKcQ8o6O_!!6000000006152-0-tps-500-500.jpg "
app:stv_state_drawable2_height =" 100dp "
app:stv_state_drawable2_mode =" left "
app:stv_state_drawable2_width =" 100dp " />
stv_pressBgColor
無效修正Drawable直接寫入十六進位顏色值,不顯示的問題
對指定圖層的 Drawable 支持
<com.coorchice.library.SuperTextView
...
// Configuring the level of Drawable1
app:stv_state_drawable_layer="beforeText"
// Configuring the level of Drawable2
app:stv_state_drawable2_layer="afterText"
...
/>
支持方式:
- `beforeText`,Before the text
- `afterText`,After the text
Java有對應的函數支援動態配置。
固定Drawable1為背景圖時縮放模式scaleType開關失效問題
優化文字筆畫
優化透明gif的顯示
在新的v3.2.0
版本中, SuperTextView再次重新定義了自己。開發者們,快來看看為你們準備的驚喜吧!
這次, SuperTextView為開發者帶來了強大的Gif驅動支援。
如果你過去一直在為如何在Android平台上顯示Gif圖表而苦惱,或者你陷入了一些三方Gif庫的效能深淵。但現在, SuperTextView將徹底改變這個狀況。
Gif和SuperTextView自然,因此您可以用最熟悉、最自然的方式顯示Gif圖。就像平常顯示一張普通圖片一樣簡單。
得益於c/c++的超高效能和記憶體的精確操作。 SuperTextView使用c/c++為行動平台客製了強大的Gif驅動引擎。
SuperTextView的Gif引擎,可以精確操作影像像素內存,在Gif影像幀刷新時只更新本地像素內存,這使得Gif影像渲染效率得到了質的飛躍。
透過非同步離屏渲染技術, SuperTextView即使在顯示大型Gif圖片時,也能確保流暢流暢的應用介面和靈敏的反應速度。
在上面的Demo中,使用SuperTextView顯示了一個265幀圖像的Gif圖像,但使用者介面仍然非常流暢。
在SuperTextView中顯示Gif圖,超簡單!
您可以直接在XML佈局文件中配置它或將其新增至您的程式碼。
<com.coorchice.library.SuperTextView
android:id="@+id/stv_1"
android:layout_width="match_parent"
android:layout_height="150dp"
app:stv_state_drawable="@drawable/gif_1" />
您可以像配置普通影像一樣顯示SuperTextView配置的Gif圖。
stv_1 = (SuperTextView) findViewById(R.id.stv_1);
stv_1.setDrawable(R.drawable.gif_1);
就是這麼簡單自然, SuperTextView允許開發者在沒有任何意識的情況下顯示Gif圖。
在SuperTextView的核心邏輯中, SuperTextView智慧地將普通圖和Gif圖進行分類,然後進行對應的處理和最佳化。
如果您的Gif不在本地而是在雲端怎麼辦?
你不用擔心!
stv_1 = (SuperTextView) findViewById(R.id.stv_1);
stv_1.setUrlImage("http://example.com/images/example.gif");
只需一行程式碼, SuperTextView就會在背景協助您載入Gif映像,然後處理渲染到螢幕上。
事實上, SuperTextView的Drawable1和Drawable2影像顯示位元可以用來顯示Gif影像。總之,一切都是你熟悉的。
SuperTextView不僅可以顯示Gif ,還可以控制更多細節。
您可以隨時控制Gif 、播放或暫停。
if (stv.getDrawable() instanceof GifDrawable) {
// Get the GifDrawable first
GifDrawable gifDrawable = (GifDrawable) stv.getDrawable();
// Play
gifDrawable.play();
// Pause
gifDrawable.stop();
}
在SuperTextView中,您始終可以到達您指定的幀的圖像,以及可以提取到指定幀的圖像。
if (stv.getDrawable() instanceof GifDrawable) {
// Get the GifDrawable first
GifDrawable gifDrawable = (GifDrawable) stv.getDrawable();
// Jump to the specified frame
gifDrawable.gotoFrame(pre);
// Get the specified frame
Bitmap frame = gifDrawable.getFrame(i);
}
由於SuperTextView可以支援本地增量渲染,當你的Gif支援這種渲染模式時,表示你可能需要透過呼叫
gifDrawable.setStrict(true)
來啟用**嚴格模式,以確保跳幀或幀提取圖像正確。這可能需要一些時間,因此您應該嘗試在非同步執行緒中執行嚴格模式下的操作。
SuperTextView可讓您隨意修改Gif圖表的播放速率。
if (stv.getDrawable() instanceof GifDrawable) {
// Get the GifDrawable first
GifDrawable gifDrawable = (GifDrawable) stv.getDrawable();
// Set the frame playback interval, 20 ms
gifDrawable.setFrameDuration(20);
}
使用SuperTextView您可以一睹Gif的資訊。
取得GIF大小
// Get width
int width = gifDrawable.getWidth();
// Get height
int height = gifDrawable.getHeight();
取得Gif幀信息
// Get the number of frames
int frameCount = gifDrawable.getFrameCount();
// Get the current frame interval
int frameDuration = gifDrawable.getFrameDuration();
// Get the current render to that frame
int framePotision = gifDrawable.getCurrentFrame();
// Whether it is playing
boolean isPlaying = gifDrawable.isPlaying();
**SuperTextView**和**Gif**憑藉無縫集成的方式進行渲染,之後**Drawable1**和**Drawable2**中的所有配置項目在顯示**Gif**圖時也同樣可以生效。
app:stv_state_drawable_rotate="90"
我們來看看Gif在原來的Drawable位置是怎麼回事。
<com.coorchice.library.SuperTextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingLeft="62dp"
android:paddingRight="10dp"
android:text="小火箭发射了!啦啦啦啦啦啦..."
android:textColor="#ffffff"
android:textSize="22dp"
app:stv_corner="6dp"
app:stv_isShowState="true"
app:stv_solid="#0D1831"
// set Gif
app:stv_state_drawable="@drawable/gif_1"
// set Gif height
app:stv_state_drawable_height="40dp"
// set Gif width
app:stv_state_drawable_width="40dp"
// set Gif to left
app:stv_state_drawable_mode="left"
// set Gif left spacing
app:stv_state_drawable_padding_left="10dp"/>
效果是...
現在讓我們嘗試將Gif旋轉 90 度。
<com.coorchice.library.SuperTextView
...
// set Gif to rotate 90 degrees
app:stv_state_drawable_rotate="90"
...
/>
SuperTextView令人難以置信的實現Gif圖的圓角為開發者打開了一扇新的大門。
然而,這種效果的實作卻出奇的簡單。
<com.coorchice.library.SuperTextView
android:layout_width="185dp"
android:layout_height="138.75dp"
android:layout_gravity="center_horizontal"
app:stv_corner="20dp"
// set Gif as the control background
app:stv_drawableAsBackground="true"
app:stv_scaleType="fitCenter"
// Configuring Gif
app:stv_state_drawable="@drawable/gif_1" />
開發人員甚至可以輕鬆地為Gif添加邊框。
<com.coorchice.library.SuperTextView
android:layout_width="350dp"
android:layout_height="148.4dp"
android:layout_gravity="center_horizontal"
android:gravity="center"
// add the text will be more stylish
android:text="SuperTextView"
android:textSize="36dp"
android:textStyle="bold"
android:visibility="invisible"
app:stv_corner="6dp"
app:stv_drawableAsBackground="true"
app:stv_isShowState="true"
app:stv_scaleType="center"
// Set the border color
app:stv_stroke_color="@color/opacity_8_gray_4c
// Set the border width
app:stv_stroke_width="5dp"
app:stv_text_fill_color="#ccffffff"
app:stv_text_stroke="true"
app:stv_text_stroke_color="#cc000000"
app:stv_text_stroke_width="2dp"
// Configuring Gif
app:stv_state_drawable="@drawable/gif_1"/>
效果瞬間呈現…
過去,一些很酷的動態常常止步於實施的複雜性和成本。而SuperTextView為你帶來了更多的可能性,你的靈感可以自由發揮。
例如,動態頭像的實作將比以往更簡單。
<com.coorchice.library.SuperTextView
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginLeft="30dp"
app:stv_corner="40dp"
// Set as background image
app:stv_drawableAsBackground="true"
// Configure Gif avatar
app:stv_state_drawable="@drawable/gif_avatar"
// Add border
app:stv_stroke_color="#ffffff"
app:stv_stroke_width="3dp"
/>
在程式碼中,可以直接設定網頁動態頭像。
stv.setUrlImage("http://gif_avatar.gif");
在新版的SuperTextView中, Drawable1和Drawable2被賦予了新的能力-支援精確點擊。
SuperTextView透過監聽點擊動作發生的位置,可以精確定位點擊動作發生的區域( Drawable1 、 Drawable2或其他區域),然後觸發對應的監聽回調。
您可以為SuperTextView在Drawable上設定點擊動作監聽器,以便在動作發生時做出準確的回應。
stv.setOnDrawableClickedListener(new SuperTextView.OnDrawableClickedListener() {
@Override
public void onDrawable1Clicked(SuperTextView stv) {
// Drawable1 clicked,do something...
}
@Override
public void onDrawable2Clicked(SuperTextView stv) {
// Drawable2 clicked,do something...
}
});
stv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Non-Drawable area is clicked, do something...
}
});
現在,當您使用Drawable1作為背景圖片時,您可以為其配置不同的縮放模式,以達到您喜歡的效果。
stv.setScaleType(ScaleType.CENTER);
SuperTextView為開發者提供了多達3種縮放模式:
ScaleType.FIT_XY
將圖片拉伸至平鋪。
ScaleType.FIT_CENTER
自適應地將影像居中。
ScaleType.CENTER
居中裁剪圖片。預設值.
在XML版面文件中, Drawable1和Drawable2現在支援直接設定顏色或ShapeDrawable 。
// Circle_f9ad36 is a shape file written in xml
app:stv_state_drawable="@drawable/circle_f9ad36"
// Use solid color as Drawable
app:stv_state_drawable="#000000"
渲染效能比過去至少提高了30% 。
升級預設圖片載入引擎,支援智慧型快取。也許現在,你不必引入第三方圖像加載庫了。
SuperTextView旨在幫助 Android 開發者更有效率、便利、優雅地開發 Android 應用程式。
現在善意再次升級。新的SuperTextView將為Android開發者開啟更多的可能性,一如既往, SuperTextView將帶來更有效率的功能。
SuperTextView的這次更新為StateDrawable添加了神奇而強大的著色功能。開發人員可以輕鬆更改圖示的顏色,而無需在專案中添加不同顏色的圖示。這項技術將給你的Android應用程式一個瘦身的機會。
# modify the drawable color
app:stv_state_drawable_tint="@color/gray"
# modify the drawable2 color
app:stv_state_drawable2_tint="@color/red"
透過這樣簡單的一行程式碼,您就可以立即賦予圖片改變的力量。當然,您想要的任何顏色都取決於您。這一切都發生了,不需要再介紹另一張圖了。
在Java程式碼中,有與之對應的set/get函數,讓開發者可以隨時施展魔法,改變一張圖片的顏色。
StateDrawable 的增強功能不僅限於顏色轉換。 SuperTextView 被賦予了改變 StateDrawable 形狀的能力。透過同一張圖片,開發者可以組合出無限多種可能性。
只需幾行程式碼,您就可以根據需要變換任何圖片。
# Modify the drawable's rotation
app:stv_state_drawable_rotate="90"
# Modify the drawable's rotation
app:stv_state_drawable2_rotate="90"
不需要複雜的程式碼, SuperTextView一如既往的簡單優雅。
同樣,在Java程式碼中,也提供了對應的set/get函數。
這項能力可以有效幫助開發者將Android應用程式的體積壓縮到極致。
這就是漸層文字!
SuperTextView提供的可能是迄今為止實現漸變文字的最簡單而優雅的解決方案。透過簡單的配置,就可以實現酷炫的漸層文字效果。
# Whether to enable gradient text
app:stv_textShaderEnable="true"
# Set the starting color of the text
app:stv_textShaderStartColor="@color/red"
# Set the ending color of the text
app:stv_textShaderEndColor="@color/yellow"
# Set the gradient mode of the text
# leftToRight:left -> right
# rightToLeft:right -> left
# topToBottom:top -> bottom
# bottomToTop:bottom -> top
app:stv_textShaderMode="leftToRight"
這些屬性也提供了Java中的set/get接口,方便開發者隨時修改。
調節器增加了兩個新功能:
onAttach()
:當Adjuster設定為SuperTextView時將被呼叫。onDetach()
:當從SuperTextView中刪除調整器時將被呼叫。透過在Adjuster中重寫這兩個函數,開發者可以在適當的時候進行狀態註冊、初始化、註銷、資源釋放等操作。
public class MyAdjuster extends SuperTextView.Adjuster{
@Override
protected void adjust(SuperTextView superTextView, Canvas canvas) {
}
@Override
public void onAttach(SuperTextView stv) {
// will be called when the modifier is added to a SuperTextView
}
@Override
public void onDetach(SuperTextView stv) {
// will be called when the Adjuster is removed from SuperTextView
}
}
此函數允許開發者取得SuperTextView中的所有調整器。如果SuperTextView中沒有Adjuster ,則傳回null。
SuperTextView的所有屬性現在都以stv_
為前綴。
這樣可以避免開發者在引入其他第三方函式庫時與SuperTextView可能產生的屬性名稱衝突。
如果開發者目前使用的是先前版本的SuperTextView ,那麼升級到新版本後,需要在所有 xml 中的屬性前面加上stv_
前綴。
app:corner="10dp"
corner是舊版中的屬性名稱。升級到新版本後,需要在前面加上stv_
前綴,成為stv_corner
。
如果開發人員使用AndroidStudio ,請從Edit > Find > Replace
開啟批次取代對話框,然後按照以下說明進行操作。
如果只有SuperTextView在開發者的專案中使用相同的命名空間(例如app
),那麼幸運的是,您可以簡單地將app:
替換為app:stv_
。
從SuperTextView v2.0 開始, setAdjuster(Adjuster)
函數被標記為要移除的狀態,並新增了新函數addAdjuster(Adjuster)
。
新版本中, setAdjuster(Adjuster)
函數將會被正式移除。如果開發者之前使用過該方法,請將其變更為addAdjuster(Adjuster)
。
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.1.1'
}
如今, SuperTextView已具備圓角、邊框、描邊、按變色、多狀態圖、圓角圖、多功能調整器、載入網路圖片等一系列常見功能。由於採用此,開發者可以輕鬆實現各種非常繁瑣的效果,節省大量的開發時間,有效降低頁面的複雜度,並降低專案維護成本。
寫程式吧,應該是那麼的賞心悅目吧!
早在幾個月前,就有不少開發者向CoorChice建議是否能讓SuperTextView具備載入網頁圖片的能力。其實這也是CoorChice很早之前就考慮過的,不過在SuperTextView的早期,完善其核心功能仍是首要目標,所以一直沒有牽涉到影像相關的功能。
直到上一個大版SuperTextView v2.0, CoorChie嘗試新增圖片顯示功能。這使得SuperTextView的範圍得到了擴展,並且能夠為圖片添加筆畫、圓角和狀態圖。相關文件可以在以下連結找到:
【你好,SuperTextView】 - https://www.jianshu.com/p/1b91e11e441d
這次,我得到了開發商的良好回應。大家都很期待使用SuperTextView來顯示和處理圖片。上一次發布之後,開發者似乎對能夠顯示網頁圖片的SuperTextView更感興趣。
那麼,現在,期待已久的SuperTextView又回來了!
要顯示網頁圖片,只需在SuperTextView中新增以下程式碼:
SuperTextView stv_1 = (SuperTextView) findViewById(R.id.stv_1);
// fill in the picture Url
stv_1.setUrlImage(url);
效果與上圖中顯示頭像的第二個範例相同。
如果你想將網路圖片顯示為SuperTextView的 StateDrawable ,也可以。
// fill in the picture Url
stv_1.setUrlImage(url, false);
第二個參數為false表示網路圖片不會填入整個SuperTextView作為背景,而是作為狀態圖。當然,關於狀態圖的一切都會在這裡用到。如同上面第一個例子,整個佈局,包括圖片、文字、背景都在SuperTextView中處理,從網路下載的圖片以StateDrawable 的形式放置在該地方。
SuperTextView為了保持庫依賴的純度和盡可能小的尺寸,沒有內建圖片載入框架。所以預設會使用內建的簡單的圖像引擎來下載圖片,以確保開發者可以使用顯示網路圖片的能力。
不過CoorChice還是建議開發者依照專案的不同,選擇目前正在使用的圖片載入框架,設定為SuperTextView來載入圖片。 SuperTextView具有適應任何圖像載入框架的能力。以下CoorChice將透過 Glide 和 Picasso 範例向您展示如何將現有映像框架安裝到SuperTextView中。
在SuperTextView中,核心的映像載入引擎抽象化為介面Engine ,開發者需要根據所使用的映像幀來實作一個Engine 。
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) {
// mainly through the callback return Drawable object to SuperTextView
callback.onCompleted(resource);
}
});
}
}
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) {
// mainly through the callback return Drawable object to SuperTextView
callback.onCompleted(new BitmapDrawable(Resources.getSystem(), bitmap));
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
}
}
實作Engine後,下一步是將其安裝到SuperTextView中。
CoorChice建議安裝在應用程式的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實例。
現在就可以讓SuperTextView使用指定的三方圖片載入框架來載入圖片了。
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.0.0'
}
一直以來,CoorChice都有一個願景,期望能夠創建這樣一個控制:它能夠滿足你的大部分開發需求,顯示文字、圖片、幾何、動畫、狀態,讓你用一個控制項就能高效完成大部分的開發工作。它是如此強大,彷彿有心靈感應,接受你的輸入,並按照你的想法呈現出一幅令人驚嘆的畫面。隨著【SuperTextView v2.0】的到來,我們離這個想法又更近了一步。現在,就來看看【SuperTextView v2.0】吧!
在【SuperTextView v2.0】中,增加了對影像顯示的支援。但這不僅僅是顯示圖片,還可以根據您的輸入智慧地將圖像裁剪為您想要的形狀。
在圖片上加上圓角,加上邊框,或直接變成圓形。您所需要做的就是設定一些立即可見的簡單屬性。
如何使用SuperTextView顯示圖片?
只需將以下兩行程式碼新增至 xml 即可。
<com.coorchice.library.SuperTextView
...
app:stv_state_drawable="@drawable/avatar1"
app:stv_drawableAsBackground="true"
...
/>
如果你是SuperTextView
的忠實用戶,你會發現原來的state_drawable
現在可以用來顯示圖片了。
現在你的圖片就在你的面前,也許你想對它做一些不同的事情,例如添加一個圓角,或者直接變成一個圓形?沒問題, SuperTextView
現在完全可以勝任這種工作。
<com.coorchice.library.SuperTextView
android:layout_width="100dp"
android:layout_height="100dp"
...
app:stv_corner="15dp"
app:stv_state_drawable="@drawable/avatar1"
app:stv_drawableAsBackground="true"
...
/>
太簡單了!在原來的基礎上只需要設定合理的corner
即可。
有時您可能需要使用邊框來包裝圖片,如上例所示。沒錯,這絕對是在SuperTextView
能力範圍內的。
<com.coorchice.library.SuperTextView
android:layout_width="100dp"
android:layout_height="100dp"
...
app:stv_corner="50dp"
app:stv_stroke_color="#F4E187"
app:stv_stroke_width="4dp"
app:stv_state_drawable="@drawable/avatar1"
app:stv_drawableAsBackground="true"
...
/>
app:stv_stroke_color
控制邊框的顏色, app:stv_stroke_width
控制邊框的寬度。一切都是那麼順利,智慧控制就該這樣吧?
面對複雜的需求變化,【SuperTextView】誕生了第二個drawable來應付這種複雜性。
state_drawable2
。
現在,CoorChice將向您展示上圖中的兩種效果是如何實現的。
<com.coorchice.library.SuperTextView
android:layout_width="100dp"
android:layout_height="100dp"
...
app:stv_corner="50dp"
app:stv_state_drawable="@drawable/avatar1"
app:stv_drawableAsBackground="true"
// The configuration of state_drawable2 starts here
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"
...
// background
android:background="@drawable/avatar7"
// The configuration of drawable1 starts here
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"
// The configuration of state_drawable2 starts here
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"
...
/>
正如你所熟悉的, state_drawable2
延續了第一代的所有流暢操作。在你聰明的運用下,【SuperTextView】一定能大放異彩!
先前, Adjuster
的設計讓【SuperTextView】有了靈魂,也讓控制變得更聰明。繪圖過程的插入、觸摸事件的捕獲,使得從外部改變控制項的狀態變得容易。創造力從心開始,從這裡開始。
現在,【SuperTextView】最多可以同時攜帶3個Adjuster
!也許你的創意會更加耀眼。
在上面的例子中,CoorChice 將早期的【掃描】和【移動】兩個效果添加到了【SuperTextView】中,結果就是你所看到的。
更多的Adjuster
意味著更多的組合和更多的驚喜。在【v1.4.0】中,CoorChice也利用Adjuster
輕鬆實現按鍵換色功能。
這是Adjuster
的時代,你可以用它來發揮創意。
setAdjuster(Adjuster)
方法仍然保留,但未來版本將被刪除,您必須盡快遷移。新的替代方案是addAdjuster(Adjuster)
。
app:stv_shaderMode="leftToRight"
的拼字。右邊是app:stv_shaderMode="leftTopRight"
。如果您使用了該屬性,請升級【SuperTextView v2.0】後修正。set/getPressBgColor()
和set/getPressTextColor()
來控製程式碼中的背景顏色。 您只需在 xml 檔案中設定這些屬性,如下所示:
# set the background color when you pressed
app:stv_pressBgColor="@color/red"
# set the text color when you pressed
app:stv_pressTextColor="@color/white"
getCorners()
。你可以在SuperTextView
中取得角點的信息,有時你確實會想使用這個方法。 dependencies {
compile 'com.github.chenBingX:SuperTextView:v1.4'
}
mSuperTextView.setFrameRate(30);
// set 30 fps
一觸即變,想像無法停止。藝術家,發揮你的創意!
可以在xml中設定Shader Effect,就可以了。
app:stv_shaderEnable="true"
// set true to begin shader.
app:stv_shaderStartColor="@color/main_blue"
// set shader start color.
app:stv_shaderEndColor="@color/pink"
// set shader end color.
app:stv_shaderMode="rightToLeft"
// set shader mode. These are four mode:
// topTopBottom, bottomToTop, leftToRight, rightToLeft
當然,這些屬性可以透過set/get
方法來改變。例如:
mSuperTextView.setShaderStartColor(Color.RED);
現在提供了SuperTextView javadoc,您可以從這裡下載(點擊index.html
開始): SuperTextView javadoc:http://ogemdlrap.bkt.clouddn.com/SuperTextView%E6%96%87%E6%A1%A3% 20. zip?attname=
如何在build.gradle中使用SuperTextView 1.3:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.chenBingX:SuperTextView:v1.3'
}
mSuperTextView.setAdjuster(new MoveEffectAdjuster())
.setAutoAdjust(true)
.startAnim();
SuperTextView屬性可以輕鬆地在XML中設置,並且您可以立即看到效果。就像使用TextView一樣。
<SuperTextView
android:layout_width="50dp"
android:layout_height="50dp"
//Set Corner.
//If you want to get a circle, you just need to set the value of half of width.
app:stv_corner="25dp"
//Corner of left-top
app:stv_left_top_corner="true"
//Corner of right-top
app:stv_right_top_corner="true"
//Corner of left-bottom
app:stv_left_bottom_corner="true"
//Corner of right-bottom
app:stv_right_bottom_corner="true"
//Fill color
app:stv_solid="@color/red"
//Stroke color
app:stv_stroke_color="@color/black"
//Stroke width
app:stv_stroke_width="2dp"
//Set a state drawbale
//The default size is half of the SuperTextView.
app:stv_state_drawable="@drawable/emoji"
//The mode of the state drawable. Optional values:
// left、top、right、bottom、center(Default)、
//leftTop、rightTop、leftBottom、rightBottom、
//fill(Fill the SuperTextView. In this case, set state drawable size will not work.)
app:stv_state_drawable_mode="center"
//state drawable height
app:stv_state_drawable_height="30dp"
//state drawable width
app:stv_state_drawable_width="30dp"
//The padding of the left, it base on the value of state_drawable_mode.
app:stv_state_drawable_padding_left="10dp"
//The padding of the top, it base on the value of state_drawable_mode.
app:stv_state_drawable_padding_top="10dp"
//boolean. Whether to show the state drawble.
app:stv_isShowState="true"
//Whether to use the Stroke Text Function.
//Attention, Once you opne this function, setTextColor() will not work.
//That means you must to uses text_fill_color to set text color.
app:stv_text_stroke="true"
// Text stroke color. The default value is Color.BLACK.
app:stv_text_stroke_color="@color/black"
// Stroke text width.
app:stv_text_stroke_width="1dp"
// Stroke text color. The default value is Color.BLACK.
app:stv_text_fill_color="@color/blue"
//boolean. Whether to use the Adjuster Function.
//Use this function to do what you want to do.
//If open this function, but you haven't implemented your Adjuster, the DefaultAdjuster will be used.
//The DefaultAdjuster can auto adjust text size.
app:stv_autoAdjust="true"
/>
所有的屬性都可以在java.lang.檔案中設定。你也可以得到它們的價值。例如:
mSuperTextView.setCorner(10);
mSuperTextView.getCorner();
通常,你必須編寫和管理很多文件才能實現上圖的效果。但現在,您可以在 XML 中輕鬆完成此操作。
與一般的角點不同, SuperTextView可以支援精確控制角點的位置。一、二、三,隨心所欲。
使用描邊文字就是這麼簡單!
與一般的狀態drawable不同, SuperTextView支援更精確的控制選項。您可以輕鬆設定可繪製狀態,只需使用一個屬性。
調整器的目的是在SuperTextView的繪製過程中插入一些選項。它具有非常重要的意義。例如, DefaultAdjuster可以在繪製文字之前自動調整文字大小。當然,您可以用它來做任何事情。
如果要使用調整器,則必須呼叫SuperTextView.setAutoAdjust(true)
。當然,您可以隨時呼叫SuperTextView.setAutoAdjust(false)
來停止它。您應該小心地呼叫這些方法。因為,一旦你呼叫SuperTextView.setAutoAdjust(true)
,但之前沒有設定你的調整器,預設調整器就會立即被使用。
要實作Adjuster,您需要擴充SuperTextView.Adjuster,並實作adjust(SuperTextView v, Canvas canvas)
方法。每當繪製發生時,Adjuster.adjust()就會被調用,這意味著您可以在外部幹預繪製過程。
public class YourAdjuster extends SuperTextView.Adjuster {
@Override
protected void adjust(SuperTextView v, Canvas canvas) {
//do your business。
}
}
注意,如果你啟動動畫,你必須非常小心地在 adjustmenter() 中編寫程式碼。因為動畫將以 60fps/s 的速度繪製。這意味著,該方法將在一秒鐘內被呼叫60次!否則,你的應用程式將會出現很大的延遲!關於詳細原因,你可以看我的這兩篇文章:
如果您重寫Adjuster的onTouch(SuperTextView v, MotionEvent event)
方法,您將獲得SuperTextView的觸控事件。讓SuperTextView的一系列觸控事件被處理是非常重要的。而你必須在onTouch()
中回傳 true ,否則你只會得到一個 ACTION_DOWN 事件,而不是一個事件流。
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.
}
}
因為SuperTextView內建動畫驅動,你可以使用Adjuster來實現令人難以置信的效果。您需要做的所有事情就是在調整器寫入後呼叫startAnim()
和stopAnim()
來啟動或停止動畫。
正如你所看到的,這些漂亮的效果是由Adjuster實現的。這種拉式外掛程式設計,讓您可以隨時在SuperTextView中使用新的Adjuster。您只需要建立一個新的調整器,然後呼叫setAdjuster()
。
@Alex_Cin
希望看到波紋效果,因此在RippleAdjuster.java
中,我展示瞭如何使用帶有動畫驅動的調整器來實現波紋效果。 【RippleAdjuster.java連結:https://github.com/chenBingX/SuperTextView/blob/master/app/src/main/java/com/coorchice/supertextview/SuperTextView/Adjuster/RippleAdjuster.java】
看,你可以實現你的漣漪效應。
調節器貼心地設計了層次功能。您呼叫Adjuster.setOpportunity(Opportunity opportunity)
來設定SuperTextView中Adjuster 的層次結構。
在SuperTextView中,層次結構由下往上分為:Background Hierarchy、Drawable Hierarchy、Text Hierarchy。您可以使用機會將調整器的層次結構設定為您想要的圖層。
public enum Opportunity {
BEFORE_DRAWABLE, //between backgournd layer and drawable layer
BEFORE_TEXT, //between drawable layer and text layer
AT_LAST //The top layer
}
機會圖。
預設值為Opportunity.BEFORE_TEXT
。就像第二張圖一樣。
事實上, SuperTextView就像一塊畫布,你可以在上面繪製你的創意。它讓你在創作上發力,你永遠不需要寫這些無用的程式碼。
現在您可以開始使用SuperTextView 。
- 如果你喜歡SuperTextView ,謝謝你去Github給我一個star嗎? !
- 另外, CoorChice偶爾會在部落格平台上分享乾貨,包括Android相關技術、機器學習、演算法、新技術,以及**一些關於個人發展和提升的見解和思考**。到CoorChice的【個人主頁】追蹤我。
- SuperTextViewQQ群: 775951525
Copyright 2017 CoorChice
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.