Android数字动态显示,仿支付宝app效果简单的实现。字数从0-x!!!

来源:互联网 发布:lol域名不能备案 编辑:程序博客网 时间:2024/05/21 09:25

今天看到了,支付宝app里面的数字从0到X感觉相当的不错,网上搜了下好像没有这方面的介绍,自己想了想做了个简单的实现。

      先上程序截图:

      

代码:自定义控件布局:activity_number.xml

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <com.example.android_ui.widget.AutoNumber  
  8.         android:id="@+id/num"  
  9.         android:layout_width="150dip"  
  10.         android:layout_height="wrap_content"  
  11.         android:layout_margin="20dip"  
  12.         android:background="@android:color/transparent"  
  13.         android:gravity="center"  
  14.         android:singleLine="true"  
  15.         android:text="0" />  
  16.   
  17.     <EditText  
  18.         android:id="@+id/editText"  
  19.         android:layout_width="fill_parent"  
  20.         android:layout_height="wrap_content"  
  21.         android:numeric="decimal" />  
  22.   
  23.     <Button  
  24.         android:id="@+id/btn01"  
  25.         android:layout_width="wrap_content"  
  26.         android:layout_height="wrap_content"   
  27.         android:text="输入"/>  
  28.   
  29. </LinearLayout>  


自定义控件:AutoNumber

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package com.example.android_ui.widget;  
  2.   
  3. import java.text.NumberFormat;  
  4.   
  5. import android.content.Context;  
  6. import android.os.Handler;  
  7. import android.util.AttributeSet;  
  8. import android.widget.TextView;  
  9.   
  10. /** 
  11.  * 数字显示0-X 
  12.  *  
  13.  * @author Sanpark 
  14.  *  
  15.  */  
  16. public class AutoNumber extends TextView {  
  17.     private Handler handler;  
  18.     Runnable r = null;  
  19.     double oldnum;  
  20.     double newnum;  
  21.     double startnum = 0;  
  22.   
  23.     public AutoNumber(Context context, Handler handler) {  
  24.         super(context);  
  25.     }  
  26.   
  27.     public AutoNumber(Context context, AttributeSet attrs, int defStyle) {  
  28.         super(context, attrs, defStyle);  
  29.     }  
  30.   
  31.     public AutoNumber(Context context, AttributeSet attrs) {  
  32.         super(context, attrs);  
  33.     }  
  34.   
  35.     @Override  
  36.     public CharSequence getText() {  
  37.         // TODO Auto-generated method stub  
  38.         return super.getText();  
  39.     }  
  40.   
  41.     public void setText(CharSequence text, BufferType type, Handler myHandler) {  
  42.         handler = myHandler;  
  43.         oldnum = 0.00;  
  44.         newnum = Double.valueOf(text.toString());  
  45.         // 转化国际化数字显示  
  46.         // 若想在数字前面在上¥符号 ,将getIntegerInstance()方法改为getCurrencyInstance () 方法  
  47.         final NumberFormat af = NumberFormat.getIntegerInstance();  
  48.         // 设置精确到小数点后两位  
  49.         af.setMinimumFractionDigits(2);  
  50.         r = new Runnable() {  
  51.   
  52.             @Override  
  53.             public void run() {  
  54.                 // 设置每次添加的度量  
  55.                 oldnum += newnum / 30;  
  56.                 if (startnum < newnum) {  
  57.                     if (oldnum > newnum)  
  58.                         oldnum = newnum;  
  59.                     setText(af.format(oldnum));  
  60.                     handler.postDelayed(r, 50);  
  61.                 } else if (oldnum == newnum) {  
  62.                     setText(af.format(oldnum));  
  63.                 }  
  64.             }  
  65.         };  
  66.         handler.postDelayed(r, 50);  
  67.     }  
  68.   
  69. }  
最后测试Activity:NumberTextViewActivity

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package com.example.android_ui;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.os.Handler;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.EditText;  
  10. import android.widget.TextView;  
  11.   
  12. import com.example.android_ui.widget.AutoNumber;  
  13.   
  14. /** 
  15.  * 测试界面 
  16.  *  
  17.  * @author Sanpark 
  18.  *  
  19.  */  
  20. public class NumberTextViewActivity extends Activity {  
  21.     private AutoNumber numText;  
  22.     private EditText edit;  
  23.     private Button btn01;  
  24.     Handler handler;  
  25.   
  26.     @Override  
  27.     protected void onCreate(Bundle savedInstanceState) {  
  28.         // TODO Auto-generated method stub  
  29.         super.onCreate(savedInstanceState);  
  30.         setContentView(R.layout.activity_number);  
  31.         numText = (AutoNumber) findViewById(R.id.num);  
  32.         edit = (EditText) findViewById(R.id.editText);  
  33.         btn01 = (Button) findViewById(R.id.btn01);  
  34.         handler = new Handler();  
  35.         btn01.setOnClickListener(new OnClickListener() {  
  36.   
  37.             @Override  
  38.             public void onClick(View v) {  
  39.                 numText.setText(edit.getText().toString(),  
  40.                         TextView.BufferType.NORMAL, handler);  
  41.   
  42.             }  
  43.         });  
  44.     }  
  45. }  
到此就完工了,有兴趣的去试试吧。
转载注明出处:http://blog.csdn.net/just_sanpark/article/details/17920369
0 0