網站首頁 編程語言 正文
本文實例為大家分享了Android實現水平帶刻度進度條的具體代碼,供大家參考,具體內容如下
效果
1、attrsl.xml
<!-- 帶刻度的 進度條 --> ? ? <declare-styleable name="HorizontalProgressSeekBar"> ? ? ? ? <attr name="progressColor" /> ? ? ? ? <attr name="max" /> ? ? ? ? <attr name="progressContentIcon" format="reference" /> ? ? ? ? <attr name="progressGoalIcon" format="reference" /> ? ? ? ? <attr name="progressGoalIconWidthHeight" format="dimension" /> ? ? ? ? <attr name="progressContentIconHeight" format="dimension" /> ? ? ? ? <attr name="progressContentIconWidth" format="dimension" /> ? ? ? ? <attr name="progressDistance" format="dimension" /> </declare-styleable>
2、HorizontalProgressSeekBar.class?
public class HorizontalProgressSeekBar extends View { ? ? private int viewWidth; ? ? private int viewHeight; ? ? private Paint strokePain; ? ? private List<Integer> goalTimes; ? ? private int maxData = 80; ? ? private Bitmap progressGoalBitmap; ? ? private Bitmap progressContentBitmap; ? ? private float proceedTime; ? ? private int PROGRESS_COLOR = Color.parseColor("#FE78A6"); ? ? private float goalProportion; ? ? private Paint backgroundPaint; ? ? private int distance = 10; ? ? private int distancePxMax; ? ? private int distancePxMin; ? ? private int distancePx; ? ? private RectF rectF; ? ? private List<Integer> bitmapType; ? ? private Bitmap bitmapHomeCornerKick; ? ? private Bitmap bitmapHomeTeamRedCard; ? ? private Bitmap bitmapHomeTeamScored; ? ? private Bitmap bitmapVisitingCornerKick; ? ? private Bitmap bitmapVisitingTeamScored; ? ? private List<BollProgressDataBean> homeTeamIncidentList; ? ? private List<BollProgressDataBean> visitingTeamIncidentList; ? ? private BollProgressDataBean homeTeamIncidentListBean; ? ? private BollProgressDataBean visitingTeamIncidentListBean; ? ? private RectF rectFStrokePain; ? ? private int bitmapHomeCornerKickWidth; ? ? private int bitmapHomeTeamScoredWidth; ? ? ? /** ? ? ?* 繪制進球 時刻上主隊 ? ? ?* ? ? ?* @param canvas ? ? ?*/ ? ? private float incidentTimeNumber; ? ? ? public HorizontalProgressSeekBar(Context context) { ? ? ? ? this(context, null); ? ? } ? ? ? public HorizontalProgressSeekBar(Context context, AttributeSet attrs) { ? ? ? ? this(context, attrs, 0); ? ? } ? ? ? public HorizontalProgressSeekBar(Context context, AttributeSet attrs, int defStyleAttr) { ? ? ? ? super(context, attrs, defStyleAttr); ? ? ? ? TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.HorizontalProgressSeekBar); ? ? ? ? try { ? ? ? ? ? ? PROGRESS_COLOR = a.getColor(R.styleable.HorizontalProgressSeekBar_progressColor, PROGRESS_COLOR); ? ? ? ? ? ? maxData = a.getInt(R.styleable.HorizontalProgressSeekBar_max, maxData); ? ? ? ? ? ? int progressContentIconWidth = (int) a.getDimension(R.styleable.HorizontalProgressSeekBar_progressContentIconWidth, dipToPx(22)); ? ? ? ? ? ? int progressContentIconHeight = (int) a.getDimension(R.styleable.HorizontalProgressSeekBar_progressContentIconHeight, dipToPx(25)); ? ? ? ? ? ? progressContentBitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getContext().getResources(), ? ? ? ? ? ? ? ? ? ? a.getResourceId(R.styleable.HorizontalProgressSeekBar_progressContentIcon, R.mipmap.rest)), progressContentIconWidth, progressContentIconHeight, true); ? ? ? ? ? ? int progressGoalIconWidthHeight = (int) a.getDimension(R.styleable.HorizontalProgressSeekBar_progressGoalIconWidthHeight, dipToPx(22)); ? ? ? ? ? ? progressGoalBitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getContext().getResources(), ? ? ? ? ? ? ? ? ? ? a.getResourceId(R.styleable.HorizontalProgressSeekBar_progressGoalIcon, R.drawable.share)), progressGoalIconWidthHeight, progressGoalIconWidthHeight, true); ? ? ? ? ? ? ? bitmapHomeCornerKick = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getContext().getResources(), ? ? ? ? ? ? ? ? ? ? R.mipmap.home_corner_kick_xiao), progressGoalIconWidthHeight, progressGoalIconWidthHeight, true); ? ? ? ? ? ? bitmapHomeTeamRedCard = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getContext().getResources(), ? ? ? ? ? ? ? ? ? ? R.mipmap.home_team_red_card_xiao), progressGoalIconWidthHeight, progressGoalIconWidthHeight, true); ? ? ? ? ? ? bitmapHomeTeamScored = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getContext().getResources(), ? ? ? ? ? ? ? ? ? ? R.mipmap.home_team_scored_xiao), progressGoalIconWidthHeight, progressGoalIconWidthHeight, true); ? ? ? ? ? ? bitmapVisitingCornerKick = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getContext().getResources(), ? ? ? ? ? ? ? ? ? ? R.mipmap.visiting_corner_kick_xiao), progressGoalIconWidthHeight, progressGoalIconWidthHeight, true); ? ? ? ? ? ? bitmapVisitingTeamScored = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getContext().getResources(), ? ? ? ? ? ? ? ? ? ? R.mipmap.visiting_team_scored_xiao), progressGoalIconWidthHeight, progressGoalIconWidthHeight, true); ? ? ? ? ? ? ? ? distancePx = ?a.getDimensionPixelOffset(R.styleable.HorizontalProgressSeekBar_progressDistance,dipToPx(distance)); ? ? ? ? ? ? ? ? if (bitmapHomeCornerKick != null){ ? ? ? ? ? ? ? ? bitmapHomeCornerKickWidth = bitmapHomeCornerKick.getWidth(); ? ? ? ? ? ? } ? ? ? ? ? ? ? if (bitmapHomeTeamScored != null){ ? ? ? ? ? ? ? ? bitmapHomeTeamScoredWidth = bitmapHomeTeamScored.getWidth(); ? ? ? ? ? ? } ? ? ? ? ? } finally { ? ? ? ? ? ? a.recycle(); ? ? ? ? } ? ? ? ? ? distancePxMax = dipToPx(distance + 2); ? ? ? ? distancePxMin = dipToPx(distance - 2); ? ? ? ? strokePain = new Paint(); ? ? ? ? backgroundPaint = new Paint(); ? ? } ? ? ? /** ? ? ?* 設置進球時間狀態 ? ? ?* ? ? ?* @param goalTimes ? ? ?*/ ? ? public void setGoalTime(int max, float proceedTime, List<Integer> goalTimes) { ? ? ? ? this.maxData = max; ? ? ? ? this.proceedTime = proceedTime; ? ? ? ? this.goalTimes = goalTimes; ? ? ? ? invalidateView(); ? ? } ? ? ? /** ? ? ?* 設置進球時間狀態 ? ? ?* max 計算90由于中間遮擋效果,所以傳遞按照100? ? ? ?* homeTeamIncidentList 主隊時間和事件 ? ? ?* visitingTeamIncidentList ?客隊時間和事件 ? ? ?*/ ? ? public void setGoalTimeBitmap(int max, float proceedTime, List<BollProgressDataBean> homeTeamIncidentList, List<BollProgressDataBean> visitingTeamIncidentList) { ? ? ? ? this.maxData = max; ? ? ? ? this.proceedTime = proceedTime; ? ? ? ? this.homeTeamIncidentList = homeTeamIncidentList; ? ? ? ? this.visitingTeamIncidentList = visitingTeamIncidentList; ? ? ? ? invalidateView(); ? ? } ? ? ? public void setBitmapType(List<Integer> bitmapType) { ? ? ? ? this.bitmapType = bitmapType; ? ? ? ? invalidateView(); ? ? } ? ? ? @Override ? ? protected void onSizeChanged(int w, int h, int oldw, int oldh) { ? ? ? ? super.onSizeChanged(w, h, oldw, oldh); ? ? ? ? viewWidth = w; ? ? ? ? viewHeight = h; ? ? } ? ? ? @Override ? ? protected void onDraw(Canvas canvas) { ? ? ? ? super.onDraw(canvas); ? ? ? ? drawProgress(canvas); ? ? ? ? drawBorder(canvas); ? ? ? ? drawMeasureBorder(canvas); ? ? ? ? drawImage(canvas); ? ? ? ? drawGoalTime(canvas); ? ? ? ? drawGoalTimeButton(canvas); ? ? } ? ? ? /** ? ? ?* 繪制空心 長方形 ? ? ?* ? ? ?* @param canvas ? ? ?*/ ? ? private void drawBorder(Canvas canvas) { ? ? ? ? strokePain.reset(); ? ? ? ? strokePain.setStyle(Paint.Style.STROKE); ? ? ? ? strokePain.setAntiAlias(true); ? ? ? ? strokePain.setStrokeWidth(2); ? ? ? ? strokePain.setColor(Color.parseColor("#151515")); ? ? ? ? rectFStrokePain = new RectF(distancePx, viewHeight * 0.35f, viewWidth - distancePx, viewHeight * 0.65f); ? ? ? ? canvas.drawRect(rectFStrokePain, strokePain); ? ? } ? ? ? private void drawProgress(Canvas canvas) { ? ? ? ? strokePain.reset(); ? ? ? ? strokePain.setStyle(Paint.Style.FILL); ? ? ? ? strokePain.setAntiAlias(true); ? ? ? ? strokePain.setStrokeWidth(2); ? ? ? ? strokePain.setColor(Color.parseColor("#258940")); ? ? ? ? if (proceedTime <= 45) { ? ? ? ? ? ? rectF = new RectF(distancePx, viewHeight * 0.35f, ((float) viewWidth - 2 * distancePx) * (proceedTime / maxData) + distancePx, viewHeight * 0.65f); ? ? ? ? } else { ? ? ? ? ? ? if (proceedTime >= 90) { ? ? ? ? ? ? ? ? rectF = new RectF(distancePx, viewHeight * 0.35f, ((float) viewWidth - 2 * distancePx) * ((proceedTime + distance) / maxData) + distancePx, viewHeight * 0.65f); ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? rectF = new RectF(distancePx, viewHeight * 0.35f, ((float) viewWidth - 2 * distancePx) * ((proceedTime + distance) / maxData) + distancePx, viewHeight * 0.65f); ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? ? canvas.drawRect(rectF, strokePain); ? ? } ? ? ? /** ? ? ?* 繪制刻度 ? ? ?* ? ? ?* @param canvas ? ? ?*/ ? ? private void drawMeasureBorder(Canvas canvas) { ? ? ? ? strokePain.setStyle(Paint.Style.STROKE); ? ? ? ? float eachWidth = (viewWidth - 2 * distancePx) / 20; ? ? ? ? strokePain.setStrokeWidth(2); ? ? ? ? int drawNoNumber = 20 / 2; ? ? ? ? strokePain.setColor(Color.parseColor("#FF424242")); ? ? ? ? for (int i = 1; i <= 19; i++) { ? ? ? ? ? ? //長短線條 ? ? ? ? ? ? if (drawNoNumber != i && i != 9 && i != 11) { ? ? ? ? ? ? ? ? if (i % 2 == 0) { ? ? ? ? ? ? ? ? ? ? canvas.drawLine(eachWidth * i + distancePx, viewHeight * 0.66f, eachWidth * i + distancePx, viewHeight * 0.45f, strokePain); ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? canvas.drawLine(eachWidth * i + distancePx, viewHeight * 0.66f, eachWidth * i + distancePx, viewHeight * 0.55f, strokePain); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? } ? ? ? /** ? ? ?* 繪制H 圖片 ? ? ?* ? ? ?* @param canvas ? ? ?*/ ? ? private void drawImage(Canvas canvas) { ? ? ? ? if (progressContentBitmap != null) { ? ? ? ? ? ? canvas.drawBitmap(progressContentBitmap, ?(int) (viewWidth / 2.0 - progressContentBitmap.getWidth() / 2.0 ), (int) (viewHeight / 2.0 - (progressContentBitmap.getHeight()) / 2.0f), strokePain); ? ? ? ? } ? ? ? } ? ? ? ? private void drawGoalTime(Canvas canvas) { ? ? ? ? //主隊比賽中的事件 ?14角球 2紅牌 1進球 ? ? ? ? ? if (homeTeamIncidentList != null && homeTeamIncidentList.size() > 0) { ? ? ? ? ? ? for (int i = 0; i < homeTeamIncidentList.size(); i++) { ? ? ? ? ? ? ? ? homeTeamIncidentListBean = homeTeamIncidentList.get(i); ? ? ? ? ? ? ? ? String incidentTime = homeTeamIncidentListBean.getIncidentTime(); ? ? ? ? ? ? ? ? String incidentType = homeTeamIncidentListBean.getIncidentType(); ? ? ? ? ? ? ? ? if (incidentTime != null) { ? ? ? ? ? ? ? ? ? ? try { ? ? ? ? ? ? ? ? ? ? ? ? incidentTimeNumber = Float.parseFloat(incidentTime); ? ? ? ? ? ? ? ? ? ? } catch (Exception e) { ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? if (incidentTimeNumber == 0) { ? ? ? ? ? ? ? ? ? ? if (incidentType != null) { ? ? ? ? ? ? ? ? ? ? ? ? if ("14".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncidentZero(canvas, bitmapHomeCornerKick, incidentTimeNumber, 0.15f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("2".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncidentZero(canvas, bitmapHomeTeamRedCard, incidentTimeNumber, 0.25f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("1".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncidentZero(canvas, bitmapHomeTeamScored, incidentTimeNumber, 0.25f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } else if (incidentTimeNumber <= 45 && incidentTimeNumber > 0) { ? ? ? ? ? ? ? ? ? ? if (incidentType != null) { ? ? ? ? ? ? ? ? ? ? ? ? if ("14".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeTeamIncident(canvas, bitmapHomeCornerKick, incidentTimeNumber, 0.15f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("2".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeTeamIncident(canvas, bitmapHomeTeamRedCard, incidentTimeNumber, 0.25f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("1".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeTeamIncident(canvas, bitmapHomeTeamScored, incidentTimeNumber, 0.25f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? } else if (incidentTimeNumber > 45 && incidentTimeNumber < 90) { ? ? ? ? ? ? ? ? ? ? if (incidentType != null) { ? ? ? ? ? ? ? ? ? ? ? ? if ("14".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncident(canvas, bitmapHomeCornerKick, incidentTimeNumber, 0.15f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("2".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncident(canvas, bitmapHomeTeamRedCard, incidentTimeNumber, 0.25f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("1".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncident(canvas, bitmapHomeTeamScored, incidentTimeNumber, 0.25f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } else if (incidentTimeNumber >= 90) { ? ? ? ? ? ? ? ? ? ? if (incidentType != null) { ? ? ? ? ? ? ? ? ? ? ? ? incidentTimeNumber=90; ? ? ? ? ? ? ? ? ? ? ? ? if ("14".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncidentNinety(canvas, bitmapHomeCornerKick, incidentTimeNumber, 0.15f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("2".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncidentNinety(canvas, bitmapHomeTeamRedCard, incidentTimeNumber, 0.25f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("1".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncidentNinety(canvas, bitmapHomeTeamScored, incidentTimeNumber, 0.25f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? ? } ? ? ? /** ? ? ?* 繪制進球 時刻下客隊 ? ? ?* ? ? ?* @param canvas ? ? ?*/ ? ? private void drawGoalTimeButton(Canvas canvas) { ? ? ? ? ? if (visitingTeamIncidentList != null && visitingTeamIncidentList.size() > 0) { ? ? ? ? ? ? for (int i = 0; i < visitingTeamIncidentList.size(); i++) { ? ? ? ? ? ? ? ? visitingTeamIncidentListBean = visitingTeamIncidentList.get(i); ? ? ? ? ? ? ? ? String incidentTime = visitingTeamIncidentListBean.getIncidentTime(); ? ? ? ? ? ? ? ? String incidentType = visitingTeamIncidentListBean.getIncidentType(); ? ? ? ? ? ? ? ? if (incidentTime != null) { ? ? ? ? ? ? ? ? ? ? try { ? ? ? ? ? ? ? ? ? ? ? ? incidentTimeNumber = Float.parseFloat(incidentTime); ? ? ? ? ? ? ? ? ? ? } catch (Exception e) { ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? if (incidentTimeNumber == 0) { ? ? ? ? ? ? ? ? ? ? if (incidentType != null) { ? ? ? ? ? ? ? ? ? ? ? ? if ("14".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncidentZero(canvas, bitmapVisitingCornerKick, incidentTimeNumber, 0.56f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("2".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncidentZero(canvas, bitmapHomeTeamRedCard, incidentTimeNumber, 0.45f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("1".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncidentZero(canvas, bitmapVisitingTeamScored, incidentTimeNumber, 0.45f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } else if (incidentTimeNumber <= 45 && incidentTimeNumber > 0) { ? ? ? ? ? ? ? ? ? ? if (incidentType != null) { ? ? ? ? ? ? ? ? ? ? ? ? if ("14".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeTeamIncident(canvas, bitmapVisitingCornerKick, incidentTimeNumber, 0.56f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("2".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeTeamIncident(canvas, bitmapHomeTeamRedCard, incidentTimeNumber, 0.45f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("1".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeTeamIncident(canvas, bitmapVisitingTeamScored, incidentTimeNumber, 0.45f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? } else if (incidentTimeNumber > 45 && incidentTimeNumber < 90) { ? ? ? ? ? ? ? ? ? ? if (incidentType != null) { ? ? ? ? ? ? ? ? ? ? ? ? if ("14".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncident(canvas, bitmapVisitingCornerKick, incidentTimeNumber, 0.56f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("2".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncident(canvas, bitmapHomeTeamRedCard, incidentTimeNumber, 0.45f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("1".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncident(canvas, bitmapVisitingTeamScored, incidentTimeNumber, 0.45f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } else if (incidentTimeNumber >= 90) { ? ? ? ? ? ? ? ? ? ? if (incidentType != null) { ? ? ? ? ? ? ? ? ? ? ? ? incidentTimeNumber=90; ? ? ? ? ? ? ? ? ? ? ? ? if ("14".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncidentNinety(canvas, bitmapVisitingCornerKick, incidentTimeNumber, 0.56f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("2".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncidentNinety(canvas, bitmapHomeTeamRedCard, incidentTimeNumber, 0.45f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } else if ("1".equals(incidentType)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? homeIncidentNinety(canvas, bitmapVisitingTeamScored, incidentTimeNumber, 0.45f, incidentType); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? } ? ? ? private void homeIncidentZero(Canvas canvas, Bitmap bitmapHomeCornerKick, float incidentTimeNumber, float v, String incidentType) { ? ? ? ? if ("14".equals(incidentType)) { ? ? ? ? ? ? canvas.drawBitmap(bitmapHomeCornerKick, (int) ((viewWidth - 2 * distancePx) * incidentTimeNumber / maxData - bitmapHomeCornerKickWidth / 2 + distancePxMax), viewHeight * v, strokePain); ? ? ? ? } else { ? ? ? ? ? ? canvas.drawBitmap(bitmapHomeCornerKick, (int) ((viewWidth - 2 * distancePx) * incidentTimeNumber / maxData - bitmapHomeCornerKickWidth / 2 + distancePx), viewHeight * v, strokePain); ? ? ? ? } ? ? ? } ? ? ? private void homeIncidentNinety(Canvas canvas, Bitmap bitmapHomeTeamScored, float incidentTimeNumber, float v, String incidentType) { ? ? ? ? if ("14".equals(incidentType)) { ? ? ? ? ? ? canvas.drawBitmap(bitmapHomeTeamScored, (int) ((viewWidth) * (incidentTimeNumber + 10) / maxData - bitmapHomeTeamScoredWidth / 2) - distancePxMin, viewHeight * v, strokePain); ? ? ? ? } else { ? ? ? ? ? ? canvas.drawBitmap(bitmapHomeTeamScored, (int) ((viewWidth) * (incidentTimeNumber + 10) / maxData - bitmapHomeTeamScoredWidth / 2) - distancePx, viewHeight * v, strokePain); ? ? ? ? } ? ? ? } ? ? ? private void homeIncident(Canvas canvas, Bitmap bitmapHomeTeamScored, float incidentTimeNumber, float v, String incidentType) { ? ? ? ? if ("14".equals(incidentType)) { ? ? ? ? ? ? canvas.drawBitmap(bitmapHomeTeamScored, (int) ((viewWidth - 2 * distancePx) * (incidentTimeNumber + 10) / maxData - bitmapHomeTeamScoredWidth / 2) + distancePxMax, viewHeight * v, strokePain); ? ? ? ? } else { ? ? ? ? ? ? canvas.drawBitmap(bitmapHomeTeamScored, (int) ((viewWidth - 2 * distancePx) * (incidentTimeNumber + 10) / maxData - bitmapHomeTeamScoredWidth / 2) + distancePx, viewHeight * v, strokePain); ? ? ? ? } ? ? } ? ? ? private void homeTeamIncident(Canvas canvas, Bitmap bitmapHomeCornerKick, float incidentTimeNumber, float v, String incidentType) { ? ? ? ? if ("14".equals(incidentType)) { ? ? ? ? ? ? canvas.drawBitmap(bitmapHomeCornerKick, (int) ((viewWidth - 2 * distancePx) * (incidentTimeNumber) / maxData - bitmapHomeCornerKickWidth / 2) + distancePxMax, viewHeight * v, strokePain); ? ? ? ? } else { ? ? ? ? ? ? canvas.drawBitmap(bitmapHomeCornerKick, (int) ((viewWidth - 2 * distancePx) * (incidentTimeNumber) / maxData - bitmapHomeCornerKickWidth / 2) + distancePx, viewHeight * v, strokePain); ? ? ? ? } ? ? ? } ? ? ? ? private void invalidateView() { ? ? ? ? if (Looper.getMainLooper() == Looper.myLooper()) { ? ? ? ? ? ? invalidate(); ? ? ? ? } else { ? ? ? ? ? ? postInvalidate(); ? ? ? ? } ? ? } ? ? ? private int dipToPx(float dip) { ? ? ? ? float density = getResources().getDisplayMetrics().density; ? ? ? ? return (int) (dip * density + 0.5f * (dip >= 0 ? 1 : -1)); ? ? } }
BollProgressDataBean.class
public class BollProgressDataBean { ? ? private String incidentType; ?//主隊比賽中的事件 ?0 角球 1紅牌 2進球 ? ? private String incidentTime; ?//主隊比賽中發生事件的時間 ? ? ? public String getIncidentType() { ? ? ? ? return incidentType; ? ? } ? ? ? public void setIncidentType(String incidentType) { ? ? ? ? this.incidentType = incidentType; ? ? } ? ? ? public String getIncidentTime() { ? ? ? ? return incidentTime; ? ? } ? ? ? public void setIncidentTime(String incidentTime) { ? ? ? ? this.incidentTime = incidentTime; ? ? } }
原文鏈接:https://blog.csdn.net/qq_21467035/article/details/115180778
相關推薦
- 2022-06-30 python神經網絡MobileNetV2模型的復現詳解_python
- 2022-09-07 Jquery實現異步上傳文件_jquery
- 2022-09-25 BeanFactory與ApplicationContext的區別
- 2022-01-17 將字符串轉換成時間戳,yyyymmss到yyyy-mm-dd ,之后從時間戳轉換成時間格式字符串
- 2022-06-16 Beego中ORM操作各類數據庫連接方式詳細示例_Golang
- 2023-04-27 阿里低代碼框架lowcode-engine自定義設置器詳解_React
- 2022-12-23 python類中的self和變量用法及說明_python
- 2022-07-08 docker部署釘釘機器人報警通知的實現_docker
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支