第一次写文,请多指教,有何问题及改进建议都可以告诉我-.-

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之数字自动增长相关推荐

  1. Bootstrap4+MySQL前后端综合实训-Day04-PM【PowerDesigner 图形化数据库设计软件(设置依赖关系、自动增长主键、生成sql语句)、SQLyog软件(备份数据库)】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 PowerDesigner软件 5张数据表之间的依赖关系图 设置数据表的自动增长主键 ...

  2. Android EditText设置弹出数字输入法键盘

    Android EditText 设置弹出数字输入法键盘 首先设置只能输入数字: <EditText Android:id="@+id/edit_digit_input" a ...

  3. 《SQL Server企业级平台管理实践》读书笔记——SQL Server如何设置自动增长和自动收缩项...

    SQL Server允许用户设置数据库初始值和最大值,可以通过自动增长或者自动收缩进行配置.通过这些配置,我们可以防止数据库空间问题而导致的应用程序修改失败或者SQL Server磁盘空间耗尽的事情发 ...

  4. 在Excel中如何让数字自动增长?

    给统计名单之类的excel数据表格加编号,是工作中难免会遇到的问题.那需要怎么办呢?一个个输入数字当然是不可能的,excel本身提供了一个叫[填充序列]的功能,就是用来应对数字在excel列或行中的自 ...

  5. android开发游记:仿支付宝余额数字累加滚动效果的实现

    支付宝更新9.0后,细心的朋友会发现新增了一个动画效果,就是进入我的钱包的时候,我的余额会有一段滚动显示的动画效果,比如说你有100块,余额就从0滚动到100,看到自己的钱在不断涨,让我们这些穷屌丝莫 ...

  6. (转)android EditText 设置弹出数字输入法键盘

    首先设置只能输入数字: [html] view plaincopy <EditText android:id="@+id/edit_digit_input" android: ...

  7. Android自定义View之数字密码锁

    距上次写博客已经快一年了,计划赶不上变化,种种原因加上自己的拖延症= =. 之前想好的每月一文还是没能坚持下来,趁着闲暇之余撸一篇,希望之后能够继续坚持总结的习惯.最近项目上用到一个密码加锁功能,需要 ...

  8. Android开发自定义View实现数字与图片无缝切换的2048

    本博客地址:http://blog.csdn.net/talentclass_ctt/article/details/51952378 最近在学自定义View,无意中看到鸿洋大神以前写过的2048(附 ...

  9. Android开发之Glide设置View背景图的方法

    先看效果图: 看了下效果还可以,虽然此方法在Glide4.1.2版本已过时但是还可以使用 针对Glide4.0以上版本设置View背景图方法如下:Kotlin版本 package com.xiayiy ...

最新文章

  1. iOS autolayout 约束冲突添加symbol breakpoint
  2. Nodejs Express dockerfile最佳实践
  3. h5新增的属性php,HTML5中form的新增属性或元素
  4. JSP中文乱码问题终极解决方案(转)
  5. 机器学习入门数学书籍推荐(部分资源有下载链接)
  6. uva 10047 the monocyle (四维bfs)
  7. Linux--shell编程原理--03
  8. 电商数据分析方法和指标整理
  9. 计算机科学导论课后总结
  10. 测试工程师六大能力模型
  11. windows/ubuntu系统下安装teamview教程
  12. sap的pod确认_PO确认控制
  13. 太阳时角、太阳高度角、天顶角、太阳方位角和剖面角计算的Python程序
  14. Excel怎么在指定文本后面插入短横线符号
  15. 傲娇的性格、逗比的语气,和聊天机器人谈情说爱可行吗?
  16. 数据透视表 | 字段的组合
  17. 怀孕也就36-40周足够,而芯片54周交期伤心欲绝了!
  18. 请问苹果x是如何建文件夹_Mac OS X中创建新文件夹的几种方法
  19. Google针对非 SDK 接口的限制
  20. 业聚医疗通过聆讯:上半年营收6885万美元 钱永勋为实控人

热门文章

  1. 使用IntelliJ IDEA的原因
  2. OpenJPA:内存泄漏案例研究
  3. Spring3 + JPA2 + Java EE6 App Server =配置混乱
  4. 罚款200元的交通违法行为
  5. Java 打 jar 包时,MANIFEST.MF 文件详解
  6. u盘装系统学计算机好,教你如何使用u盘做系统
  7. 深度学习pytorch--多层感知机(二)
  8. 关东升python从小白到大牛_《Python从小白到大牛》第3章 第一个Python程序
  9. 【开源项目】基于QT录制PCM音频实例详细
  10. 最大公约数简便算法_求最大公约数的4种算法