2010-08-11 29 views
1

我需要在按钮中显示进度图标,以便用户可以在后台任务正在处理时与其他GUI元素进行交互。我们如何在按钮中显示进度图标

我在Android开发人员网站中搜索过,发现我们可以使用动画绘制,但不知道如何使用它们。请告知。

+0

你找出如何做到这一点? – Emmanuel 2011-10-11 20:40:51

+0

在不使用动画可绘制的情况下执行此操作的非常简单的方法是在设计布局xml中使用“PregressBar”组件。当你需要显示它时,只需将其可见性属性设置为可见,当需要隐藏它时,可以将其可见性属性设置为GONE。但请记住这是UI任务,所以当你需要使用非UI线程来做到这一点时,你需要使用Handler在运行时设置“ProgressBar”组件的状态。 – Maneesh 2011-10-21 05:51:43

回答

0

如果默认的进度指示器对您来说足够好(即转轮),那么您可以使用ProgressBar。要将其从正常进度条更改为纺车,请使用progressBar.setIndeterminate(true)

2

在不使用动画绘制的情况下执行此操作的非常简单的方法是在设计布局xml中使用“PregressBar”组件。当你需要显示它时,只需将其可见性属性设置为可见,当需要隐藏它时,可以将其可见性属性设置为GONE。但请记住这是UI任务,所以当你需要使用非UI线程来做到这一点时,你需要使用Handler在运行时设置“ProgressBar”组件的状态。

下面的id是布局文件中的组件。

<ProgressBar 
android:id="@+id/progressBar1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
</ProgressBar> 

下面是代码用Java编写的文件

ProgressBar prg; 
@Override  
    public void onCreate(Bundle savedInstanceState) 
    {   
     super.onCreate(savedInstanceState);   
     setContentView(R.layout.main1); 
     prg=(ProgressBar)findViewById(R.id.ProgressBar1); 
     prg.setVisibility(ProgressBar.GONE); 
    } 
public void start_background_process() 
{ 
// starting the process 
prg.setVisibility(ProgressBar.VISIBLE); 

new Thread(new Runnable() 
     { public void run() 
     { 
     // Do your background stuff here which takes indefinite time 
     mHandlerUpdateProgress.post(mUpdateUpdateProgress); 

     } 
     }).start(); 
} 
final Handler mHandlerUpdateProgress= new Handler(); 

    final Runnable mUpdateUpdateProgress = new Runnable() { 
     public void run() { 
// ending the process 
      prg.setVisibility(ProgressBar.GONE); 
     } 
    }; 
相关问题