翻翻git之---闪烁动画的TextView RevealTextView

转载请注明出处:王亟亟的大牛之路

今天没有P1啦!! 对换工作有想法的,可以找昨天的P1,哈哈 地址:http://blog.csdn.net/ddwhan0123/article/details/50728434



今天上一个自身闪烁,用于吸引用户注意力的TextView * RevealTextView*

先上下效果图:(这图片够大的)

How to use?

Gradle

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

Eclipse
Copy下 attires.xml 和RevealTextView.java就行了,内容不多。



接下来我们来拆拆实现,先看一下自定义Styleable的东西

 <declare-styleable name="RevealTextView">
        <attr name="rtv_duration" format="integer" />
        <attr name="android:text" />
    </declare-styleable>

就只有持续时间和文字

接下来看具体实现

public final class RevealTextView extends TextView implements Runnable, ValueAnimator.AnimatorUpdateListener

继承于TextView 实现多线程以及动画的时间,一看就知道 他没有用诸如Handler的实现,纯粹的主线程子线程的相互操作配合动画来实现闪烁效果

  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);
  }

接着就是初始化,然后就是调用开始动画的操作,这里是把标签传来的字送了过去。

public void setAnimatedText(String text) {
    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();
  }

这边用一个数组作为整个字符串的容器,然后把每个字符生成一个随机数放入容器中,然后开始多线程的操作。

public void replayAnimation() {
    if (null != text) {
      post(this);
    }
  }

当字符串不为空开始执行多线程操作。

并且这2个方法是public的,给予我们外部调用的。

 @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.addUpdateListener(this);
    animator.start();
  }

在run方法中执行了 我们的动画的初始化操作

  @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);
  }

在onAnimationUpdate中对字体进行二次处理最终实现了 图中的效果

作者git:https://github.com/ANPez/RevealTextView

下载地址:https://github.com/ANPez/RevealTextView/archive/master.zip

时间: 2024-11-01 21:08:38

翻翻git之---闪烁动画的TextView RevealTextView的相关文章

android中使用线程和Timer实现字体闪烁动画

android字体闪烁动画,使用线程和Timer实现 public class ActivityMain extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); spark(); } private int clo = 0; public void spark() { final T

android实现字体闪烁动画的方法

  本文实例讲述了android实现字体闪烁动画的方法.分享给大家供大家参考.具体如下: 这里基于线程和Timer实现Android的字体闪烁动画效果. ? public class ActivityMain extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); spark();

android实现字体闪烁动画的方法_Android

本文实例讲述了android实现字体闪烁动画的方法.分享给大家供大家参考.具体如下: 这里基于线程和Timer实现Android的字体闪烁动画效果. public class ActivityMain extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); spark(); } pr

高逼格UILabel的闪烁动画效果

高逼格UILabel的闪烁动画效果 最终效果图如下: 源码: YXLabel.h 与  YXLabel.m // // YXLabel.h // // Created by YouXianMing on 14-8-23. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import <UIKit/UIKit.h> @interface YXLabel : UIView @property (nonatomic, stro

在WPS演示中做文字连续闪烁动画

在用WPS制作演示文稿时,有的标题需要重点强调,我们可以设置动画效果来实现这个目标.这里我谈谈怎样在WPS演示中将文字设置成连续闪烁. 首先选中要闪烁的文字,右击鼠标,点击"自定义动画"如图: 在"添加效果"中点击"强调"→再点击"其他效果",如图: 在"添加强调效果"菜单中,选中"闪动"然后点击"确定",如图: 再在设置栏中选择"计时"项目,如图

翻翻git之---实用工具类Lazy(绝对的好东西,走过路过别错过)

转载请注明出处:这里写链接内容 今天还是继续昨天的从Git上找点"有用的","好玩的","推荐的"东西给大家,今天贴的是一个工具类.地址如下https://github.com/ddwhan0123/Lazy 原作者Blog:http://weibo.com/2675061813/profile?topnav=1&wvr=6 他有一些比较常用的,诸如设备状态啊,土司啊,窗口啊,测量啊什么的,还有些我觉得平时回去搜,但是不多的资源,如拼音和

翻翻git之---自定义邮件发送按钮SendButton(流程分析,实现思路可以学习下)

转载请注明出处:王亟亟的大牛之路 距离过年还有1天,继续这一系列的git翻料之旅. 昨天的工具类真的很棒,这里再推崇一下 传送门:http://blog.csdn.net/ddwhan0123/article/details/50624061 (实际去体验的小伙伴都说好) 今天上一个自定义的Button:SendButton 效果: 比较建议把代码抠出来因为内容不多,一个类就画完了 地址:https://github.com/ddwhan0123/SendButton 因为内容不多,我们就来分析

翻翻git之---实用的欢迎页开源库 AppIntro

转载请注明出处:王亟亟的大牛之路 今天没有P1,直接进入正题 今天上的是一个帅帅的app滑动介绍页 .为什么说帅? 作者对自己的内容是这么定义的 Make a cool intro for your Android app. 那我们来看看是怎么个效果 那么除了滑动还可以有别的操作么? 可以,看下面 灰色的那些Button都是可以点击的,整个视图的SKIP啊 next也是可以隐藏的,也就是说 这个 View是活的,并不是什么一个背景一堆字完事 How to use? Gradle: reposit

翻翻git之---炫酷的自定义翻滚View TagCloudView

转载请注明出处:王亟亟的大牛之路 周一好,又到了每周最困的一天,最近都被啮齿类动物搞的累死,废话不多,今天上一个自定义的ViewGroup实现一个3D球形集合. 效果图: 效果还不错,可以作为短小文字内容的展示用 How to use? Grade: compile 'com.moxun:tagcloudlib:1.1.0' Eclipse: 把这些代码Copy到自己的项目里去吧! 控件有几个自定义标签共给大家设置,诸如转的速度啊,初始颜色结束颜色啊之类的. <declare-styleable