展会信息港展会大全

Android新手入门教程(七):理解Activityの显示“稍微复杂”对话框
来源:互联网   发布日期:2016-01-14 10:54:29   浏览:822次  

导读:搀蚖“对话框”进度条,也可以创建一个显示“操作进度”的对话框,例如显示正在下载的状态。 1.创建一个名为Dialog的工程。 2.main.xml中的代码。[java] v...

除了“对话框”进度条,也可以创建一个显示“操作进度”的对话框,例如显示正在下载的状态。

1.创建一个名为Dialog的工程。

2.main.xml中的代码。

[java] view plaincopyprint?<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<Button

android:id="@+id/btn_dialog3"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:onClick="onClick3"

android:text="Click to display a detailed progress dialog" />

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<Button

android:id="@+id/btn_dialog3"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:onClick="onClick3"

android:text="Click to display a detailed progress dialog" />

</LinearLayout>3.DialogActivity中的代码。

[java] view plaincopyprint?package net.horsttnann.Dialog;

import android.app.Activity;

import android.app.Dialog;

import android.app.ProgressDialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.View;

import android.widget.Toast;

public class DialogActivity extends Activity {

ProgressDialog progressDialog;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

public void onClick3(View v) {

showDialog(1);

progressDialog.setProgress(0);

new Thread(new Runnable() {

public void run() {

for (int i = 1; i <= 15; i++) {

try {

// ---simulate doing something lengthy---

Thread.sleep(1000);

// ---update the dialog---

progressDialog.incrementProgressBy((int) (100 / 15));

} catch (InterruptedException e) {

e.printStackTrace();

}

}

progressDialog.dismiss();

}

}).start();

}

@Override

protected Dialog onCreateDialog(int id) {

switch (id) {

case 1:

progressDialog = new ProgressDialog(this);

progressDialog.setIcon(R.drawable.ic_launcher);

progressDialog.setTitle("Downloading files...");

progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

int whichButton) {

Toast.makeText(getBaseContext(), "OK clicked!",

Toast.LENGTH_SHORT).show();

}

});

progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

int whichButton) {

Toast.makeText(getBaseContext(), "Cancel clicked!",

Toast.LENGTH_SHORT).show();

}

});

return progressDialog;

}

return null;

}

}

package net.horsttnann.Dialog;

import android.app.Activity;

import android.app.Dialog;

import android.app.ProgressDialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.View;

import android.widget.Toast;

public class DialogActivity extends Activity {

ProgressDialog progressDialog;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

public void onClick3(View v) {

showDialog(1);

progressDialog.setProgress(0);

new Thread(new Runnable() {

public void run() {

for (int i = 1; i <= 15; i++) {

try {

// ---simulate doing something lengthy---

Thread.sleep(1000);

// ---update the dialog---

progressDialog.incrementProgressBy((int) (100 / 15));

} catch (InterruptedException e) {

e.printStackTrace();

}

}

progressDialog.dismiss();

}

}).start();

}

@Override

protected Dialog onCreateDialog(int id) {

switch (id) {

case 1:

progressDialog = new ProgressDialog(this);

progressDialog.setIcon(R.drawable.ic_launcher);

progressDialog.setTitle("Downloading files...");

progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

int whichButton) {

Toast.makeText(getBaseContext(), "OK clicked!",

Toast.LENGTH_SHORT).show();

}

});

progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

int whichButton) {

Toast.makeText(getBaseContext(), "Cancel clicked!",

Toast.LENGTH_SHORT).show();

}

});

return progressDialog;

}

return null;

}

}4.按F11调试。

效果图:

提示:

想要创建一个显示进度的对话框,首先要创建一个ProgressDialog类的实例,然后设置各种状态,图标、标题、样式等等:

[java] view plaincopyprint?progressDialog = new ProgressDialog(this);

progressDialog.setIcon(R.drawable.ic_launcher);

progressDialog.setTitle("Downloading files...");

progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

progressDialog = new ProgressDialog(this);

progressDialog.setIcon(R.drawable.ic_launcher);

progressDialog.setTitle("Downloading files...");

progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);然后设置两个按钮:

[java] view plaincopyprint?progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

int whichButton) {

Toast.makeText(getBaseContext(), "OK clicked!",

Toast.LENGTH_SHORT).show();

}

});

progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

int whichButton) {

Toast.makeText(getBaseContext(), "Cancel clicked!",

Toast.LENGTH_SHORT).show();

}

});

progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

int whichButton) {

Toast.makeText(getBaseContext(), "OK clicked!",

Toast.LENGTH_SHORT).show();

}

});

progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

int whichButton) {

Toast.makeText(getBaseContext(), "Cancel clicked!",

Toast.LENGTH_SHORT).show();

}

});使用一个线程显示进度条的状态:

[java] view plaincopyprint?progressDialog.setProgress(0);

new Thread(new Runnable() {

public void run() {

for (int i = 1; i <= 15; i++) {

try {

// ---simulate doing something lengthy---

Thread.sleep(1000);

// ---update the dialog---

progressDialog.incrementProgressBy((int) (100 / 15));

} catch (InterruptedException e) {

e.printStackTrace();

}

}

progressDialog.dismiss();

}

}).start();

progressDialog.setProgress(0);

new Thread(new Runnable() {

public void run() {

for (int i = 1; i <= 15; i++) {

try {

// ---simulate doing something lengthy---

Thread.sleep(1000);

// ---update the dialog---

progressDialog.incrementProgressBy((int) (100 / 15));

} catch (InterruptedException e) {

e.printStackTrace();

}

}

progressDialog.dismiss();

}

}).start();当进度条到达100%的时候,它就被解除了。

摘自horsttnann的专栏

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港