Android开发之ProgressDialog的使用

ProgressDialog类似于ProgressBar类。

用于显示一个过程,通常用于耗时操作。

几个方法介绍:

1.setMax()

设置对话框中进度条的最大值。

2.setTile()

设置标题。

3.setProgressStyl()

设置对话框中进度条的样式。例如:环形和水平。

参数:

ProgressDialog.STYLE_SPINNER 环形精度条

ProgressDialog.STYLE_HORIZONTAL 水平样式的进度条

4.setMessage()

设置显示的内容。

演示实例:

用于模拟一个耗时的连接操作。

图:

MainActivity.java

public class MainActivity extends Activity {Button button, button2;ProgressDialog progressDialog;public final static String ABOUT_SERVER = "Connect";// 信息广播接收BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context c, Intent intent) {String str = intent.getStringExtra("DATA");if (str.equals("0")) {progressDialog.setMessage("开始连接");} else if (str.equals("1")) {progressDialog.setMessage("连接完毕");} else {progressDialog.dismiss();}}};@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 注册广播监听IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(ABOUT_SERVER);registerReceiver(broadcastReceiver, intentFilter);}public void click(View v) {progressDialog = new ProgressDialog(MainActivity.this);progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);progressDialog.setMessage("准备建立连接·············");progressDialog.show();Intent intent = new Intent(MainActivity.this, ServerActivity.class);startService(intent);}}activity_main.xml<LinearLayout xmlns:android=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="${relativePackage}.${activityClass}" ><Buttonandroid:id="@+id/but"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="click"android:text="点击" /></LinearLayout>ServerActivity.javapublic class ServerActivity extends Service {Handler handler = new Handler() {public void handleMessage(Message msg) {Intent intent = new Intent(MainActivity.ABOUT_SERVER);if (msg.what == 0) {intent.putExtra("DATA", "0");} else if (msg.what == 1) {intent.putExtra("DATA", "1");} else {intent.putExtra("DATA", "2");ServerActivity.this.stopSelf();}sendBroadcast(intent);};};@Overridepublic void onCreate() {super.onCreate();Thread thread = new Thread(new Runnable() {@Overridepublic void run() {// 要做的事try {for (int i = 0; i < 3; i++) {Thread.sleep(1000);Message message = new Message();message.what = i;handler.sendMessage(message);}} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}});thread.start();}@Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubreturn null;}}AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android=""package="com.example.test"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="21" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name" ><service android:name="com.example.test.ServerActivity"></service><activityandroid:name=".MainActivity"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>在做此实例时,遇到报错,一大串红字,最关键的一句话:This message is already in use.

从网上查得:与handler发送Message相关,消息已经在消息队列了,而且正被使用,,而如果往同一个队列发送相同的对象就会报错。

造成这个错误是因为:

梦想,并不奢侈,只要勇敢地迈出第一步。

Android开发之ProgressDialog的使用

相关文章:

你感兴趣的文章:

标签云: