成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

從未如此驚艷!你好,SuperTextView

weapon / 1739人閱讀

摘要:支持設(shè)置圓角,并且能夠精確的控制圓角位置。如果你想要設(shè)置的顯示出來,必須設(shè)置為。如此驚艷的效果得益于內(nèi)置的動畫驅(qū)動,你能夠結(jié)合來實現(xiàn)難以置信的動畫效果。一切只需要在你合理的編寫好后,調(diào)用和來啟動停止動畫。

簡介

歡迎使用SuperTextView,這篇文檔將會向你展示如何使用這個控件來提高你構(gòu)建項目的效率。

SuperTextView繼承自TextView,它能夠大量的減少布局的復(fù)雜程度,并且使得一些常見的效果變得十分容易實現(xiàn)且高效。同時,它內(nèi)置了動畫驅(qū)動,你只需要合理編寫Adjuster,然后startAnim()就可以看到預(yù)期的動畫效果。它僅僅是一個控件,所以你可以不費吹灰之力的在你的項目中集成使用。

特點

你從此不必再為背景圖編寫和管理大量文件了。

重新優(yōu)化的狀態(tài)圖功能使得你能夠精確的控制狀態(tài)圖的大小,以及在SuperTextView中的位置。

支持設(shè)置圓角,并且能夠精確的控制圓角位置。

能夠輕松的實現(xiàn)控件邊框效果。

支持文字描邊,這使得空心文字效果成為了可能。

內(nèi)置動畫驅(qū)動,你只需配合Adjuster合理的使用即可。

Adjuster的出現(xiàn),使得你對控件的繪制過程具有了掌控權(quán),良好的設(shè)計使得它能夠完美的實現(xiàn)絕大部分你腦海中的效果。

使用指南 支持的屬性

SuperTextView十分方便的支持在xml中直接設(shè)置屬性,并且你能夠立即看到效果。就像你平時使用TextView一樣方便。


以上這些屬性,均可以在Java中進行動態(tài)的設(shè)置。同時也能夠獲得它們的值。例如:

mSuperTextView.setCorner(10);
mSuperTextView.getCorner();
圓形和邊框

為了實現(xiàn)上圖效果,通常你需要編寫和管理大量的文件?,F(xiàn)在你只需要在xml或代碼中對SuperTextView直接進行設(shè)置即可。

不簡單的圓角

不同于簡單的圓角,SuperTextView支持精確的控制圓角的位置。一個、兩個、三個都沒問題。一切由你掌控。

神奇的文字描邊

文字描邊從未如此簡單!

高效的狀態(tài)圖

不同于原生的Drawable,SuperTextView對于Drawable提供了更多精細化的控制操作。你能夠輕松的指定Drawable大小以及位置,只需一個屬性就能搞定。

相信你一定深有感觸,想要實現(xiàn)上圖中的效果,往往需要嵌套多層布局(一般3層吧?)。而SuperTextView只需一個控件,并且十分簡單高效的就能實現(xiàn)。它能夠大量的減少你的App中的布局復(fù)雜程度,減少視圖樹的繪制時間。

炸裂的Adjuster

Adjuster被設(shè)計用來在SuperTextView的繪制過程中插入一些操作。這具有非常重要的意義。比如,默認實現(xiàn)的DefaultAdjuster能夠動態(tài)的調(diào)整文字的大小。當(dāng)然,你可以用它來實現(xiàn)各種各樣的效果。

想要Adjuster生效,你必須調(diào)用SuperTextView.setAutoAdjust(true)來啟用Adjuster功能。當(dāng)然,你可以所以方便的停止,通過調(diào)用SuperTextView.setAutoAdjust(false)。并且,你需要注意調(diào)用順序,因為一旦調(diào)用了SuperTextView.setAutoAdjust(true),而Adjuster沒有被設(shè)置的話,將會啟用默認的DefaultAdjuster(它能夠動態(tài)的調(diào)整文字大小),直到你設(shè)置了你自己的Adjuster

干預(yù)控件的繪制

實現(xiàn)一個Adjuster需要繼承SuperTextView.Adjuster,并且實現(xiàn)adjust(SuperTextView v, Canvas canvas)方法。Adjuster.adjust()會在每次繪制過程中被調(diào)用,這意味著你能夠不可思議的從外部干預(yù)控件的繪制過程。

public class YourAdjuster extends SuperTextView.Adjuster {

  @Override
  protected void adjust(SuperTextView v, Canvas canvas) {
    //do your business。
  }

}

注意,如果開啟動畫,你必須十分謹慎的編寫adjuster()中的代碼。因為動畫會以60幀/每秒的速度進行繪制。這意味著,這個方法每秒會被調(diào)用60次!所以,千萬不要在這個方法中重復(fù)的創(chuàng)建對象,會卡爆的!原因是短時間的大量將會引起【內(nèi)存抖動】,導(dǎo)致GC頻繁發(fā)生。相關(guān)知識你可以看看我的這兩篇文章:

【Android內(nèi)存基礎(chǔ)——內(nèi)存抖動http://www.jianshu.com/p/69e6f894c698】

【用兩張圖告訴你,為什么你的App會卡頓?http://www.jianshu.com/p/df4d5ec779c8】

響應(yīng)觸摸事件

如果你重載Adjuster的onTouch(SuperTextView v, MotionEvent event)方法,你將能夠獲得SuperTextView的觸摸事件。這是重要的一點,如果你想持續(xù)的對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內(nèi)置的動畫驅(qū)動,你能夠結(jié)合Adjuster來實現(xiàn)難以置信的動畫效果。一切只需要在你合理的編寫好Adjuster后,調(diào)用startAnim()stopAnim()來啟動/停止動畫。

如你所見,上面的效果就是通過Adjuster來實現(xiàn)的。并且這種拔插式的設(shè)計,使得你能夠隨時在同一個SuperTextView上使用新的Adjuster,你所有需要做的事情就是創(chuàng)建一個新的Adjuster,然后調(diào)用setAdjuster()。

之前@Alex_Cin希望看到Ripple漣漪效果,所以在RippleAdjuster.java中,我演示了如何使用Adjuster和動畫驅(qū)動配合實現(xiàn)上圖的Rippler漣漪效果。【RippleAdjuster.java鏈接:https://github.com/chenBingX/SuperTextView/blob/master/app/src/main/java/com/coorchice/supertextview/SuperTextView/Adjuster/RippleAdjuster.java】

看,你可以使用Adjuster實現(xiàn)自己的Ripple效果。

指定Adjuster的層級

Adjuster貼心的設(shè)計了控制作用層級的功能。你可以通過Adjuster.setOpportunity(Opportunity opportunity)來指定Adjuster的繪制層級。

SuperTextView中,繪制層級被從下到上分為:背景層、Drawable層、文字層3個層級。通過Opportunity來指定你的Adjuster想要插入到那個層級間。

public enum Opportunity {
      BEFORE_DRAWABLE, //背景層和Drawable層之間
      BEFORE_TEXT,     //Drawable層和文字層之間
      AT_LAST          //最上層
}

三種類型的Opportunity示意圖。

默認值是Opportunity.BEFORE_TEXT。即第二張圖的示例。

事實上,只要你愿意,SuperTextView就相當(dāng)于一張畫布,你可以在上面任意的揮灑你的創(chuàng)意。它能夠讓你專注于創(chuàng)作,而不用去在意編寫那些無用麻煩的代碼。

如何開始使用

如果你喜歡SuperTextView,希望能順手在Github點個star哦!

抽出空余時間寫文章分享需要動力,還請各位看官動動小手點個贊,給我點鼓勵?

我一直在不定期的創(chuàng)作新的干貨,想要上車只需進到我的【個人主頁】點個關(guān)注就好了哦。發(fā)車嘍~

方法一

在你的build.gradle中加入:

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

dependencies {
    compile "com.github.chenBingX:SuperTextView:v1.0"
}
方法二

你可以Clone我的【Github倉庫https://github.com/chenBingX/SuperTextView】,然后在Library包下找到SuperTextViewattrs.xml,復(fù)制到你的項目中。

現(xiàn)在,你可以開始使用SuperTextView了。

點擊這里跳轉(zhuǎn)SuperTextView項目地址。https://github.com/chenBingX/SuperTextView

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67069.html

相關(guān)文章

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<