TextView内容放大缩小动画,不是控件

来源:互联网 发布:mac vmware tools 编辑:程序博客网 时间:2024/05/16 06:02

主要思想,定义一个放大字体的方法,定义一个缩小字体的方法,Handler互相发送消息,放大缩小字体的核心类是SpannableString

public class ZoomTextView extends TextView {public static final int AMPLIFY = 1;public static final int REDUCE = 2;private boolean isZoom;private SpannableString msp;float strethScale = 1.2f;// 缩放比例private Handler mHandler = new Handler() {public void handleMessage(android.os.Message msg) {switch (msg.what) {case AMPLIFY:amplify();break;case REDUCE:reduce();break;}};};public void reduce() {mHandler.postDelayed(new Runnable() {@Overridepublic void run() {msp = new SpannableString(getText().toString());msp.setSpan(new RelativeSizeSpan(1), 0, getText().toString().length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);msp.setSpan(new ScaleXSpan(1), 0,getText().toString().length(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE);setText(msp);mHandler.sendEmptyMessage(AMPLIFY);}}, 500);}public void amplify() {mHandler.postDelayed(new Runnable() {@Overridepublic void run() {msp = new SpannableString(getText().toString());// 相对比缩放msp.setSpan(new RelativeSizeSpan(strethScale), 0, getText().toString().length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);// 横向缩放msp.setSpan(new ScaleXSpan(strethScale), 0, getText().toString().length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);setText(msp);mHandler.sendEmptyMessage(REDUCE);}}, 500);}public ZoomTextView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);}public ZoomTextView(Context context, AttributeSet attrs) {this(context, attrs, 0);}public ZoomTextView(Context context) {this(context, null);}public boolean isZoom() {return isZoom;}public void setZoom(boolean isZoom) {this.isZoom = isZoom;if (isZoom) {reduce();}}}


0 0
原创粉丝点击