android 比分牌效果,Android自定义控件实现球赛比分条效果

本文实例为大家分享了Android实现球赛比分条效果的具体代码,供大家参考,具体内容如下

效果图如下所示:

cfa2b8352cf7cfb6bebcf89b079cdf6f.png

069a0b4db21dc05abb70b9bbd8cb94e7.png

该控件需要输入两个参数,左边的得分数和右边的的分数

然后根据两边的得分的比例绘制中间的比分条

首先将控件的宽度平均分配为10分,第一份和最后一份分别绘制左边的比分数字和右边的比分数字

中间的8分宽度绘制比分条

根据左右两个比分所占的比例,绘制两个两条首位相连的线段即可

完整代码如下:

public class CustomScoreBar extends View {

private Context context;

private TypedValue typedValue;

private static final int DEGREE =10;

private int mColorLeft, mColorRight;

private int mScoreLeft, mScoreRight;

//各种画笔

private Paint paintBar =new Paint();

private Paint paintText=new Paint();

public CustomScoreBar(Context context) {

super(context);

this.context=context;

init();

}

public CustomScoreBar(Context context, AttributeSet attrs) {

super(context, attrs);

this.context=context;

init();

}

public CustomScoreBar(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

this.context=context;

init();

}

private void init() {

//初始化数据,默认属性

mColorLeft = Color.rgb(95, 112, 72);

mColorRight = Color.rgb(69, 91, 136);

mScoreLeft =5;

mScoreRight =8;

typedValue=new TypedValue();

context.getTheme().resolveAttribute(R.attr.maintextclor,typedValue,true);

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

float width=getWidth();

float height=getHeight();

//文字画笔设置

paintText.reset();

paintText.setAntiAlias(true);

//文字的大小取控件宽度的十分之一和高度的二分之一的最小值

paintText.setTextSize(Math.min(width / DEGREE, height) / 2);

paintText.setColor(getResources().getColor(typedValue.resourceId));

/*Paint.Align.CENTER:The text is drawn centered horizontally on the x,y origin*/

paintText.setTextAlign(Paint.Align.CENTER);

//绘制中间的横线的画笔

paintBar.reset();

paintBar.setAntiAlias(true);

paintBar.setStyle(Paint.Style.STROKE);

//画笔的高度为控件高度的十分之一

paintBar.setStrokeWidth(height/10);

//测量字体

Paint.FontMetrics fontMetrics = paintText.getFontMetrics();

float textBaseLineOffset = (fontMetrics.bottom - fontMetrics.top) / 2 - fontMetrics.bottom;

//绘制左边的比分文字

//把控件宽度分为10份,第一份和第十份分别绘制左边和右边的文字

//中间的8份宽度绘制比分条

canvas.drawText("" + mScoreLeft, width / DEGREE / 2, height / 2 + textBaseLineOffset, paintText);

paintBar.setColor(mColorLeft);

// drawLine(float startX, float startY, float stopX, float stopY,Paint paint)*/

//按照比例绘制左边比分对应长度的比分条

canvas.drawLine(width / DEGREE, height / 2, width / DEGREE + width * (DEGREE - 2) / DEGREE * mScoreLeft / (mScoreLeft + mScoreRight), height / 2, paintBar);

//测量右边的比分文字

fontMetrics = paintText.getFontMetrics();

textBaseLineOffset = (fontMetrics.bottom - fontMetrics.top) / 2 - fontMetrics.bottom;

//在控件宽度的最后十分之一绘制右边的比分数字

canvas.drawText("" + mScoreRight, width-width / DEGREE / 2, height / 2 + textBaseLineOffset,paintText);

paintBar.setColor(mColorRight);

//绘制右边的比分对应长度的比分条

canvas.drawLine(width/ DEGREE +width*(DEGREE -2)/ DEGREE * mScoreLeft /(mScoreLeft + mScoreRight),height/2,width*(DEGREE -1)/ DEGREE,height/2, paintBar);

}

public void setScores(int score1, int score2) {

this.mScoreLeft =score1;

this.mScoreRight =score2;

invalidate();

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

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

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

相关文章

java写一个随机球赛

//郑州轻工业大学 //题号:实验三 第三题 //题目:设计如下接口和类: (1)犯规接口,包括三种情况:接触犯规、干扰犯规、拖延犯规。 (2)得分接口,包括两种情况&am…

爬球赛回放

1.导入 from requests_html import HTMLSession from requests_html import HTML import json import pyprind 2.分析网站 通过用户的输入感兴趣的球队获取相应的视频 types input(请输入你感兴趣的球队:) if type(types) str:pass else: # typelistpass 3.获取一到四节…

谷歌裁员1.2万人....

点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~中文详细注释的开源…

再次暗示裁员?谷歌削减内部研发团队 Area 120 一半项目

整理 | 于轩 出品 | CSDN(ID:CSDNnews) 上周,谷歌CEO桑达尔皮查伊在Code Conference大会上表示,他希望将公司的效率提高20%,当时一些业内人士认为,这是谷歌要裁员的信号。 近日&#xff…

谷歌突然收紧绩效考评!要裁员不明说,CEO被员工开会「围攻」

【导读】年底将至,突然收紧绩效标准,实施定额签到,一向浓眉大眼的谷歌也要「减员增效」了么?面对员工诘问,谷歌CEO无奈以对。一些员工认为,裁员只是时间问题。 如果说,一家之前以关怀员工著称的…

Google裁掉了最优秀的员工

Google的非官方座右铭是“不作恶”,虽然这句话在2018年从Google行为准则中曾被悄悄拿掉,但是很多人还是认为Google要比其他公司好一点。 毕竟,Google带来了一大批改变世界的技术: 最强的搜索引擎google.comGmail, GMap宣告Web2.0时…

谷歌裁员1.2万人,CEO年薪达15亿,网友:“地表最强 CEO !”

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life) 在竞争激烈的科技行业,大佬的薪酬往往是敏感话题。 年初时,曾拿下 1.25 亿美元年终奖的“地表最强打工人”、苹果公司 CEO 库克,因降薪 40% 的话题登…

谷歌裁员细节曝光:开源主管被裁,61岁程序员在线求职,有人60天找不到工作就被遣返

“开源”谷歌,竟然连开源主管也给裁了。 随着更多裁员细节曝光,不少谷歌开源项目办公室OSPO和其他开源工作的高管已经被裁。 其中甚至还包括了开源运动“先锋”,18年前创立OSPO, Chris DiBona;Samba联合创始人、现年…

微软杀疯了!接入ChatGPT后首次交卷,一季度营收528亿美元

来源:新智元 ChatGPT的这波红利,微软是赚到了。 近日,微软公布了2023年第一季度财报,营收528亿美元。 财报发布后,微软盘后价,大涨9%。 收盘后,微软市值为2.05万亿美元,成为全球市值…

考研政治分析题

背肖八肖四、考场回答大题的抽象模板 1:立论/总起 2:定义 /本质 3:性质/属性 4:辩证统一关系 5:作用 6:不坚持xx的后果(恶果) 7:只有…

我的大模型观:我眼中的LLM

文章目录 大模型是有智能的。也许,大模型是一场骗局?从头训练or微调我想象中的大模型架构大厂的大模型中小厂和个人开发该何去何从? 今年,大模型火的一塌糊涂。最近几个月paper with code上,前几名的论文几乎都是生成模…

高考志愿填报提示词指南;用孩子教科书训练家教GPT;AI提示工程师6项必备技能;创业者最核心的特质 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 Google 警告员工:不要使用自家 Bard 生成的代码 上周,谷歌警告员工不要使用自家AI聊天机器人 Bard 生成的代码…

在我的指导下,ChatGPT写了一个木马!

最近玩这个ChatGPT是越来越上头了。 我一直在思考着,这玩意儿除了拿来玩,能不能真正帮助我们工作? 昨天晚上,在我的“指导”下,我让这家伙帮我写了一个“木马”。 当然,之所以要打上引号,是因…

stanfordcorenlp识别中文人名实战记录及心得

前言: 一直在找一个能够精确识别中文人名的自然语言处理工具包,期间也找到了stanfordcorenlp, 并且经过在网上的大量摸坑探索之后,还是成功使用上了stanfordcorenlp,但是经过后期比较后,发现精确度还是没有达到满意的效果,后期发现了精度更高一些的jieba和paddlehub, 但还是把这…

apple登录服务端验证

Sign In With Apple 从登陆到服务器验证 服务端向苹果请求验证 手机端需要提交 user 、authorizationCode 、 identityToken 字段信息(code和token字段苹果返回的是 base64 Data 形式,手机端可以先转换 base64 字符串之后在给服务器)到服务器…

iOS 苹果登录(第三方登录)

Sign In with Apple是iOS 13的新增功能 所以现在苹果的app有第三方登录的功能需要加上苹果的登录(不然审核时会被拒掉) 一、证书文件配置 登录开发者账号,创建Bundle ID时 勾选 Sign In With Apple ,开启登录功能(勾…

Apple ID很久没有登录,使用邮件验证修改手机号的方法

背景:没有已登录的苹果设备 手机号已经更换 知道登录密码(不知道登录密码,在官网修改,也是通过邮件验证) 解决方法 1、登录账号和密码,会提示需要输入验证码。点击“未收到验证码” 2.点击第二项&#x…

Sign In with Apple - 使用苹果账号登录你的应用

编辑:老峰,作者:KANGZUBIN 来源:小专栏《WWDC19 内参》 苹果在 9 月 12 号更新了审核指南,加入 4.8 Sign in with Apple 一条,要求所有使用 第三方登录 的 App,都 必须接入 Sign in with Apple。…

IOS企业应用出现无法验证,需要网络连接以在这台iPad上验证。接入互联网并重试

这两天出现一个很奇怪的现象,IOS 13.5.1版本以上的系统安装应用时企业APP无法信任,但是IOS 13.5.1版本以下又可以信任。然后我做了以下操作之后就可以正常安装和信任了。 1.更换新的Development证书,原先的Development证书类型是Development&…