一个用粒子动画显示文字的 Android 组件

Android · yasic · 于 发布 · 最后由 mzcm回复 · 1268 次阅读
213 1485143427

ParticleTextView

一、总述

代码在这里

近期在学习 HTML5 的 Canvas 动画,感觉粒子特效非常好看,所以想在 Android 端玩玩,就做了个小东西,跟大家分享一下。ParticleTextView 是一个 Android 平台的自定义 View 组件,可以用彩色粒子组成想要显示的文字,并配合多种动画效果和配置属性,呈现出丰富的视觉效果。

二、使用

1. 引入依赖

compile 'yasic.library.ParticleTextView:particletextview:0.0.3'

2. 加入到布局文件中

    <com.yasic.library.particletextview.View.ParticleTextView
        android:id="@+id/particleTextView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

3. 实例化配置信息类 ParticleTextViewConfig

ParticleTextView particleTextView = (ParticleTextView) findViewById(R.id.particleTextView);
RandomMovingStrategy randomMovingStrategy = new RandomMovingStrategy();
ParticleTextViewConfig config = new ParticleTextViewConfig.Builder()
                .setRowStep(8)
                .setColumnStep(8)
                .setTargetText("Random")
                .setReleasing(0.2)
                .setParticleRadius(4)
                .setMiniDistance(0.1)
                .setTextSize(150)
                .setMovingStrategy(randomMovingStrategy)
                .instance();
particleTextView.setConfig(config);

4. 启动动画

particleTextView.startAnimation();

5. 暂停动画

particleTextView1.stopAnimation();

三、API说明

粒子移动轨迹策略 MovingStrategy

移动轨迹策略继承自抽象类 MovingStrategy,可以自己继承并实现其中的 setMovingPath 方法,以下是自带的几种移动轨迹策略。

  • RandomMovingStrategy

  • CornerStrategy

  • HorizontalStrategy

  • BidiHorizontalStrategy

  • VerticalStrategy

  • BidiVerticalStrategy

配置信息类 ParticleTextViewConfig

  • 设置显示的文字
setTargetText(String targetText)
  • 设置文字大小
setTextSize(int textSize)
  • 设置粒子半径
setParticleRadius(float radius)
  • 设置横向和纵向像素采样间隔

采样间隔越小生成的粒子数目越多,但绘制帧数也随之降低,建议结合文字大小与粒子半径进行调节。

setColumnStep(int columnStep)
setRowStep(int rowStep)
  • 设置粒子运动速度
setReleasing(double releasing)

指定时刻,粒子的运动速度由下列公式决定,其中 Vx 和 Vy 分别是 X 与 Y 方向上的运动速度,target 与 source 分别是粒子的目的坐标与当前坐标

Vx = (targetX - sourceX) * releasing
Vy = (targetY - sourceY) * releasing
  • 设置最小判决距离

当粒子与目的坐标距离小于最小判决距离时将直接移动到目的坐标,从而减少不明显的动画过程。

setMiniDistance(double miniDistance)
  • 设置粒子颜色域

默认使用完全随机的颜色域

setParticleColorArray(String[] particleColorArray)
  • 设置粒子移动轨迹策略

默认使用随机分布式策略

setMovingStrategy(MovingStrategy movingStrategy)
  • 设置循环动画间的间隔时间
setDelay(Long delay)
共收到 2 条回复
96

不错

4946 1494236381
mzcm · #2 ·

厉害了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册