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.TitanicTextViewandroid: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:
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;@Overrideprotected 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();} }
友情链接