android 进度条 代码,Android 进度条使用详解及示例代码

android 进度条 代码,Android 进度条使用详解及示例代码在这里 总结一下 loading 进度条的使用简单总结一下 一 说起进度条 必须说说条形进度条 经常都会使用到嘛 特别是下载文件进度等等 还有像腾讯安装进度条一样 有个进度总给人良好的用户体验 先来找图看看 做这个图完成不用图片就可以做到了 看下 xml 布局文件 其实就是直接用 xml 写的在加两个属性设置一下就好了 一个 style 另一个是 background android id id pb

在这里,总结一下loading进度条的使用简单总结一下。

一、说起进度条,必须说说条形进度条,经常都会使用到嘛,特别是下载文件进度等等,还有像腾讯安装进度条一样,有个进度总给人良好的用户体验。

先来找图看看,做这个图完成不用图片就可以做到了。

03874e476edee7526c499682a8464361.png

看下xml布局文件,其实就是直接用xml写的在加两个属性设置一下就好了,一个style,另一个是background。

android:id=”@+id/pb_progressbar”

style=”@style/StyleProgressBarMini”

android:layout_width=”fill_parent”

android:layout_height=”wrap_content”

android:layout_margin=”30dp”

android:background=”@drawable/shape_progressbar_bg”

android:max=”100″

android:progress=”50″ />

先看style吧

50dip

10dip

false

@android:drawable/progress_indeterminate_horizontal

@drawable/shape_progressbar_mini

这里的progressDrawable又是引用一个自定义drawable,不是图片哦。

shape_progressbar_mini.xml

android:angle=”270″

android:centerY=”0.75″

android:endColor=”#FFFFFF”

android:startColor=”#FFFFFF” />

android:angle=”270″

android:centerY=”0.75″

android:endColor=”#df0024″

android:startColor=”#df0024″ />

android:angle=”270″

android:centerY=”0.75″

android:endColor=”#de42ec”

android:startColor=”#de42ec” />

再来看看shape_progressbar_bg.xml

android:shape=”rectangle” >

padding:边界的间隔–>

android:bottom=”1dp”

android:left=”1dp”

android:right=”1dp”

android:top=”1dp” />

就这样把一个漂亮的条形进度条做好了,在shape_progressbar_bg.xml中,边框填充的颜色是一种挺好的方法,加了一个进度条的边框。另外为了进度条四个角都是圆形的,就用了这个属性 。

搞定,这个时候可以开心一下了,去喝杯水先。

二、圆形进度条。另一个比较常用的就是圆形进度条,表示正在进行中。。。

来看2张小图

da8c56c47a7c6875af651e23de1cb52f.png

a8e7eaa28f6831145565f242ae38ce00.png

先看第一张,分析下代码,用自定义的view,用pop来做的哦。LoadingDialog.java

public class LoadingDialog {

private Context context;

private PopupWindow popupDialog;

private LayoutInflater layoutInflater;

private RelativeLayout layout;

private RelativeLayout layout_bg;

private View circleView;

private RotateAnimation rotateAnim;

private AlphaAnimation alphaAnim_in;

private AlphaAnimation alphaAnim_out;

public LoadingDialog(Context context) {

layoutInflater = LayoutInflater.from(context);

this.context = context;

}

private void initAnim() {

rotateAnim = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

rotateAnim.setDuration(2000);

rotateAnim.setRepeatMode(Animation.RESTART);

rotateAnim.setRepeatCount(-1);

rotateAnim.setInterpolator(new LinearInterpolator());

alphaAnim_in = new AlphaAnimation(0f, 1f);

alphaAnim_in.setFillAfter(true);

alphaAnim_in.setDuration(200);

alphaAnim_in.setInterpolator(new LinearInterpolator());

alphaAnim_out = new AlphaAnimation(1f, 0f);

alphaAnim_out.setFillAfter(true);

alphaAnim_out.setDuration(100);

alphaAnim_out.setInterpolator(new LinearInterpolator());

alphaAnim_out.setAnimationListener(new AnimationListener() {

@Override

public void onAnimationStart(Animation arg0) {

}

@Override

public void onAnimationRepeat(Animation arg0) {

}

@Override

public void onAnimationEnd(Animation arg0) {

dismiss();

}

});

}

/

* 判断是否显示

* @return

*/

public boolean isShowing() {

if (popupDialog != null && popupDialog.isShowing()) {

return true;

}

return false;

}

/

* 显示

*/

public void show() {

dismiss();

initAnim();

layout = (RelativeLayout) layoutInflater.inflate(R.layout.view_loadingdialog, null);

circleView = (View) layout.findViewById(R.id.loading_dialog);

layout_bg = (RelativeLayout) layout.findViewById(R.id.bgLayout);

popupDialog = new PopupWindow(layout, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);

View parentView = ((Activity) context).getWindow().findViewById(Window.ID_ANDROID_CONTENT);

popupDialog.showAtLocation(parentView, Gravity.CENTER, 0, 0);

layout_bg.startAnimation(alphaAnim_in);

circleView.startAnimation(rotateAnim);

}

/

* 隐藏

*/

public void dismiss() {

if (popupDialog != null && popupDialog.isShowing()) {

layout_bg.clearAnimation();

circleView.clearAnimation();

popupDialog.dismiss();

}

}

}

这里呢引用了view_loadingdialog.xml,已作整个页面的背景和loading框。

view_loadingdialog.xml

android:layout_width=”match_parent”

android:layout_height=”match_parent” >

android:id=”@+id/bgLayout”

android:layout_width=”match_parent”

android:layout_height=”match_parent”

android:background=”#″ >

android:id=”@+id/loading_dialog”

android:layout_width=”48dp”

android:layout_height=”48dp”

android:layout_centerInParent=”true”

android:background=”@drawable/shape_loading_dialog” />

再看看这个shape_loading_dialog.xml,绘制转动的圆形性状,又不用图片挺好的。

android:shape=”oval” >

android:width=”3dp”

android:dashWidth=”2dp”

android:dashGap=”3dp”

android:color=”#fff”/>

android:startColor=”#00ffffff”

android:endColor=”#00ffffff”

android:angle=”180″/>

就是这样子,实现了第一个圆形进度条。

可是如果做有颜色的圆形进度条呢,或者彩色的,后来想想不如加个图片来实现好了。

LoadingImgDialog.java

public class LoadingImgDialog {

private Context context;

private PopupWindow popupDialog;

private LayoutInflater layoutInflater;

private RelativeLayout layout;

private RelativeLayout layout_bg;

private int residBg;

private View loading_dialog;

/ 背景添加旋转动画效果,实现了转动动作 /

private RotateAnimation rotateAnim;

/ 透明度动画效果 /

private AlphaAnimation alphaAnim_in;

private AlphaAnimation alphaAnim_out;

public LoadingImgDialog(Context context, int residBg) {

layoutInflater = LayoutInflater.from(context);

this.residBg = residBg;

this.context = context;

}

private void initAnim() {

rotateAnim = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

rotateAnim.setDuration(2000);

rotateAnim.setRepeatMode(Animation.RESTART);

rotateAnim.setRepeatCount(-1);

rotateAnim.setInterpolator(new LinearInterpolator());

alphaAnim_in = new AlphaAnimation(0f, 1f);

alphaAnim_in.setFillAfter(true);

alphaAnim_in.setDuration(200);

alphaAnim_in.setInterpolator(new LinearInterpolator());

alphaAnim_out = new AlphaAnimation(1f, 0f);

alphaAnim_out.setFillAfter(true);

alphaAnim_out.setDuration(100);

alphaAnim_out.setInterpolator(new LinearInterpolator());

/ 监听动作,动画结束时,隐藏LoadingColorDialog /

alphaAnim_out.setAnimationListener(new AnimationListener() {

@Override

public void onAnimationStart(Animation arg0) {

}

@Override

public void onAnimationRepeat(Animation arg0) {

}

@Override

public void onAnimationEnd(Animation arg0) {

dismiss();

}

});

}

/

* 判断是否显示

* @return

*/

public boolean isShowing() {

if (popupDialog != null && popupDialog.isShowing()) {

return true;

}

return false;

}

/

* 显示

*/

public void show() {

dismiss();

initAnim();

layout = (RelativeLayout) layoutInflater.inflate(R.layout.view_loadingcolordialog, null);

loading_dialog = (View) layout.findViewById(R.id.loading_dialog);

loading_dialog.setBackgroundResource(residBg);

layout_bg = (RelativeLayout) layout.findViewById(R.id.bgLayout);

popupDialog = new PopupWindow(layout, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);

View parentView = ((Activity) context).getWindow().findViewById(Window.ID_ANDROID_CONTENT);

popupDialog.showAtLocation(parentView, Gravity.CENTER, 0, 0);

layout_bg.startAnimation(alphaAnim_in);

loading_dialog.startAnimation(rotateAnim);

}

/

* 隐藏

*/

public void dismiss() {

if (popupDialog != null && popupDialog.isShowing()) {

layout_bg.clearAnimation();

loading_dialog.clearAnimation();

popupDialog.dismiss();

}

}

}

其实就是修改了一个地方,加入residBg,用图片资源设置圆形进度条那一小部分的背景。

稍稍修改一句代码换一张图片,就变成了另一个圆形进度条了,好玩吧。

loadingColorDialog = new LoadingImgDialog(this, R.drawable.img_loading);

loadingColorDialog2 = new LoadingImgDialog(this, R.drawable.img_loading2);

给看看全屏效果图吧,就稍稍修改一句代码换一张图片哦。

8b89cc4941319f68536a2dc413b60953.png

最后给MainActivity.java看看

public class MainActivity extends Activity implements OnClickListener {

Button bt_loading_dialog;

Button bt_color_loading_dialog;

Button bt_color_loading_dialog2;

LoadingDialog loadingDialog;

LoadingImgDialog loadingColorDialog;

LoadingImgDialog loadingColorDialog2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

}

private void initView() {

bt_loading_dialog = (Button) findViewById(R.id.bt_loading_dialog);

bt_loading_dialog.setOnClickListener(this);

bt_color_loading_dialog = (Button) findViewById(R.id.bt_loading_img_dialog);

bt_color_loading_dialog.setOnClickListener(this);

bt_color_loading_dialog2 = (Button) findViewById(R.id.bt_loading_img_dialog2);

bt_color_loading_dialog2.setOnClickListener(this);

loadingDialog = new LoadingDialog(this);

loadingColorDialog = new LoadingImgDialog(this, R.drawable.img_loading);

loadingColorDialog2 = new LoadingImgDialog(this, R.drawable.img_loading2);

}

@Override

public void onClick(View view) {

switch (view.getId()) {

case R.id.bt_loading_dialog:

loadingDialog.show();

break;

case R.id.bt_loading_img_dialog:

loadingColorDialog.show();

break;

case R.id.bt_loading_img_dialog2:

loadingColorDialog2.show();

break;

default:

break;

}

}

@Override

protected void onDestroy() {

super.onDestroy();

loadingColorDialog.dismiss();

}

@Override

public void onBackPressed() {

if (loadingDialog.isShowing()) {

loadingDialog.dismiss();

} else if (loadingColorDialog.isShowing()){

loadingColorDialog.dismiss();

} else if (loadingColorDialog2.isShowing()){

loadingColorDialog2.dismiss();

} else {

finish();

}

}

}

以上就是对Android 进度条资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218056.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午8:09
下一篇 2026年3月18日 上午8:09


相关推荐

  • wireshark捕获tcp数据包_抓包分析详解

    wireshark捕获tcp数据包_抓包分析详解一.实验目的通过本次实验,掌握使用Wireshark抓取TCP/IP协议数据包的技能,能够深入分析TCP帧格式及“TCP三次握手”。通过抓包和分析数据包来理解TCP/IP协议,进一步提高理论联系实践的能力。二.实验内容1.本次实验重点:利用Wireshark抓TCP包及TCP包的分析。2.本次实验难点:分析抓到的TCP包。3.本次实验环境:Windows7,Wiresha…

    2025年9月27日
    1
  • clion激活码一个月【中文破解版】

    (clion激活码一个月)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S3…

    2022年3月26日
    79
  • WINDOWS无法完成安装,若要在此计算机上安装windows,请重新启动安装

    WINDOWS无法完成安装,若要在此计算机上安装windows,请重新启动安装解决方法 在万能驱动自动装驱动的过程中 取消掉某些主板和显卡的驱动 就是这些驱动导致出现这个错误提示的 或者不懂的直接就取消安装所有驱动 等到你正常进入系统以后你再用其他软件安装没装上的驱动就能用了 比如说你装的 WIN7 系统 里面自带的万能驱动帮你装了某个跟系统不兼容的驱动 使再次开机配置的时候无法完成安装 就会无限弹出这个错误 或者你直接装 WIN10 的系统好了 新系统的万能驱动助理不会帮你装上这些导致错误的不兼容驱动 注 在安装系统的过程当中 遇到任何类似的提示应该都可以用此法解决

    2026年3月18日
    3
  • hostapd android,使用hostapd和dnsmasq实现软AP「建议收藏」

    hostapd android,使用hostapd和dnsmasq实现软AP「建议收藏」由于要共享无线给android,虽然cm6.1可以用ad-hoc,但感觉android连ad-hoc要比连ap耗电。本来想看看有什么usb无线网卡可以在linux下用软ap,顺便用来替换掉上网本的无线网卡,我的上网本在linux下的无线驱动太差劲(可恨的rtl8187),连ad-hoc都不支持。结果在http://linuxwireless.org上发现我台式机的无线网卡的ath5k驱动很完善,可…

    2022年5月21日
    99
  • 孙鑫java基础视频教程_孙鑫老师JAVA无难事视频教程 最适合java入门学习打基础的课程 附源码讲义 12课…

    孙鑫java基础视频教程_孙鑫老师JAVA无难事视频教程 最适合java入门学习打基础的课程 附源码讲义 12课…课程介绍由孙鑫老师亲自授课录制。内容涵盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟,学员通过本套光盘的学习,能够快速掌握Java编程语言,成为Java高手。由孙鑫老师亲自授课录制。内容涵盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟,学员通过本套光盘的学习,能够快速掌握Java编程语言,成为Java高手。从自学者很难弄明白的Java环境配置开始讲解,一步步引领你成为Java高手。2、…

    2022年5月13日
    56
  • dos命令登陆mysql命令

    dos命令登陆mysql命令

    2021年7月17日
    61

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号