好用的開源項目--RevealTextView

前言

這段時間有點小偷懶_,好久沒有更新文章了口猜,想想都有點罪惡感ヽ(●-`Д′-)ノ。為了彌補(bǔ)我的罪惡感恨狈,我準(zhǔn)備給自己的博客新加一個系列————好用的開源項目(PS:名字有點low,大家多多包含)糙臼, 這個系列將為大家?guī)?GitHub 上面一些好用庐镐、有趣開源項目的使用,及個人的一點小見解(我會盡量月月更的变逃。焚鹊。。)韧献。讓我們一起學(xué)習(xí)吧末患!一起進(jìn)步吧!

本博客同步發(fā)布于XueLong的博客

作為本系列的第一個開源項目锤窑,今天的主角是————RevealTextView
項目地址: https://github.com/ANPez/RevealTextView

項目源代碼

簡介

A TextView subclass to show a reveal effect
文字淡入效果的TextView璧针。
運行環(huán)境:Android 4.0+, API 14+

使用方式:
Gradle依賴:

dependencies {
  compile 'com.antonionicolaspina:revealtextview:2.0'
}

布局文件中:

<com.antonionicolaspina.revealtextview.RevealTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:rtv_duration="2000"
    android:text="Hello Reveal Text!"/>

效果圖

revealtextview.gif

實現(xiàn)思路

自定義TextView,利用多線程控制動畫的時間渊啰,主要是借助SpannableStringBuilder來實現(xiàn)文字的閃爍效果的探橱。
首先在初始化時,調(diào)用開始動畫的操作

protected void init(TypedArray attrs) {
    try {
        animationDuration = attrs.getInteger(R.styleable.RevealTextView_rtv_duration, animationDuration);
        text = attrs.getString(R.styleable.RevealTextView_android_text);
    } finally {
        attrs.recycle();
    }
    setAnimatedText(text);
}

在設(shè)置動畫字體的方法中绘证,生成接下來要使用的透明度的隨機(jī)值隧膏、設(shè)置文字顯示、以及重放動畫效果嚷那。

public void setAnimatedText(String text) {
    if (TextUtils.isEmpty(text)) {
        return;
    }
    this.text = text;
    alphas = new double[text.length()];
    for (int i = 0; i < text.length(); i++) {
        alphas[i] = Math.random() - 1.0f;
    }
    setText(text);
    replayAnimation();
}

接下來就是在run方法中啟動動畫胞枕。

@Override
public void run() {
    final int color = getCurrentTextColor();
    red = Color.red(color);
    green = Color.green(color);
    blue = Color.blue(color);

    ValueAnimator animator = ValueAnimator.ofFloat(0f, 2f);
    animator.setDuration(animationDuration);
    animator.setInterpolator(new LinearInterpolator());
    animator.addUpdateListener(this);
    if (isLoop) {
        animator.setRepeatMode(ValueAnimator.REVERSE);
        animator.setRepeatCount(ValueAnimator.INFINITE);
    }
    animator.start();
}

最后就是關(guān)于動畫的更新。

@Override
  public void onAnimationUpdate(ValueAnimator valueAnimator) {
    final float value = (float) valueAnimator.getAnimatedValue();
    SpannableStringBuilder builder = new SpannableStringBuilder(text);
    for(int i=0; i<text.length(); i++) {
      builder.setSpan(new ForegroundColorSpan(Color.argb(clamp(value + alphas[i]), red, green, blue)), i, i+1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
    setText(builder);
  }

寫在最后

講解可能不是很清楚魏宽,還存在著諸多漏洞腐泻,請多包涵。

如果你在參考過程中遇到問題队询,可以在我的聯(lián)系方式中給我提問派桩。

后面會繼續(xù)介紹,Android的相關(guān)知識蚌斩,歡迎繼續(xù)關(guān)注我博客的更新铆惑。

項目源代碼

參考資源

轉(zhuǎn)載請注明:XueLong的博客 ? 好用的開源項目--RevealTextView

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市送膳,隨后出現(xiàn)的幾起案子员魏,更是在濱河造成了極大的恐慌,老刑警劉巖肠缨,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逆趋,死亡現(xiàn)場離奇詭異盏阶,居然都是意外死亡晒奕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脑慧,“玉大人魄眉,你說我怎么就攤上這事∶铺唬” “怎么了坑律?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長囊骤。 經(jīng)常有香客問我晃择,道長,這世上最難降的妖魔是什么也物? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任宫屠,我火速辦了婚禮,結(jié)果婚禮上滑蚯,老公的妹妹穿的比我還像新娘浪蹂。我一直安慰自己,他們只是感情好告材,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布坤次。 她就那樣靜靜地躺著,像睡著了一般斥赋。 火紅的嫁衣襯著肌膚如雪缰猴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天疤剑,我揣著相機(jī)與錄音洛波,去河邊找鬼。 笑死骚露,一個胖子當(dāng)著我的面吹牛蹬挤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播棘幸,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼焰扳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了误续?” 一聲冷哼從身側(cè)響起吨悍,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蹋嵌,沒想到半個月后育瓜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡栽烂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年躏仇,在試婚紗的時候發(fā)現(xiàn)自己被綠了恋脚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡焰手,死狀恐怖糟描,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情书妻,我是刑警寧澤船响,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站躲履,受9級特大地震影響见间,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜工猜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一缤剧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧域慷,春花似錦荒辕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至叠骑,卻和暖如春李皇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宙枷。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工掉房, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人慰丛。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓卓囚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親诅病。 傳聞我的和親對象是個殘疾皇子哪亿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容