废话少说,直接看效果.
1:控件效果:
2:控件代码:
import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
import android.widget.TextView;
import com.fost.jhlc.util.NumberTool;
import java.math.BigDecimal;
import java.text.DecimalFormat;
/**
* 金钱增减效果
*/
public class MagicTextView extends TextView {
// 递减/递增 的变量值
private double mRate;
// 当前显示的值
private double mCurValue;
// 当前变化后最终状态的目标值
private double mGalValue;
// 控制加减法
private int rate = 1;
// 当前变化状态(增/减/不变)
private boolean refreshing;
private static final int REFRESH = 1;
// 偏移量 主要用来进行校正距离。
DecimalFormat fnum = new DecimalFormat( "0.00");
private String beforeStr; //滚动数字前面的字符串
private String afterStr; //滚动数字后面的字符串
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg. what) {
case REFRESH:
if( rate* mCurValue < rate* mGalValue){
setText( beforeStr+ NumberTool.getNormalNumberFormat().format( mCurValue)+ afterStr); //格式+设置显示内容
mCurValue += mRate * rate;
mHandler.sendEmptyMessageDelayed( REFRESH, 50);
} else{
setText(beforeStr+NumberTool.getNormalNumberFormat().format( mGalValue)+ afterStr);
mCurValue = mGalValue; //滚动完成之后当前值设置为目标值
}
break;
}
};
};
public MagicTextView(Context context) {
super(context);
}
public MagicTextView(Context context, AttributeSet set) {
super(context, set);
}
public MagicTextView(Context context, AttributeSet set, int defStyle) {
super(context, set, defStyle);
}
public void setValue( double value) {
mGalValue = value;
mRate = Math.abs((mGalValue -mCurValue )/20);
BigDecimal b = new BigDecimal( mRate);
mRate = b.setScale(2, BigDecimal. ROUND_HALF_UP).doubleValue();
}
public void startScroll(String beforeStr, double value,String afterStr) {
setValue(value);
this.beforeStr = beforeStr== null? "":beforeStr;
this.afterStr = afterStr== null? "":afterStr;
doScroll();
}
private void doScroll() {
//if ( refreshing)
//return;
if (mCurValue > mGalValue) {
rate = -1; //如果当前值大于目标值,向下滚动
} else{
rate = 1; //如果当前值小于目标值,向上滚动
}
mHandler.sendEmptyMessage( REFRESH);
}
}
控件使用方法:
xml中定义控件
xml中定义控件
<com.example.scrolltext.MagicTextView
android:id= "@+id/textView1"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:textSize= "35sp"
android:textColor= "#FFFFFF00"
android:text="25656.33"
android:background= "@drawable/input_bg1" />
使用该控件的实例
magicTextView .startScroll ("人民币: " , 22800222.56,"元");//开始滚动
参数说明:
1:第一个参数是滚动时候,显示在滚动数量前面的字符串,可以为空.
2:第二个参数是需要滚动到的目的数字
3:第三个参数是滚动时候,显示在滚动数量后面的字符串,可以为空.