android数字累加,Android自己设置View之数字自动增长

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

Idea来自金山词霸App的单词计数,下面先放图

89f67e0db0d727b23329d160243f7e49.gifautoNumber.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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring条件注解有哪些_Spring4有条件

spring条件注解有哪些Spring 4引入了一个称为Conditional的新功能,该功能针对于生成bean的Spring组件,并注视这些bean的生成,实质上,它提供了一种条件生成bean的方法。 考虑一个简单的例子: 我有一个名为“ Customer…

settimeout怎么用_怎么实现一个3d翻书效果

本篇主要讨论以下两种翻书动画的实现:第一种是整页翻转的效果:这种整页翻转的效果主要是做rotateY的动画,并结合一些CSS的3d属性实现。第二种折线翻转的效果,如下图所示:主要是通过计算页面翻折过来的位置。这两种原理…

springboot怎么返回404_SpringBoot(二十)_404返回统一异常处理结果

1.修改application.properties文件# 自定义404#出现错误时, 直接抛出异常spring.mvc.throw-exception-if-no-handler-foundtrue#不要为我们工程中的资源文件建立映射spring.resources.add-mappingsfalse2.添加controller增强处理if (e instanceof NoHandlerFoundException) {re…

android 通知垃圾回收,Android中垃圾回收日志信息

原因GC_CONCURRENTfreed 178K, 41% free 3673K/6151K, external 0K/0K, paused 2ms2msGC_EXPLICITfreed 6K, 41% free 3667K/6151K, external 0K/0K, paused 29ms红颜色标出的部分就是垃圾回收触发的原因。在Android中有五种类型的垃圾回收触发原因。GC_CONCURRENT当堆内存增长…

5个令人震惊的统计数据证明日志不足

事实证明,我们都犯有记录不当行为的罪行。 不相信我们吗? 这些统计数据可能会改变您的想法 当人们提出带有明显答案的问题时,这非常令人不快,因此,我不会坐在这里问您和您的团队是否使用日志文件来监视预生产和生产环…

linearregression_机器学习-TensorFlow建模过程 Linear Regression线性拟合应用

TensorFlow是咱们机器学习领域非常常用的一个组件,它在数据处理,模型建立,模型验证等等关于机器学习方面的领域都有很好的表现,前面的一节我已经简单介绍了一下TensorFlow里面基础的数据结构即:Tensor和Dataset&#x…

yum配置文件 重启后还原_江湖救急 : CentOS7.5 /usr 目录误删, 恢复操作.

一.概述前两天在网上找了个脚本,看着没问题,直接复制粘贴了. 结果有特殊字符,直接换行.执行了 rm -rf /usr 目录. 然后就傻了,各种操作命令找不到, 无法登陆.......万分幸运的是,数据没丢,要是丢了.那我就要命了1.如果可以进入操作系统,并且可以正常操作的话. 依旧会存在隐患.…

html页面调用存储过程,用WebBrowser实现HTML界面的应用

HTML的界面有以下特点:图文混排,格式灵活,可以包含Flash、声音和视频等,实现图文声像的多媒体界面,而且易于建立和维护。另外,HTML的显示环境一般机器上都具备,通常不需要安装额外的软件。当然&…

凡事多找找自己的原因_布袋除尘器灰斗积粉过多、堵灰该咋办?别急,从这8个方面找原因...

灰斗布置在袋室的下部,它除了存放收集下来的粉尘以外,还作为下进气总管使用,当含尘气体进入袋室前先进入灰斗,由于灰斗内容积较大,使得气流速度降低,加之气流方向的改变,使得较粗的尘粒在这里得…

javaone_Javaone 2013评论

javaonetl; dr我今年再次参加了Javaone。 好玩。 星期日 会议于周日开幕,进行了用户组会议和主要主题演讲。 由于我正在运行Java大学关于Java SE 7和8的新功能的培训课程,因此我实际上无法参加这些课程。该课程涵盖了Java 7的项目硬币,NIO 2…

python怎么改变字体大小_Python-docx 整体修改或者部分修改文字的大小和字体类型...

Python中可以用docx来生成word文档,docx中可以自定义文字的大小和字体等。 其中要整体修改文字的字体大小和字体,可以用以下方法: newfile docx.Document() newfile.styles[Normal].font.name Times New Roman newfile.styles[Normal]._ele…

html输入框点击后去掉默认文字颜色,input的一些默认样式的更改

1.Chrome浏览器下,记住密码之后,输入框为黄色的背景,/*忘记密码后的黄色背景的去除*//*只对非透明的纯色背景有效*/input:-webkit-autofill{-webkit-box-shadow: 0 0 0 1000px white inset !important;}/*适用于背景为透明色的输入框*/input:…

cad设计院常用字体_如何把CAD图纸坐标转换成现场坐标?

使用CAD软件画建筑施工图是很常见的,特别是在施工现场,为了不受现场场地落差的影响,需要使用全站仪,但是使用全站仪需要把CAD图纸转换成CAD坐标,很多人可能并不知道该怎么转换,下面我们就来介绍一下如何把图…

sqlserver select 数值精度_SQL Server读懂语句运行 (二) SET STATISTICS IO ON

对于语句的运行,除了执行计划本身,还有一些其他因素要考虑,例如语句的编译时间、执行时间、做了多少次磁盘读等。这些信息对分析问题很有价值。1 SET STATISTICS TIME ON 2 SET STATISTICS IO ON 3 SET STATISTICS PROFILE ON今天&#xff0c…

.net webservice studio调用方法传参_springboot整合WebService简单版

一.什么是webservice这里给大家分享一下我们的专栏《Java 进阶集中营》,每天都会给大家分享一个最新的java技术内容,有优秀的技术讯息,也欢迎分享在我的专栏里。JAVA 进阶集中营​zhuanlan.zhihu.com二.springboot整合webservice 整合webserv…

如何用html5编写彩色同心圆,HTML5 canvas 同心圆动画

原创。产生的动画效果:* 生成文字渐变颜色随时间的变化。* 使得一组同心圆的取色,随时间而变化1.[图片] open_source.png2.[代码][JavaScript]代码var cnew Array("red","blue","cyan","darkGray","green&…

swiper如何防止冲突_冲突管理:化冲突为机会的8个谈话技巧,从此告别争吵和冷战...

书语人间:每天10分钟,读懂1本好书,点击文章右边的「关注」,一起成长大家好呀~今天,灵遥将继续为你带来《解决冲突的关键技巧:如何增加你的有效社交》一书的共读。上一篇里,我们读到了让聆听和谈…

spss非线性回归分析步骤_SPSS与简单线性回归分析

对数据进行简单线性回归分析常按照以下步骤:1根据研究目的确定因变量和自变量现研究某服装店销售额和客流量的关系,销售额为因变量,客流量为自变量,共计36条数据。2 判断有无异常值判断方法:⑴通过绘制散点图直观观察&…

计算机网络由核心通信,计算机网络系统是由通信子网和什么构成的

计算机网络系统是一个集计算机硬件设备、通信设施、软件系统及数据处理能力为一体的,能够实现资源共享的现代化综合服务系统。计算机网络系统的组成可分为三个部分,即硬件系统,软件系统及网络信息系统。1. 硬件系统硬件系统是计算机网络的基础。硬件系统有计算机、通信设备、连…

jwt私钥和公钥怎么获取_jwt 用rsa公钥私钥进行验证(python发送,java接受)

JWT的主要应用场景身份认证在这种场景下,一旦用户完成了登陆,在接下来的每个请求中包含JWT,可以用来验证用户身份以及对路由,服务和资源的访问权限进行验证。由于它的开销非常小,可以轻松的在不同域名的系统中传递&…