iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android 实现自定义圆形进度条的实例代码
  • 290
分享到

Android 实现自定义圆形进度条的实例代码

自定义进度条Android 2022-06-06 05:06:46 290人浏览 安东尼
摘要

Android 自定义圆形进度条 今天无意中发现一个圆形进度,想想自己实现一个,如下图: 基本思路是这样的: 1.首先绘制一个实心圆 2.绘制一个白色实心的正方形,遮住实心圆

Android 自定义圆形进度条

今天无意中发现一个圆形进度,想想自己实现一个,如下图:

基本思路是这样的:

1.首先绘制一个实心圆

2.绘制一个白色实心的正方形,遮住实心圆

3.在圆的中心动态绘制当前进度的百分比字符

4.绘制一个与之前实心圆相同颜色的空心圆

5.逐渐改变当前的百分比

6.根据百分比,逐渐改变正方形的大小,逐渐减小正方形的底部y轴的坐标,不断重绘,直到达到100%

首先看看自定义的属性

在values目录下新建attrs.xml内容如下:

定义绘制圆形的背景色,和绘制圆形的半径大小


<?xml version="1.0" encoding="utf-8"?>
<resources>
  <attr name="circlecolor" fORMat="color"></attr>
  <attr name="half" format="dimension"></attr>
  <declare-styleable name="myCircleImage">
    <attr name="circlecolor"></attr>
    <attr name="half"></attr>
  </declare-styleable>
</resources>

自定义视图


import Android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
public class CirclePro extends View {
 private Paint paint;
 private int circleBack;//圆的背景色
 private int mschedual = 0;//用于控制动态变化
 float circleHalf; //圆的半径
 String percent = "";//绘制百分比的字符串
 @SuppressLint("Recycle")
 public CirclePro(Context context, AttributeSet attrs, int defStyleAttr) {
 super(context, attrs, defStyleAttr);
 paint = new Paint();
 TypedArray array = context.getTheme().obtainStyledAttributes(attrs, R.styleable.myCircleImage, defStyleAttr,0);
 @SuppressWarnings("unused")
 int leng = array.length();
 //获取自定义的属性,这里注意是R.styleable.myCircleImage_circlecolor而不是R.attr.circlecolor
 circleBack = array.getColor(R.styleable.myCircleImage_circlecolor,Color.GREEN);
 circleHalf = array.getDimension(R.styleable.myCircleImage_half,200.f);
 System.out.println(circleBack);
 }
 
 public CirclePro(Context context, AttributeSet attrs) {
 this(context, attrs, 0);//调用自己的构造函数
 }
 
 public float getTextWidth(String text,float textSize) {
 TextPaint textPaint = new TextPaint();
 textPaint.setTextSize(textSize);
 return textPaint.measureText(text);
 }
 @Override
 protected void onDraw(Canvas canvas) {
 // TODO Auto-generated method stub
 super.onDraw(canvas);
 float height = getHeight();
 float width = getWidth();
// float circleHalf = (float) (width*0.7/2);
 paint.setColor(circleBack);
 paint.setAntiAlias(true);
 paint.setStyle(Paint.Style.FILL);
 canvas.drawCircle(width/2,height/2,circleHalf, paint);//画实心圆
 if (mschedual <= 100) {//,如果当前进度小于100,画实心矩形
  paint.setColor(Color.WHITE);
  canvas.drawRect(width/2-circleHalf,height/2-circleHalf,width/2+circleHalf,height/2+circleHalf - mschedual*circleHalf/50, paint);
 }
 //画当前进度的字符串
 paint.setColor(Color.BLACK);
 paint.setTextSize(30.f);
 percent = mschedual+" %";
 canvas.drawText(percent, width/2-getTextWidth(percent,30)/2,height/2+paint.getTextSize()*3/8, paint);//字体的高度=paint.getTextSize()*3/4
 //画空心圆
 paint.setColor(circleBack);
 paint.setStyle(Paint.Style.STROKE);
 canvas.drawCircle(width/2,height/2,circleHalf, paint);
 if (mschedual < 100) {//更改当前进度值,并重绘
  mschedual++;
  invalidate();
 }
 }
}

在activity_main.xml中,需要用到自定义的属性,首先添加命名空间:

xmlns:liu=”Http://schemas.android.com/apk/res/com.example.androidcirclepro”

其中liu是自定义的一个前缀,随意命名的,com.example.androidcirclepro是我们的应用的包名

activity_main.xmln内容如下:


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  xmlns:liu="http://schemas.android.com/apk/res/com.example.androidcirclepro"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity" >
  <com.example.androidcirclepro.CirclePro
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    liu:half="90dp"
    liu:circlecolor="#fff0f0"
    />
</RelativeLayout>

至此一个自定义的圆形进度条就完成了,是不是很简单。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

您可能感兴趣的文章:Android实现自定义圆形进度条Android三种方式实现ProgressBar自定义圆形进度条Android带进度的圆形进度条自定义Android圆形进度条(附源码)android自定义进度条渐变圆形Android 自定义圆形带刻度渐变色的进度条样式实例代码


--结束END--

本文标题: Android 实现自定义圆形进度条的实例代码

本文链接: https://www.lsjlt.com/news/23120.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android自定义View实现圆形进度条
    本文实例为大家分享了Android自定义View实现圆形进度条的具体代码,供大家参考,具体内容如下 原理非常简单,在自定义View的基础上使用Canvas的drawCircle画两个...
    99+
    2024-04-02
  • Android怎么自定义View实现圆形进度条
    本文小编为大家详细介绍“Android怎么自定义View实现圆形进度条”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android怎么自定义View实现圆形进度条”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。原...
    99+
    2023-07-02
  • Android自定义View实现圆形加载进度条
    本文实例为大家分享了Android自定义View实现圆形加载进度条的具体代码,供大家参考,具体内容如下 效果图 话不多说,咱们直接看代码 首先第一种: 1、创建自定义View类 p...
    99+
    2024-04-02
  • Android自定义view实现圆形进度条效果
    Android中实现进度条有很多种方式,自定义进度条一般是继承progressBar或继承view来实现,本篇中讲解的是第二种方式。 先上效果图: 实现圆形进度条总体来说并不难,还...
    99+
    2024-04-02
  • Android自定义圆形进度条效果
    本文实例为大家分享了Android自定义圆形进度条效果的具体代码,供大家参考,具体内容如下 1 控件 RoundProgress package listview.tianhet...
    99+
    2024-04-02
  • 详解Android如何自定义view实现圆形进度条
    Android中实现进度条有很多种方式,自定义进度条一般是继承progressBar或继承view来实现,本篇中讲解的是第二种方式。 先上效果图: 实现圆形进度条总体来说并不难,还...
    99+
    2024-04-02
  • WPF实现圆形进度条的示例代码
    WPF 实现圆形进度条 框架使用.NET40;Visual Studio 2019;CircularProgressBar 继承 ProgressBar,在&nb...
    99+
    2023-01-04
    WPF实现圆形进度条 WPF圆形进度条 WPF进度条
  • Qt使用QPainter实现自定义圆形进度条
    目录一、项目介绍二、项目基本配置三、UI界面设置四、主程序实现4.1 roundprogressbar.h和roundprogressbar.cpp4.2 widget.h头文件4....
    99+
    2024-04-02
  • Android 实现自定义圆形进度条的三种常用方法
    目录一、通过帧动画实现二、通过自定义颜色实现第三种 使用有进度的UI图片:Android 自定义 进度条,一般有三种方式,最早一般使用UI给的图片使用帧动画,完成,后面两种,一种是使...
    99+
    2023-03-01
    Android 实现自定义圆形进度条 Android自定义view实现圆形进度条 Android圆形进度条的实现
  • Android自定义view实现圆环进度条效果
    本文实例为大家分享了Android自定义view实现圆环进度条效果的具体代码,供大家参考,具体内容如下 一、实现效果图 二、核心代码 自定义view的属性 <xml vers...
    99+
    2024-04-02
  • Android View实现圆形进度条
    本文实例为大家分享了Android View实现圆形进度条的具体代码,供大家参考,具体内容如下 主要涉及到下面几个方法: // 画圆 canvas.drawCircle // 画...
    99+
    2024-04-02
  • Android自定义View实现圆形加载进度条效果的方法
    这篇文章将为大家详细讲解有关Android自定义View实现圆形加载进度条效果的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。View仿华为圆形加载进度条效果图实现思路可以看出该View可分为三个部分...
    99+
    2023-05-30
    android view 进度条
  • Android实现自定义圆形进度条的常用方法有哪些
    今天小编给大家分享一下Android实现自定义圆形进度条的常用方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、通...
    99+
    2023-07-05
  • Android自定义View圆形进度条控件的方法
    这篇文章主要讲解了Android自定义View圆形进度条控件的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。继续练习自定义View,这次带来的圆形进度条控件与之前的圆形百分比控件大同小异,这次涉及到了渐变渲...
    99+
    2023-05-31
    android roi %d
  • android圆形进度条怎么实现
    要实现一个圆形进度条,你可以使用`ProgressBar`控件来实现,并将其样式设置为圆形。首先,在布局文件中添加以下代码:```x...
    99+
    2023-08-30
    android
  • android如何实现圆形进度条
    要实现圆形进度条,可以使用Android的自定义控件来实现。首先,在layout文件中定义一个圆形进度条的布局,例如circle_p...
    99+
    2023-08-20
    android
  • Android自定义圆环式进度条
    安卓自定义圆环式进度条,供大家参考,具体内容如下 需求是实现一个圆环式中间带有进度的进度条,自己动手实现一个 package com.djt.aienglish.widget; ...
    99+
    2024-04-02
  • 在Android开发中通过自定义View实现一个圆形进度条
    这期内容当中小编将会给大家带来有关在Android开发中通过自定义View实现一个圆形进度条,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先来看看自己定义的Viewpackage cn.easymobi...
    99+
    2023-05-31
    android view roi
  • Android中实现圆形进度条的方法
    本篇文章为大家展示了Android中实现圆形进度条的方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。主要思路是写一个继承ProgressBar的自定义View代码:package com.fun....
    99+
    2023-05-31
    android roi %d
  • Android自定义Drawable实现圆形和圆角
    本文实例为大家分享了自定义Drawable实现圆形和圆角的具体代码,供大家参考,具体内容如下圆形package com.customview.widget;import android.graphics.Bitmap;import andr...
    99+
    2023-05-30
    android drawable 圆形
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作