android 自定义进度条矩形框,Android 自定义方形进度条
效果图如上,自定义方形的进度条,第一个是100%,第二个是70%
其实很简单的,就Path类
public class SquareProgressBar extends View { private int progress = 70;//进度 private int strokeWidth = 20; private Paint paint = null; private Path path = null; private int margin; public SquareProgressBar(Context context, AttributeSet attrs) { super(context, attrs); init(context); } private void init(Context context) { paint = new Paint(); margin = convertDpToPx(10, context); paint.setStyle(Paint.Style.STROKE); paint.setColor(context.getResources().getColor( android.R.color.holo_red_dark)); paint.setStrokeWidth(margin); paint.setAntiAlias(true); paint.setStyle(Style.STROKE); path = new Path(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); float scope = getMeasuredWidth() * 2 + getMeasuredHeight() * 2; DrawLocation mLocation = getLocation(scope); if (mLocation.place == Place.TOP) { path.moveTo(margin, 10); path.lineTo(mLocation.location, 10); canvas.drawPath(path, paint); } if (mLocation.place == Place.RIGHT) { path.moveTo(margin, 10); path.lineTo(getMeasuredWidth()-10, 10); path.moveTo(getMeasuredWidth() - 10, 10); path.lineTo(getMeasuredWidth(), mLocation.location); canvas.drawPath(path, paint); } if (mLocation.place == Place.BOTTOM) { path.moveTo(margin, 10); path.lineTo(getMeasuredWidth(), 10); path.moveTo(getMeasuredWidth() - 10, 10); path.lineTo(getMeasuredWidth() - 10, getMeasuredHeight()); path.moveTo(getMeasuredWidth() - 10, getMeasuredHeight()); path.lineTo(mLocation.location, getMeasuredHeight()); canvas.drawPath(path, paint); } if (mLocation.place == Place.LEFT) { path.moveTo(margin, 10); path.lineTo(getMeasuredWidth(), 10); path.moveTo(getMeasuredWidth() - 10, 10); path.lineTo(getMeasuredWidth() - 10, getMeasuredHeight()); path.moveTo(getMeasuredWidth() - 10, getMeasuredHeight()); path.lineTo(margin, getMeasuredHeight()); path.moveTo(margin, getMeasuredHeight()); path.lineTo(margin, mLocation.location); Log.i("lcf", " mLocation.location = " + mLocation.location); canvas.drawPath(path, paint); } } public void setProgress(int progress) { this.progress = progress; postInvalidate(); } private DrawLocation getLocation(float scope) { float length = scope * progress / 100; DrawLocation mLocation = new DrawLocation(); if (length > getMeasuredWidth()) { float second = length - getMeasuredWidth(); if (second > getMeasuredHeight()) { float third = second - getMeasuredHeight(); if (third > getMeasuredWidth()) { float four = third - getMeasuredWidth(); mLocation.place = Place.LEFT; mLocation.location = getMeasuredHeight() - four; } else { mLocation.place = Place.BOTTOM; mLocation.location = getMeasuredWidth() - third; } } else { mLocation.place = Place.RIGHT; mLocation.location = second; } } else { mLocation.place = Place.TOP; mLocation.location = length; } return mLocation; } private class DrawLocation { public Place place; public float location; } public enum Place { LEFT, RIGHT, TOP, BOTTOM } public int convertDpToPx(float dp, Context context) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics()); }
android 自定义进度条矩形框,Android 自定义方形进度条相关推荐
- android矩形输入框,Android中实现在矩形框中输入文字显示剩余字数的功能
虽然这两个功能都比较简单,但是在实际app开发中真的很常见,特别是显示字数或剩余字数这个功能 如下图: 要实现上面的功能,需要做到三点: 1.实现矩形框布局 思路就是矩形框作为整个布局的一个backg ...
- android自定义矩形框,Android中ImageCropper矩形、圆形 裁剪框的实现方法
前言 支持圆形裁剪框,裁剪后生成圆形图案. 代码基于开源项目修改,github上项目链接:https://www.easck.com/> 说一下圆形裁剪实现部分: 1.UI方面,自定义Circl ...
- android自定义矩形框,Android 中自定义长方形
android 自定义控件有几种方式 今天是我第一次写博客,也是第一次学习写自定义控件,不足的地方望大家指正. 同时注意自定义控件的命名空间 下面是代码; package com.example.ch ...
- Android学习之复选框checkbox自定义样式以及调整图片大小
1.自定义样式: 下载复选框样式图:https://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2 图片重命名为英文(否则找不到)并 ...
- android xml图片圆角矩形,使用Path自定义圆角图片
简单实现圆角图片CircleView 效果: CircleImageView代码: public class CircleImageView extends AppCompatImageView { ...
- android怎么加矩形框,Android shape 矩形框子
Android shape 矩形边框 前言 欢迎大家我分享和推荐好用的代码段~~声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- android 画空心矩形框,Android实现空心圆角矩形按钮的实例代码
搜索热词 页面上有时会用到背景为空心圆角矩形的Button,可以通过xml绘制出来. drawrable文件夹下bg_red_hollow_rectangle.xml android:shape=&q ...
- android 仿微信加载框,Android自定义控件——仿微信半透明加载框
在我们的app中不免回遇到耗时操作,这时我们给个加载框进行过度,使用户体验大大加强. 一.CustomDialog类的编写 package com.daqsoft.jingguan.weight; i ...
- android相机截取矩形框,Android自定义照相机实现只拍摄矩形区域(重传)
[实例简介] 自定义Android照相机,实现只拍摄矩形区域.完美解决预览及拍照时的照片拉伸失真,旋转等问题 [实例截图] [核心代码] 7a46ebca-b94c-49fa-8696-3c64dc2 ...
最新文章
- Rosetta | Rosetta简介
- PEAK6 2020校招OA
- 常考数据结构与算法:判断一个链表是否为回文结构
- 机器学习入门学习笔记:(1)BP神经网络原理推导及程序实现
- Busybox 设置登录用户名、密码
- 判断ShellExecute函数是否执行完一个程序的方法
- PowerShell在Exchange2010下快速创建动态通讯组
- fanuc机器人提示暂停_川崎机器人故障排除参考方法
- java中获取时间6,Java中获取指定日为星期几及其他日期操作(2)
- 程序员获取编程灵感的10 种方式
- Pentium 4处理器架构/微架构/流水线 (7) - NetBurst前端详解 - 分支预测
- android WebViewClient和WebChromeClient
- VMware Workstation 常见问题解决
- [转载] Python水平自测!100道经典练习题.pdf(附答案)
- 手机怎么用外嵌字幕_iphone 12发布 ! “预购、定金、尾款、换手机”用英语怎么说?...
- 中国天气网城市编码获取地址
- 【数据挖掘】2022年深信服科技机器学习工程师笔试
- zencart模板修改的地方
- u盘启动 联想一体机_Lenovo消费台式机与一体机预装Windows 8改装Windows 7的解决方案...
- 利用爬虫获取免费IP代理
热门文章
- 八种必备户外装备包你踏遍地球
- linux centos7 解压tar.gz
- 计算机电源的正确使用,终于懂得电脑电源保养方法
- OpenGL学习(九)阴影映射(shadowMapping)
- win10设置虚拟内存_电脑配置强,虚拟内存没有用?教你这样设置,瞬间提升流畅度!...
- 37本国产SCI期刊推荐!涵盖9大领域,建议收藏!①
- 老子道德经81章全文及解释
- 广和通LTE-A模组FG101FM101系列全线量产,提升Cat 6新体验
- Minecraft 1.18.1、1.18.2模组开发 05.发射器+投掷物
- python : time模块weekday()