Android数字动态显示,仿支付宝app效果简单的实现。字数从0-x!!!
2016-08-07 18:57
836 查看
今天看到了,支付宝app里面的数字从0到X感觉相当的不错,网上搜了下好像没有这方面的介绍,自己想了想做了个简单的实现。
先上程序截图:
![](http://img.blog.csdn.net/20140106163556421?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSnVzdF9TYW5wYXJr/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
代码:自定义控件布局:activity_number.xml
[html] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<com.example.android_ui.widget.AutoNumber
android:id="@+id/num"
android:layout_width="150dip"
android:layout_height="wrap_content"
android:layout_margin="20dip"
android:background="@android:color/transparent"
android:gravity="center"
android:singleLine="true"
android:text="0" />
<EditText
android:id="@+id/editText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:numeric="decimal" />
<Button
android:id="@+id/btn01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="输入"/>
</LinearLayout>
自定义控件:AutoNumber
[java] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
package com.example.android_ui.widget;
import java.text.NumberFormat;
import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* 数字显示0-X
*
* @author Sanpark
*
*/
public class AutoNumber extends TextView {
private Handler handler;
Runnable r = null;
double oldnum;
double newnum;
double startnum = 0;
public AutoNumber(Context context, Handler handler) {
super(context);
}
public AutoNumber(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public AutoNumber(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public CharSequence getText() {
// TODO Auto-generated method stub
return super.getText();
}
public void setText(CharSequence text, BufferType type, Handler myHandler) {
handler = myHandler;
oldnum = 0.00;
newnum = Double.valueOf(text.toString());
// 转化国际化数字显示
// 若想在数字前面在上¥符号 ,将getIntegerInstance()方法改为getCurrencyInstance () 方法
final NumberFormat af = NumberFormat.getIntegerInstance();
// 设置精确到小数点后两位
af.setMinimumFractionDigits(2);
r = new Runnable() {
@Override
public void run() {
// 设置每次添加的度量
oldnum += newnum / 30;
if (startnum < newnum) {
if (oldnum > newnum)
oldnum = newnum;
setText(af.format(oldnum));
handler.postDelayed(r, 50);
} else if (oldnum == newnum) {
setText(af.format(oldnum));
}
}
};
handler.postDelayed(r, 50);
}
}
最后测试Activity:NumberTextViewActivity
[java] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
package com.example.android_ui;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.example.android_ui.widget.AutoNumber;
/**
* 测试界面
*
* @author Sanpark
*
*/
public class NumberTextViewActivity extends Activity {
private AutoNumber numText;
private EditText edit;
private Button btn01;
Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_number);
numText = (AutoNumber) findViewById(R.id.num);
edit = (EditText) findViewById(R.id.editText);
btn01 = (Button) findViewById(R.id.btn01);
handler = new Handler();
btn01.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
numText.setText(edit.getText().toString(),
TextView.BufferType.NORMAL, handler);
}
});
}
}
到此就完工了,有兴趣的去试试吧。
转载注明出处:http://blog.csdn.net/just_sanpark/article/details/17920369
先上程序截图:
代码:自定义控件布局:activity_number.xml
[html] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<com.example.android_ui.widget.AutoNumber
android:id="@+id/num"
android:layout_width="150dip"
android:layout_height="wrap_content"
android:layout_margin="20dip"
android:background="@android:color/transparent"
android:gravity="center"
android:singleLine="true"
android:text="0" />
<EditText
android:id="@+id/editText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:numeric="decimal" />
<Button
android:id="@+id/btn01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="输入"/>
</LinearLayout>
自定义控件:AutoNumber
[java] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
package com.example.android_ui.widget;
import java.text.NumberFormat;
import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* 数字显示0-X
*
* @author Sanpark
*
*/
public class AutoNumber extends TextView {
private Handler handler;
Runnable r = null;
double oldnum;
double newnum;
double startnum = 0;
public AutoNumber(Context context, Handler handler) {
super(context);
}
public AutoNumber(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public AutoNumber(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public CharSequence getText() {
// TODO Auto-generated method stub
return super.getText();
}
public void setText(CharSequence text, BufferType type, Handler myHandler) {
handler = myHandler;
oldnum = 0.00;
newnum = Double.valueOf(text.toString());
// 转化国际化数字显示
// 若想在数字前面在上¥符号 ,将getIntegerInstance()方法改为getCurrencyInstance () 方法
final NumberFormat af = NumberFormat.getIntegerInstance();
// 设置精确到小数点后两位
af.setMinimumFractionDigits(2);
r = new Runnable() {
@Override
public void run() {
// 设置每次添加的度量
oldnum += newnum / 30;
if (startnum < newnum) {
if (oldnum > newnum)
oldnum = newnum;
setText(af.format(oldnum));
handler.postDelayed(r, 50);
} else if (oldnum == newnum) {
setText(af.format(oldnum));
}
}
};
handler.postDelayed(r, 50);
}
}
最后测试Activity:NumberTextViewActivity
[java] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
package com.example.android_ui;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.example.android_ui.widget.AutoNumber;
/**
* 测试界面
*
* @author Sanpark
*
*/
public class NumberTextViewActivity extends Activity {
private AutoNumber numText;
private EditText edit;
private Button btn01;
Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_number);
numText = (AutoNumber) findViewById(R.id.num);
edit = (EditText) findViewById(R.id.editText);
btn01 = (Button) findViewById(R.id.btn01);
handler = new Handler();
btn01.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
numText.setText(edit.getText().toString(),
TextView.BufferType.NORMAL, handler);
}
});
}
}
到此就完工了,有兴趣的去试试吧。
转载注明出处:http://blog.csdn.net/just_sanpark/article/details/17920369
相关文章推荐
- Intent:意图
- java代码动态修改app图标
- android_蓝牙模块的开发
- <Android Framework 之路>BootAnimation(1)
- <Android Framework 之路>BootAnimation(1)
- Android自定义控件----3D旋转效果
- Android Material Design
- Android项目:手机安全卫士(6)—— 手机防盗设置向导(二)
- Android项目:手机安全卫士(12)—— 通讯卫士之电话短信黑名单设置与拦截
- 实现Android的消息通知栏
- 键盘遮挡输入框的问题
- android程序开机自启
- Qt: qobject_cast<QPushButton*>(sender()) 简化信号与槽的编写
- iOS开发:PROJECT与TARGET
- Android_GestureDetector手势滑动使用
- Android中使用注解替代枚举
- Android View与LayoutInflater
- Android基础之AsyncTask的doInBackground方法参数详解
- [Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
- android 仿花椒直播中星星从底部往上移动