偶然在github上看到用粒子动画显示文字的一个控件,觉得挺有意思。今天介绍一下怎么用。github 原地址:https://github.com/Yasic/ParticleTextView
首先在build.gradle中 添加上依赖:
compile 'com.android.support:appcompat-v7:23.4.0'
这里需要注意的是要求最低sdk版本要大于或等于15,同样在build.gradle的defaultConfig节点下修改minSdkVersion即可。
然后xml布局文件中我们定义:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.jst.demotest.MainActivity">
<com.yasic.library.particletextview.View.ParticleTextView
android:id="@+id/textTv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
public class MainActivity extends AppCompatActivity {
private ParticleTextView textTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textTv = (ParticleTextView) findViewById(R.id.textTv);
RandomMovingStrategy randomMovingStrategy = new RandomMovingStrategy();
//BidiHorizontalStrategy bidiHorizontalStrategy = new BidiHorizontalStrategy();
ParticleTextViewConfig config1 = new ParticleTextViewConfig.Builder()
//采样间隔越小生成的粒子数目越多,但绘制帧数也随之降低,建议结合文字大小与粒子半径进行调节。
.setRowStep(8)//设置纵向像素采样间隔
.setColumnStep(8)//设置横向像素采样间隔
.setTargetText("BidiHorizontal")//设置显示的文字
.setReleasing(0.2)//设置粒子运动速度
.setParticleRadius(4)//设置粒子半径
.setMiniDistance(0.1)//设置最小判决距离,当粒子与目的坐标距离小于最小判决距离时将直接移动到目的坐标,从而减少不明显的动画过程。
.setTextSize(150)//设置文字大小
.setMovingStrategy(randomMovingStrategy)//设置粒子移动轨迹策略 默认使用随机分布式策略
//.setParticleColorArray(String[] particleColorArray)//设置粒子颜色域 默认使用完全随机的颜色域
//.setDelay(Long delay) //设置不同路径间动画的间隔时间 delay < 0 时动画不循环
.instance();
textTv.setConfig(config1);//指定配置信息类
textTv.startAnimation();//开启动画
}
}
这样就完成了,还有不同的粒子移动策略:
- RandomMovingStrategy 默认的轨迹策略
- CornerStrategy 往四个角散开
- HorizontalStrategy 水平贴着屏幕散开
- BidiHorizontalStrategy 水平往屏幕两边散开
- VerticalStrategy 垂直散开
- BidiVerticalStrategy 垂直往上下散开