Titanic is a simple illusion obtained by applying an animated translation on the TextView TextPaint Shader's matrix.
Titanic的使用
Titanic的使用,项目结构如下:
一、下载Titanic并且部署到项目中
Titanic的项目地址: https://github.com/RomainPiel/Titanic。
在项目中我们使用Titanic需要三个文件: Titanic.java、TitanicTextView.java和wave.png。当然wave.png是可以修改的,在TitanicTextView.java中引用了该资源。
二、它的使用比较简单,就是和普通的自定义View的使用一样
在xml中定义TitanicTextView
<com.romainpiel.titanic.library.TitanicTextView android:id="@+id/titanic_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#212121" android:textSize="70sp"
开始动画
titanic = new Titanic(); titanic.start(myTitanicTextView);
取消动画
titanic.cancel();
三、我们还可以修改它的字体,这也和普通的修改字体一样
在assets中引入ttf字体,在这里我们可以写一个有的帮助类Typefaces
package com.example.titanictextview; import android.content.Context; import android.graphics.Typeface; import android.util.Log; import java.util.Hashtable; /** * Created by Linux on 2016/6/9. */ public class Typefaces { private static final String TAG = "Typefaces"; private static final Hashtable<String, Typeface> cache = new Hashtable<String, Typeface>(); public static Typeface get(Context c, String assetPath) { synchronized (cache) { if (!cache.containsKey(assetPath)) { try { Typeface t = Typeface.createFromAsset(c.getAssets(), assetPath); cache.put(assetPath, t); } catch (Exception e) { Log.e(TAG, "Could not get typeface '" + assetPath + "' because " + e.getMessage()); return null; } } return cache.get(assetPath); } } }
TitanicTextView的setText方法前,调用
titanicTextView.setTypeface(Typefaces.get(this, "Satisfy-Regular.ttf"));
四、运行效果如下
MainActivity.java:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.example.titanictextview; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import com.romainpiel.titanic.library.Titanic; import com.romainpiel.titanic.library.TitanicTextView; public class MainActivity extends AppCompatActivity { private TitanicTextView titanicTextView; private Titanic titanic; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); titanicTextView = (TitanicTextView) findViewById(R.id.titanic_tv); titanic = new Titanic(); } // 点击开始 public void startTitianic(View view) { titanicTextView.setTypeface(Typefaces.get(this, "Satisfy-Regular.ttf")); titanicTextView.setText("I love you!"); titanic.start(titanicTextView); } // 点击结束 public void cancelTitianic(View view) { titanic.cancel(); } }
友情链接