一、效果图
二、布局文件
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <com.johnny.myprogress.MyProgress android:id="@+id/activity_person_info_fragment_common_progress" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="80" android:progressDrawable="@drawable/progressbar_pd" /> </RelativeLayout>
progressbar_pd.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 设置背景图 --> <item android:id="@android:id/background"> <nine-patch android:src="@drawable/progress_first_bg" /> </item> <!-- 设置一级图 --> <item android:id="@android:id/progress"> <clip> <nine-patch android:src="@drawable/progress_second_bg" /> </clip> </item> <!-- 设置二级图 --> <item android:id="@android:id/secondaryProgress"> <clip> <nine-patch android:src="@drawable/progress_first_bg" /> </clip> </item> </layer-list>
MyProgress.java
package com.johnny.myprogress; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.util.AttributeSet; import android.widget.ProgressBar; public class MyProgress extends ProgressBar { String text; Paint mPaint; public MyProgress(Context context) { super(context); // TODO Auto-generated constructor stub System.out.println("1"); initText(); } public MyProgress(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub System.out.println("2"); initText(); } public MyProgress(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub System.out.println("3"); initText(); } @Override public synchronized void setProgress(int progress) { // TODO Auto-generated method stub setText(progress); super.setProgress(progress); } @Override protected synchronized void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); // this.setText(); Rect rect = new Rect(); this.mPaint.getTextBounds(this.text, 0, this.text.length(), rect); //int x = (getWidth() / 2) - rect.centerX(); int x = (getWidth() / 2) - rect.centerX(); int y = (getHeight()/2) - rect.centerY(); canvas.drawText(this.text, x, y, this.mPaint); } // 初始化,画笔 private void initText() { this.mPaint = new Paint(); this.mPaint.setColor(Color.WHITE); this.mPaint.setTextSize(18); // 去掉锯齿 this.mPaint.setFlags(Paint.ANTI_ALIAS_FLAG); } private void setText() { setText(this.getProgress()); } // 设置文字内容 private void setText(int progress) { int i = (progress * 100) / this.getMax(); this.text = String.valueOf(i) + "%"; } }
MainActivity.java
package com.johnny.myprogress; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
相关推荐
"自定义圆形百分比进度条"是一个常见的需求,它通常用于显示任务完成的百分比、投票结果或者资源加载的状态。这种控件可以直观地向用户展示数据,并且在视觉上更吸引人。下面将详细讲解如何实现这样一个功能。 首先...
BxArcProgressBar:android 自定义 弧形等级进度条,参考项目【弧形的拖动条进度控件】https://github.com/jenly1314/ArcSeekBar,https://gitee.com/jenly1314/ArcSeekBar,含源码,apk,截图
本文将详细介绍如何创建一个自定义的加载进度条,以及如何实现一个圆形进度条来展示图片加载的百分比。 首先,我们从基础开始。Android原生系统并未提供专门用于图片加载进度显示的控件,但我们可以利用ImageView、...
自定义样式进度条则允许开发者根据应用的风格和需求来定制其外观和行为,提升用户体验。下面将详细探讨自定义样式的进度条及其在实际开发中的应用。 首先,进度条主要用于展示一个操作的进度,如下载、上传、安装等...
我们可以设定一个起点和终点角度,根据进度百分比计算出当前应填充的角度,从而动态改变进度条的长度。 四、多边形进度条实现 对于多边形进度条,我们需要先定义一个由多个点构成的多边形路径,然后根据进度填充...
android 自定义百分比显示进度条(改进版),在原作者的基础上修改,改进的地方就是百分比文字显示在不同手机分辨率下进行处理,大家还可以继续在此基础上继续改进,本人主要使用在项目的系统版本更新,使用语法与原...
然而,系统默认的进度条样式往往无法满足所有设计需求,因此开发者常常需要自定义进度条来实现更个性化的视觉效果。本教程将深入探讨如何在Android中实现“自定义不规则进度条”。 首先,我们需要创建一个自定义的`...
"android 自定义百分比长形进度条"这个主题就是关于如何在Android应用程序中创建一个非标准的、能够显示百分比且形状独特的进度条。通常,Android SDK提供的默认ProgressBar控件是一个圆形或者水平条形,但为了满足...
/* 设置填充的宽度,可自定义百分比 */ } ``` 综上所述,结合Swiper的配置选项和CSS样式,我们可以轻松地在Swiper中添加分页标签和进度条,并自定义它们的位置和外观,从而实现更丰富的用户体验。在实际项目中,...
1. **计算角度**:进度条的进度通常以百分比表示,将这个百分比转换成弧度,因为`drawArc()`方法接受的是弧度值。100%进度对应360度角。 2. **动态更新**:如果需要动态显示加载过程,可以在`onProgressChanged()`...
本文将深入探讨如何在Android中创建一个自定义的带有动画效果的圆环进度条,这将帮助开发者们构建更加美观且动态的用户界面。 首先,我们需要了解圆环进度条的基本概念。它是一种特殊的进度条,形状为圆形,通常...
"自定义圆形缓冲进度条"是一个专门设计的UI组件,它允许开发者在应用程序中创建一个动态的、可定制的进度指示器,特别是在视频加载、数据同步或其他需要显示加载进度的情景下非常实用。这种进度条的独特之处在于其...
在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF) 中自定义进度条控件,以实现横置和竖置两种显示方式。WPF 是.NET Framework 的一部分,它为开发人员提供了丰富的用户界面(UI)框架,支持2D...
本篇文章将深入探讨如何实现一个自定义的、带有进度指示的圆形进度条,以此来提升用户界面的交互体验。我们首先从标题和描述中提取的主要知识点包括:自定义View、自定义属性以及如何在实际项目中应用这些技术。 一...
然而,这个项目提供的"漂亮进度条"可能是对默认控件的一种自定义实现,以提供更个性化的外观和可能的额外功能。 `DemoApp`文件夹包含的是演示应用程序的源代码,这通常是一个运行实例,展示如何在实际应用中使用该...
通过以上步骤,你可以在MFC应用中实现一个带百分比显示的自定义进度条,利用GDI+的强大功能,提供更丰富的视觉效果和用户体验。在实际项目中,可以根据需求进一步定制样式,如改变颜色、字体、边框等。记住,使用完...
本示例着重讲解如何实现一个圆形进度条,这个主题来自于xiaanming大神的源码改造,旨在帮助开发者理解并掌握自定义View的基本步骤。 首先,创建一个自定义View通常需要创建一个新的Java类,继承自`View`或`...
在这个场景中,我们关注的是一个特定的自定义View:自定义圆形进度条,用于显示金额的百分比。这样的组件可以广泛应用在金融应用、购物应用或者任何需要实时显示资金变化的应用中。 首先,我们需要理解自定义View的...
本教程将深入探讨如何实现一个自定义的环形进度条,并展示百分比。 ### 1. 环形进度条的基本概念 环形进度条是一种图形化的进度指示器,通常由一个闭合的圆形路径组成,其中一部分被填充以表示已完成的部分,剩余...