答案 0 :(得分:1)
由于不推荐使用ProgressDialog
,因此您应该使用ProgressBar
代替。
使用此方法,您可以创建一个简单的ProgressBar
以及TextView
指标,用于百分比和小数进度。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<ProgressBar
android:id="@+id/determinateBar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_centerInParent="true"
style="@android:style/Widget.Holo.Light.ProgressBar.Horizontal" />
<TextView
android:id="@+id/tv_percent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="10"
android:layout_below="@id/determinateBar"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true" />
<TextView
android:id="@+id/tv_fraction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="10/100"
android:layout_below="@id/determinateBar"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true" />
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_below="@+id/tv_fraction"
android:layout_centerInParent="true"
android:text="Run" />
</RelativeLayout>
然后创建一个您想要使用的值的自定义资源字符串数组。
<resources>
<string-array name="numbers">
<item> ০ </item>
<item> ১ </item>
<item> ২ </item>
<item> ৩ </item>
<item> ৪ </item>
<item> ৫ </item>
<item> ৬ </item>
<item> ৭ </item>
<item> ৮ </item>
<item> ৯ </item>
<item> ১০ </item>
<item> ১১ </item>
<item> ১২ </item>
<item> ১৩ </item>
<item> ১৪ </item>
<item> ১৫ </item>
<item> ১৬ </item>
<item> ১৭ </item>
<item> ১৮ </item>
<item> ১৯ </item>
<item> ২০ </item>
<item> ২১ </item>
<item> ২২ </item>
<item> ২৩ </item>
<item> ২৪ </item>
<item> ২৫ </item>
<item> ২৬ </item>
<item> ২৭ </item>
<item> ২৮ </item>
<item> ২৯ </item>
<item> ৩০ </item>
<item> ৩১ </item>
<item> ৩২ </item>
<item> ৩৩ </item>
<item> ৩৪ </item>
<item> ৩৫ </item>
<item> ৩৬ </item>
<item> ৩৭ </item>
<item> ৩৮ </item>
<item> ৩৯ </item>
<item> ৪০ </item>
<item> ৪১ </item>
<item> ৪২ </item>
<item> ৪৩ </item>
<item> ৪৪ </item>
<item> ৪৫ </item>
<item> ৪৬ </item>
<item> ৪৭ </item>
<item> ৪৮ </item>
<item> ৪৯ </item>
<item> ৫০ </item>
<item> ০ </item> <!-- TODO Complete array -->
<item> ১ </item>
<item> ২ </item>
<item> ৩ </item>
<item> ৪ </item>
<item> ৫ </item>
<item> ৬ </item>
<item> ৭ </item>
<item> ৮ </item>
<item> ৯ </item>
<item> ১০ </item>
<item> ১১ </item>
<item> ১২ </item>
<item> ১৩ </item>
<item> ১৪ </item>
<item> ১৫ </item>
<item> ১৬ </item>
<item> ১৭ </item>
<item> ১৮ </item>
<item> ১৯ </item>
<item> ২০ </item>
<item> ২১ </item>
<item> ২২ </item>
<item> ২৩ </item>
<item> ২৪ </item>
<item> ২৫ </item>
<item> ২৬ </item>
<item> ২৭ </item>
<item> ২৮ </item>
<item> ২৯ </item>
<item> ৩০ </item>
<item> ৩১ </item>
<item> ৩২ </item>
<item> ৩৩ </item>
<item> ৩৪ </item>
<item> ৩৫ </item>
<item> ৩৬ </item>
<item> ৩৭ </item>
<item> ৩৮ </item>
<item> ৩৯ </item>
<item> ৪০ </item>
<item> ৪১ </item>
<item> ৪২ </item>
<item> ৪৩ </item>
<item> ৪৪ </item>
<item> ৪৫ </item>
<item> ৪৬ </item>
<item> ৪৭ </item>
<item> ৪৮ </item>
<item> ৪৯ </item>
<item> ৫০ </item>
</string-array>
接下来,在您的活动中使用此数组相对于您的操作。
public class MainActivity extends Activity {
private int progressStatus = 0;
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button btn = (Button) findViewById(R.id.btn);
ProgressBar progressBar = (ProgressBar) findViewById(R.id.determinateBar);
TextView percent = (TextView) findViewById(R.id.tv_percent);
TextView fraction = (TextView) findViewById(R.id.tv_fraction);
String[] numbers = getResources().getStringArray(R.array.numbers);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Set the progress status zero on each button click
progressStatus = 0;
// Start the lengthy operation in a background thread
new Thread(new Runnable() {
@Override
public void run() {
while(progressStatus < 100){
// Update the progress status
progressStatus +=1;
// Try to sleep the thread for 20 milliseconds
try{
Thread.sleep(20);
}catch(InterruptedException e){
e.printStackTrace();
}
// Update the progress bar
handler.post(new Runnable() {
@Override
public void run() {
pb.setProgress(progressStatus);
// Show the progress on TextView
percent.setText(numbers[progressStatus]);
fraction.setText(numbers[progressStatus] + "/১০০");
}
});
}
}
}).start(); // Start the operation
}
});
}
}