android数字累加,Android自己设置View之数字自动增长
第一次写文,请多指教,有何问题及改进建议都可以告诉我-.-
Idea来自金山词霸App的单词计数,下面先放图
autoNumber.gif
如上图,就是,下面开始进入自己设置View
自己设置View步骤
1. 自己设置属性
2. 生成构造方法
3. onMeasure(可选)
4. onSizeChanged(可选)
5. onLayout(可选)
6. onDraw
我这里只重写了onSizeChanged,onMeasure和onLayout没有重写
1.自己设置属性
values里面新建attrs //变化速度 //边框颜色 //数字颜色
2.生成构造方法public AutoNumberView(Context context) { super(context); } public AutoNumberView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); //自己设置属性 TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.AutoNumberView); strokeColor = typedArray.getColor(R.styleable.AutoNumberView_stroke_color, context.getResources().getColor(R.color.colorPrimaryDark)); autoSpeed = typedArray.getInteger(R.styleable.AutoNumberView_auto_speed, 1000); textColor = typedArray.getColor(R.styleable.AutoNumberView_text_color, context.getResources().getColor(R.color.black)); typedArray.recycle(); init(); initAnimation(); }
初始化动画和画笔private void init() { paint = new Paint(); paint.setColor(strokeColor); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(10); paint.setAntiAlias(true); textPaint = new Paint(); textPaint.setColor(textColor); textPaint.setStyle(Paint.Style.STROKE); textPaint.setTextAlign(Paint.Align.CENTER); textPaint.setAntiAlias(true); } private void initAnimation() { //根据属性动画值重绘数字 valueAnimator = ValueAnimator.ofFloat(0,1).setDuration(autoSpeed); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { value = (float) animation.getAnimatedValue(); invalidate(); } }); }
3.onSizeChanged@Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); int min = Math.min(w, h); //中心点X,Y centerX = w / 2; centerY = h / 2; radius = (int) (min * 0.8f / 2); textPaint.setTextSize(radius / 2); //计算数字位于中心点的矩形 targetRect = new Rect(-min / 2, -min / 2, min / 2, min / 2); Paint.FontMetricsInt fontMetrics = textPaint.getFontMetricsInt(); //中线 baseline = (targetRect.bottom + targetRect.top - fontMetrics.bottom - fontMetrics.top) / 2; }
4.onDraw@Override protected void onDraw(Canvas canvas) { //移动中心点 canvas.translate(centerX, centerY); //边框 canvas.drawCircle(0, 0, radius, paint); //数字 canvas.drawText(String.valueOf((int)(value * number)), targetRect.centerX(), baseline, textPaint); }
5.使用方法public class MainActivity extends AppCompatActivity { ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); //设置数值 autoNumberView.get(0).setNumber((int) (Math.random() * 500 + 1000)); autoNumberView.get(1).setNumber((int) (Math.random() * 500 + 1000)); autoNumberView.get(2).setNumber((int) (Math.random() * 500 + 1000)); showLoading.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //启动 for (AutoNumberView auto : autoNumberView) { auto.startAnimation(); } } }); numberValue.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { //设置数值 value.setText("设置值:" + progress + "* Math.random() * 1000"); for (AutoNumberView auto : autoNumberView) { auto.setNumber((int) ((Math.random() * 1000) * progress)); } } }); autoSpeed.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { //设置速度 speed.setText("设置速度:" + progress + "* 100"); for (AutoNumberView auto : autoNumberView) { auto.setAutoSpeed(100 * progress); } } }); }}
最后一律代码地址(GitHub - alaidev/AutoNumber)
android数字累加,Android自己设置View之数字自动增长相关推荐
- Bootstrap4+MySQL前后端综合实训-Day04-PM【PowerDesigner 图形化数据库设计软件(设置依赖关系、自动增长主键、生成sql语句)、SQLyog软件(备份数据库)】
[Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目 录 PowerDesigner软件 5张数据表之间的依赖关系图 设置数据表的自动增长主键 ...
- Android EditText设置弹出数字输入法键盘
Android EditText 设置弹出数字输入法键盘 首先设置只能输入数字: <EditText Android:id="@+id/edit_digit_input" a ...
- 《SQL Server企业级平台管理实践》读书笔记——SQL Server如何设置自动增长和自动收缩项...
SQL Server允许用户设置数据库初始值和最大值,可以通过自动增长或者自动收缩进行配置.通过这些配置,我们可以防止数据库空间问题而导致的应用程序修改失败或者SQL Server磁盘空间耗尽的事情发 ...
- 在Excel中如何让数字自动增长?
给统计名单之类的excel数据表格加编号,是工作中难免会遇到的问题.那需要怎么办呢?一个个输入数字当然是不可能的,excel本身提供了一个叫[填充序列]的功能,就是用来应对数字在excel列或行中的自 ...
- android开发游记:仿支付宝余额数字累加滚动效果的实现
支付宝更新9.0后,细心的朋友会发现新增了一个动画效果,就是进入我的钱包的时候,我的余额会有一段滚动显示的动画效果,比如说你有100块,余额就从0滚动到100,看到自己的钱在不断涨,让我们这些穷屌丝莫 ...
- (转)android EditText 设置弹出数字输入法键盘
首先设置只能输入数字: [html] view plaincopy <EditText android:id="@+id/edit_digit_input" android: ...
- Android自定义View之数字密码锁
距上次写博客已经快一年了,计划赶不上变化,种种原因加上自己的拖延症= =. 之前想好的每月一文还是没能坚持下来,趁着闲暇之余撸一篇,希望之后能够继续坚持总结的习惯.最近项目上用到一个密码加锁功能,需要 ...
- Android开发自定义View实现数字与图片无缝切换的2048
本博客地址:http://blog.csdn.net/talentclass_ctt/article/details/51952378 最近在学自定义View,无意中看到鸿洋大神以前写过的2048(附 ...
- Android开发之Glide设置View背景图的方法
先看效果图: 看了下效果还可以,虽然此方法在Glide4.1.2版本已过时但是还可以使用 针对Glide4.0以上版本设置View背景图方法如下:Kotlin版本 package com.xiayiy ...
最新文章
- iOS autolayout 约束冲突添加symbol breakpoint
- Nodejs Express dockerfile最佳实践
- h5新增的属性php,HTML5中form的新增属性或元素
- JSP中文乱码问题终极解决方案(转)
- 机器学习入门数学书籍推荐(部分资源有下载链接)
- uva 10047 the monocyle (四维bfs)
- Linux--shell编程原理--03
- 电商数据分析方法和指标整理
- 计算机科学导论课后总结
- 测试工程师六大能力模型
- windows/ubuntu系统下安装teamview教程
- sap的pod确认_PO确认控制
- 太阳时角、太阳高度角、天顶角、太阳方位角和剖面角计算的Python程序
- Excel怎么在指定文本后面插入短横线符号
- 傲娇的性格、逗比的语气,和聊天机器人谈情说爱可行吗?
- 数据透视表 | 字段的组合
- 怀孕也就36-40周足够,而芯片54周交期伤心欲绝了!
- 请问苹果x是如何建文件夹_Mac OS X中创建新文件夹的几种方法
- Google针对非 SDK 接口的限制
- 业聚医疗通过聆讯:上半年营收6885万美元 钱永勋为实控人
热门文章
- 使用IntelliJ IDEA的原因
- OpenJPA:内存泄漏案例研究
- Spring3 + JPA2 + Java EE6 App Server =配置混乱
- 罚款200元的交通违法行为
- Java 打 jar 包时,MANIFEST.MF 文件详解
- u盘装系统学计算机好,教你如何使用u盘做系统
- 深度学习pytorch--多层感知机(二)
- 关东升python从小白到大牛_《Python从小白到大牛》第3章 第一个Python程序
- 【开源项目】基于QT录制PCM音频实例详细
- 最大公约数简便算法_求最大公约数的4种算法