安卓自定义一个水平进度条,根据后台返回的数据显示进度,详细过程的源码

时间: 2024-03-26 07:39:01 浏览: 12
好的,下面是一个简单的安卓自定义水平进度条的实现代码: 1. 首先,在 `res/layout` 文件夹下创建一个 XML 布局文件 `custom_progress_bar.xml`,代码如下: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/custom_progress_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/progress_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:textSize="16sp" android:textColor="#000000"/> <ProgressBar android:id="@+id/progress_bar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" android:progress="0" android:max="100"/> </LinearLayout> ``` 这个布局文件包含了一个 `TextView` 和一个 `ProgressBar`,其中 `TextView` 用于显示进度的文字说明,`ProgressBar` 用于显示实际的进度条。 2. 接下来,在 `res/values` 文件夹下创建一个 XML 文件 `attrs.xml`,代码如下: ```xml <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="CustomProgressBar"> <attr name="progress_text" format="string"/> <attr name="progress_value" format="integer"/> </declare-styleable> </resources> ``` 这个文件定义了自定义进度条的两个属性:`progress_text` 用于设置进度条的文字说明,`progress_value` 用于设置进度条的进度值。 3. 然后,在 `res/values` 文件夹下创建一个 XML 文件 `colors.xml`,代码如下: ```xml <?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#FF4081</color> </resources> ``` 这个文件定义了进度条的颜色。 4. 最后,在 `src/main/java` 文件夹下创建一个 Java 类 `CustomProgressBar.java`,代码如下: ```java import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; public class CustomProgressBar extends LinearLayout { private TextView mProgressText; private ProgressBar mProgressBar; public CustomProgressBar(Context context, AttributeSet attrs) { super(context, attrs); // 加载布局 LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.custom_progress_bar, this, true); // 获取布局中的控件 mProgressText = (TextView) findViewById(R.id.progress_text); mProgressBar = (ProgressBar) findViewById(R.id.progress_bar); // 获取自定义属性的值 TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CustomProgressBar, 0, 0); String progressText = a.getString(R.styleable.CustomProgressBar_progress_text); int progressValue = a.getInt(R.styleable.CustomProgressBar_progress_value, 0); a.recycle(); // 设置进度条的文字说明和进度值 mProgressText.setText(progressText); mProgressBar.setProgress(progressValue); } // 设置进度条的进度值 public void setProgressValue(int progressValue) { mProgressBar.setProgress(progressValue); } // 获取进度条的进度值 public int getProgressValue() { return mProgressBar.getProgress(); } // 设置进度条的文字说明 public void setProgressText(String progressText) { mProgressText.setText(progressText); } // 获取进度条的文字说明 public String getProgressText() { return mProgressText.getText().toString(); } // 设置进度条的颜色 public void setProgressColor(int color) { mProgressBar.getProgressDrawable().setColorFilter(color, android.graphics.PorterDuff.Mode.SRC_IN); } } ``` 这个类继承了 `LinearLayout`,并在构造函数中加载了之前创建的布局文件 `custom_progress_bar.xml`。此外,这个类还提供了几个方法用于设置和获取进度条的属性值,比如 `setProgressValue()` 方法用于设置进度条的进度值,`setProgressText()` 方法用于设置进度条的文字说明,`setProgressColor()` 方法用于设置进度条的颜色等。 使用时,只需要在 XML 布局文件中引用这个自定义控件即可,比如: ```xml <com.example.CustomProgressBar android:id="@+id/progress_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" app:progress_text="Progress" app:progress_value="50" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> ``` 其中 `app:progress_text` 和 `app:progress_value` 分别为自定义属性的值。在代码中,可以通过 `findViewById()` 方法获取这个自定义控件的实例,并调用相应的方法设置和获取属性值,比如: ```java CustomProgressBar progressBar = findViewById(R.id.progress_bar); progressBar.setProgressValue(75); progressBar.setProgressText("Loading..."); progressBar.setProgressColor(Color.BLUE); ```

相关推荐

最新推荐

recommend-type

解决echarts 一条柱状图显示两个值,类似进度条的问题

主要介绍了解决echarts 一条柱状图显示两个值,类似进度条的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

Android 七种进度条的样式

在开发中我们经常要用到进度条显示下载或者加载的进度。系统自带的黄色进度条在UI效果上经常不能满足策划或者美工的要求。这就要我们屌丝程序员自己自定义进度条,下面小编给大家介绍Android 七种进度条的样式,需要...
recommend-type

Qt自定义控件实现圆圈加载进度条

主要为大家详细介绍了Qt自定义控件实现圆圈加载进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Android实现多段颜色进度条效果

主要为大家详细介绍了Android实现多段颜色进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Bootstrap进度条与AJAX后端数据传递结合使用实例详解

主要介绍了Bootstrap进度条与AJAX后端数据传递结合使用,需要的朋友可以参考下
recommend-type

RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz

REALTEK 8188FTV 8188eus 8188etv linux驱动程序稳定版本, 支持AP,STA 以及AP+STA 共存模式。 稳定支持linux4.0以上内核。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

Redis验证与连接:快速连接Redis服务器指南

![Redis验证与连接:快速连接Redis服务器指南](https://img-blog.csdnimg.cn/20200905155530592.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNTg5NTEw,size_16,color_FFFFFF,t_70) # 1. Redis验证与连接概述 Redis是一个开源的、内存中的数据结构存储系统,它使用键值对来存储数据。为了确保数据的安全和完整性,Redis提供了多
recommend-type

gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker app:app 报错 ModuleNotFoundError: No module named 'geventwebsocket' ]

这个报错是因为在你的环境中没有安装 `geventwebsocket` 模块,可以使用下面的命令来安装: ``` pip install gevent-websocket ``` 安装完成后再次运行 `gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker app:app` 就不会出现这个报错了。
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。