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

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

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

看下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张小图

先看第一张,分析下代码,用自定义的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=”#66000000″ >

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);

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

最后给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 进度条资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

android 进度条 代码,Android 进度条使用详解及示例代码相关推荐

  1. Android运行ListView的代码,Android ListView组件详解及示例代码

    Android 列表组件 ListView 列表组件是开发中经常用到组件,使用该组件在使用时需要为它提供适配器,由适配器提供来确定显示样式和显示数据. 下面看一个例子: 新建一个项目Lesson8_L ...

  2. Android 6种触摸事件,Android 的触摸事件详解及示例代码

    由于触摸(Touch)而触发的事件 Android的事件:onClick, onScroll,onFling等等,都是由许多个Touch组成的.其中Touch的第一个状态肯定是ACTION_DOWN, ...

  3. java小程序详解_微信小程序登录Java后台接口(详解,附示例代码)

    首先看一下官方文档 地址:微信小程序官方文档API登录接口 我们先对官方给的时序图进行简单的分析 1.当小程序调用wx.login()时,会获得一个code(临时登录凭证),然后我们需要用wx.req ...

  4. c语言生成随机坐标,C语言 文件的随机读写详解及示例代码

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...

  5. java中let_java Signleton模式详解及示例代码

    Singleton模式是创建模式. 这种模式只涉及一个类是负责创建自己的对象. 该类确保只有一个对象获得创建. 这个类提供了一种方法来访问它的唯一对象. 例如,当设计一个用户界面,我们只能有一个主应用 ...

  6. java lock代码写法_java Lock接口详解及实例代码

    java  lock接口 java.util.concurrent.locks 接口lock public interface loce loce实现提供了比使用synchronized方法和语句可获 ...

  7. 联邦学习(Federated Learning)详解以及示例代码

    联邦学习也称为协同学习,它可以在产生数据的设备上进行大规模的训练,并且这些敏感数据保留在数据的所有者那里,本地收集.本地训练.在本地训练后,中央的训练协调器通过获取分布模型的更新获得每个节点的训练贡献 ...

  8. ROS中的多坐标变换详解(示例+代码)

    目录 坐标变换的数学基础 多坐标变换与静态/动态坐标变换的不同之处 tf坐标转换的实质 多坐标变换 静态/动态坐标变换 坐标系相对关系的发布 命令行形式:another_static_pub.laun ...

  9. 23种设计模式详解与示例代码(详解附DEMO)

    设计模式在Java中的应用与实现

最新文章

  1. window上创建python3虚拟环境
  2. C# 并行任务——Parallel类
  3. python decode hex_在python2.7中使用b64decode()将base64转换为hex
  4. log4j异步mysql_log4j2用Log4jContextSelector启动参数配置全局异步日志是如何使用disruptor...
  5. 转: java多线程-ThreadPoolExecutor的拒绝策略RejectedExecutionHandler
  6. CentOS 7安装zabbix-agent 5.0报错:依赖检测失败:libpcre.so.0()(64bit)/获取GPG密钥失败解决
  7. 转 ---《协程小结》
  8. ROS1 robot path tracking
  9. Activity intent经常使用的 FLAG 集合
  10. Atitit 嵌入式系统与pc系统的对比 目录 1. 哈佛结构和冯诺依曼结构 普林斯顿结构区 1 2. 中断程序 类库调用 1 3. 指令集 三大流程语句 与 运算语句 赋值语句 1 4. 异
  11. Proteus 8 Professional 下载安装教程
  12. 水经注影像离线包简介
  13. SLAM入门-相机成像原理与公式推导
  14. 北斗卫星导航系统的研究及应用
  15. SQL SERVER数据库中勒索病毒 SQL数据库中病毒恢复数据
  16. 电脑怎么设置计算机系统,电脑定时开关机如何设置?
  17. 大学为什么没有UI设计专业
  18. Python线程 一
  19. PostgreSQL 荣获 DB-Engines 2018 年度数据库管理系统称号
  20. 2022-2027年中国金融市场规模现状及投资规划建议报告

热门文章

  1. 今天看到{飞鸽传书2009}
  2. 职场好人缘的26个细节
  3. 想加入IT行业为何建议你学Python,学完真值!
  4. 程序员最常用的7大编程实战网站,阿里腾讯面试题也用它!
  5. 干得最多最累,工资还不如新人
  6. BATJ一线大公司需要什么样的前端
  7. html5 斜率画线,一次函数的斜率与图像的关系
  8. 小程序 delete_程序员崩溃的43个瞬间!搞工科的是不是都这样?
  9. 无监督学习 | KMeans与KMeans++原理
  10. 人类长非编码RNA表达数据库,整合9种重要生物学场景(发育、癌症、病毒侵染等)...