使用自定义的TextView去循环改变字体的大小:
源码:
import android.content.Context;
import android.graphics.Color;
import android.os.Handler;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.AbsoluteSizeSpan;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* @author: iskoyoter@gmail.com
* @Description:仿造iphone锁屏时,滑动时提示字体的跑马灯效果
* @version: 1.0
*/
public class MyTextView extends TextView {
private Handler handler = new Handler();
private int len; // 字体长度
private int index = -4; // -4代表高亮前会暂停一小会...
public MyTextView(Context context) {
super(context);
init();
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
handler.postDelayed(runnable, 300);
}
/**
* @Description 颜色跑马灯效果
*/
int getColor(int i) {
int a = 0;
if (i == 1 || i == 5) {
a = 0x58;
} else if (i == 2 || i == 4) {
a = 0xa8;
} else if (i == 3) {
a = 0xff;
}
return Color.argb(a, 0xff, 0xff, 0xff);
}
/**
* @Description 字体大小跑马灯效果
**/
void setSpanTextSize(SpannableString spannable, int startindex, int endindex) {
spannable.setSpan(new AbsoluteSizeSpan(20, true), startindex, endindex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
Runnable runnable = new Runnable() {
@Override
public void run() {
if (index == len) {
index = -1;
}
String text = MyTextView.this.getText().toString();
len = text.length();
SpannableString spannable = new SpannableString(text);
if (index >= 0 && index < len - 0) {
setSpanTextSize(spannable, index + 0, index + 1);
}
if (index >= -1 && index < len - 1) {
setSpanTextSize(spannable, index + 1, index + 2);
}
if (index >= -2 && index < len - 2) {
setSpanTextSize(spannable, index + 2, index + 3);
}
if (index >= -3 && index < len - 3) {
setSpanTextSize(spannable, index + 3, index + 4);
}
if (index >= -4 && index < len - 4) {
setSpanTextSize(spannable, index + 4, index + 5);
}
MyTextView.this.setText(spannable);
index++;
handler.postDelayed(this, 100);
}
};
}