Android ProgressBar手动控制开始和停止

这两天有个需求,点击按钮从SD卡解压压缩包,并读取压缩包内txt文档内容,然后在街面上显示出来。毕竟IO操作很耗时,如果文件较大会花费不少时间。所以,在处理数据的时候能给个进度就好了。我们通常的做法就是,点击按钮后弹出一个加载框或者加载进度条,等数据处理结束后,再让对话框消失。

但是现在的需求是,用一个布局,左侧显示刷新列表,右侧显示ProgressBar。那么问题来了,ProgressBar显示的很大,而且打开后就一直在转动,无法控制。那么就来解决这两个问题吧~

第一个问题:控制ProgressBar的大小和样式

首先,创建一个style样式,设置宽高和图片,具体如下:

<style name="ProgressCircle">
    <item name="android:indeterminateDrawable">@drawable/ic_refresh_grey_600_24dp</item>
    <item name="android:minWidth">25dp</item>
    <item name="android:minHeight">25dp</item>
    <item name="android:maxWidth">60dp</item>
    <item name="android:maxHeight">60dp</item>
</style>

然后,写一个xml文件progressbar_circle.xml,设置ProgressBar的转动效果。

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
        android:drawable="@drawable/ic_refresh_grey_600_24dp"
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="360">
</rotate>

到这里,大小固定,转动效果也有了。

第二个问题:手动控制转动的开始和停止

开始的时候,设置setIndeterminateDrawable和setProgressDrawable为定义的xml文件,即可开始转动。

结束的时候,设置setIndeterminateDrawable和setProgressDrawable为固定的图片,即可停止转动。

/**
 * 开始刷新动画
 */
public void startRefresh() {
   progressbar_refresh.setIndeterminateDrawable(getResources().getDrawable(
         R.drawable.progressbar_circle));
   progressbar_refresh.setProgressDrawable(getResources().getDrawable(
         R.drawable.progressbar_circle));
}

/**
 * 停止刷新动画
 */
public void stopRefresh() {
   progressbar_refresh.setIndeterminateDrawable(getResources().getDrawable(
         R.drawable.ic_refresh_grey_600_24dp));
   progressbar_refresh.setProgressDrawable(getResources().getDrawable(
         R.drawable.ic_refresh_grey_600_24dp));
}

以上。

原文地址:https://www.cnblogs.com/ldq2016/p/8298105.html

时间: 2024-10-14 21:04:17

Android ProgressBar手动控制开始和停止的相关文章

android progressBar和seekBar的小DEMO

  这里演示的是android ProgressBar的条形进度条,因为android条形进度条初始时静态的而不像圆形的进度条是动态的: 而seekbar是android的拖动条,使用场景比如在音乐播放或者视频播放的时候~~~~ xml布局文件(需要注意,在使用条形进度条的时候要选择的style类型为 "?android:attr/progressBarStyleHorizontal" ): <RelativeLayout xmlns:android="http://s

Android ProgressBar详解以及自定义

版本:1.0 日期:2014.5.16 版权:© 2014 kince 转载注明出处 这一次主要说一下Android下的进度条,为什么是它呢,因为近期被其各种美轮美奂的设计所倾倒,计划逐渐去实现.另外一个因素也是它也是为数不多的直接继承于View类的控件,从中可以学习到一些自定义控件的知识.下面列举了一些个人觉得还算漂亮的进度条,仅供参考. 是不是很漂亮,其实就像上面图形展示的那样,进度条大体上无非就是这几种形式.这样一来肯定是需要自定义了,所以方向有两个:要么继承于系统的ProgressBar

【转】android错误 aapt.exe已停止工作的解决方法

http://www.jb51.net/article/57420.htm 在使用eclipse进行安卓java的编程的时候,有时候我们会遇到这样的问题:那就是无故弹出aapt.exe停止工作的提示,虽然程序不会崩溃,但是这个提示经常弹出很是烦人.今天,小编就来教大家aapt.exe停止工作如何解决 android异常——aapt.exe已停止工作在android开发时,当build项目时,发生如下异常:aapt.exe已停止工作,其他无任何错误提示,发生这个错误一般是资源文件或是xml文件中有

花样Android ProgressBar

普通圆形ProgressBar 该类型进度条也就是一个表示运转的过程,例如发送短信,连接网络等等,表示一个过程正在执行中. 一般只要在XML布局中定义就可以了. <progressBar android:id="@+id/widget43" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="

Android ProgressBar 反向进度条/进度条从右到左走

最近的项目,有个需求需要使用条状图显示比例,并且右对齐,见下图: 我想到了使用进度条,这样不就不需要在代码动态绘制条状了,省了很多活. 那么进度条怎样从右向左显示呢? 方案一: 将ProgressBar的前背景反着用,将前景色设置为和整个大背景同一色,将背景设置为你要的条状图颜色,这样就看不出实际的进度,看到的是进度背景,在视觉上看上去就是右对齐了.实际上还是原来那个进度条. 缺点:我这个进度条是放在ListView的item中的,点击listview,因为listview有选中的背景显示出来,

一个WP8样式的Android ProgressBar

一个WP8样式的进度对话框.对应Android转圈圈的ProgressBar.使用方法和普通的dialog一样 public class Win8ProgressDialog extends Dialog {     private WPLoading loading;     public Win8ProgressDialog(Context context) {         super(context);     }     public Win8ProgressDialog(Conte

android ProgressBar定制模式,自定义模式动画文件

1.indeterminate mode | 没有具体进度的进度条 1.1 定制动画文件[html] view plaincopy <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminateDrawable="@drawable/progress_my_style" style=&quo

使用android ProgressBar和Toast生成一个界面

首先我需要这样一个界面 这个界面是在使用AudioManager.adjustStreamVolume(int streamType, int direction, int flags)显示出来的,记住flags这里传 AudioManager.FLAG_SHOW_UI才会显示 不然只是逻辑上调整了某个流的声音,用户他看不到界面不知道成功与否. 然后我有一个功能界面是和这个一样的,但功能不一样,好吧,我知道android自带的界面并不好看,但这里只是说明原理和方法,美观不予讨论. 这里核心的2个

android ProgressBar 进度条的进度两端是圆角的方法

转自 http://www.jianshu.com/p/6e7ea842d5ce 另外工作原理可以参考http://blog.csdn.net/lan603168/article/details/44705425 ProgressBar 自定义的时候可能会遇到一个问题,希望进度条中的进度的两端都是圆角的(或者进度的末端是圆角的):如下图: progress bar rounder 但是根据自定义的shape 或者是 layer-list却总是很难做到,几乎都是被clip成了直角的样子: prog