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();} }
?
友情鏈接
?