安卓开发04:对话框例子

来源:互联网 发布:什么软件手游代练 编辑:程序博客网 时间:2024/06/11 16:59

layout中设置两个可点击按钮:

<?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_dialog"      android:layout_width="fill_parent"       android:layout_height="wrap_content"      android:text="@string/dialog"      android:onClick="onClickDialog" />      <Button      android:id="@+id/btn_dialogs"      android:layout_width="fill_parent"       android:layout_height="wrap_content"      android:text="@string/progressDialog"      android:onClick="onClickProgressDialog" />     </LinearLayout> 

Activity代码:

package com.example.androidtest;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.app.Dialog;import android.app.ProgressDialog;import android.content.DialogInterface;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.Window;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {    private String tag = "MainActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main); //设置一个View模板        Log.d(tag, "In the onCreate() event");    }    @Override    public void onStart() {        super.onStart();        Log.d(tag, "In the onStart() event");        Toast.makeText(getBaseContext(), "onStart", Toast.LENGTH_SHORT).show();    }    public void onRestart() {        super.onRestart();        Log.d(tag, "In the onRestart() event");    }    public void onResume() {        super.onResume();        Log.d(tag, "In the onResume() event");    }    public void onPause() {        super.onPause();        Log.d(tag, "In the onPause() event");    }    public void onStop() {        super.onStop();        Log.d(tag, "In the onStop() event");    }    public void onDestroy() {        super.onDestroy();        Log.d(tag, "In the onDestroy() event");    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.main, menu);        return true;    }        /**     * 点击打开对话框     * @param v     */    @SuppressWarnings("deprecation")    public void onClickDialog(View v) {        Log.d(tag, "onClickDialog");        showDialog(0);    }    /**     * 点击打开进度条     * @param v     */    public void onClickProgressDialog(View v) {        Log.d(tag, "onClickProgressDialog");        final ProgressDialog progressDialog = new ProgressDialog(this);        progressDialog.setTitle("ProgressDialog"); //设置标题        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置样式        progressDialog.setMessage("please wait...");        progressDialog.setProgress(0); //设置进度开始点        progressDialog.setMax(100); //进度最大是100        progressDialog.show();        new Thread(new Runnable() {            public void run() {                try {                    Thread.sleep(1000);                    progressDialog.setProgress(10); //每隔1秒就可以设置10                    Thread.sleep(1000);                    progressDialog.setProgress(20);                    Thread.sleep(1000);                    progressDialog.setProgress(30);                    Thread.sleep(1000);                    progressDialog.setProgress(40);                    Thread.sleep(1000);                    progressDialog.setProgress(50);                    Thread.sleep(1000);                    progressDialog.setProgress(60);                    Thread.sleep(1000);                    progressDialog.setProgress(70);                    Thread.sleep(1000);                    progressDialog.setProgress(90);                    Thread.sleep(1000);                    progressDialog.setProgress(100);                    Thread.sleep(1000);                    progressDialog.dismiss();                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }).start();    }    @Override    protected Dialog onCreateDialog(int id) {        switch (id) {            case 0:                Builder builder = new AlertDialog.Builder(this); //创建一个对话框                builder.setTitle("Android 对话框"); //设置标题                builder.setMessage("message"); //设置message                builder.setIcon(android.R.drawable.ic_dialog_info); //设置图标                builder.setView(new EditText(this)); //设置一个填写的框                builder.setMultiChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, null, null); //选择框                builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {                                       public void onClick(DialogInterface dialog, int whichButton) {                        Toast.makeText(getBaseContext(), "YES!", Toast.LENGTH_SHORT).show();                    }                });                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {                    public void onClick(DialogInterface dialog, int whichButton) {                        Toast.makeText(getBaseContext(), "NO!", Toast.LENGTH_SHORT).show();                    }                });                return builder.create();        }        return null;    }}

普通对话框:

我们可以看到layout布局视图中有两个按钮,第一个按钮点击后打开的是普通对话框,点击事件android:onClick后调用Activity中的onClickDialog方法

    <Button      android:id="@+id/btn_dialog"      android:layout_width="fill_parent"       android:layout_height="wrap_content"      android:text="@string/dialog"      android:onClick="onClickDialog" />  

Activity中,Dialog代码:

    /**     * 点击打开对话框     * @param v     */    @SuppressWarnings("deprecation")    public void onClickDialog(View v) {        Log.d(tag, "onClickDialog");        showDialog(0);    }        /**     * 需要重写创建Dialog方法     */    @Override    protected Dialog onCreateDialog(int id) {        switch (id) {            case 0:                Builder builder = new AlertDialog.Builder(this); //创建一个对话框                builder.setTitle("Android 对话框"); //设置标题                builder.setMessage("message"); //设置message                builder.setIcon(android.R.drawable.ic_dialog_info); //设置图标                builder.setView(new EditText(this)); //设置一个填写的框                builder.setMultiChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, null, null); //选择框                builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {                                       public void onClick(DialogInterface dialog, int whichButton) {                        Toast.makeText(getBaseContext(), "YES!", Toast.LENGTH_SHORT).show();                    }                });                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {                    public void onClick(DialogInterface dialog, int whichButton) {                        Toast.makeText(getBaseContext(), "NO!", Toast.LENGTH_SHORT).show();                    }                });                return builder.create();        }        return null;    }




进度对话框:

layout中第二个按钮就是调用进度对话框,进度对话框可以显示程序运行进度。

<Button      android:id="@+id/btn_dialogs"      android:layout_width="fill_parent"       android:layout_height="wrap_content"      android:text="@string/progressDialog"      android:onClick="onClickProgressDialog" /> 

Activity中,我们需要创建一个进度Dialog:

  /**     * 点击打开进度条     * @param v     */    public void onClickProgressDialog(View v) {        Log.d(tag, "onClickProgressDialog");        final ProgressDialog progressDialog = new ProgressDialog(this);        progressDialog.setTitle("ProgressDialog"); //设置标题        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置样式        progressDialog.setMessage("please wait...");        progressDialog.setProgress(0); //设置进度开始点        progressDialog.setMax(100); //进度最大是100        progressDialog.show();        new Thread(new Runnable() {            public void run() {                try {                    //每1秒后,进度条显示10%                    Thread.sleep(1000);                    progressDialog.setProgress(10); //每隔1秒就可以设置10                    Thread.sleep(1000);                    progressDialog.setProgress(20);                    Thread.sleep(1000);                    progressDialog.setProgress(30);                    Thread.sleep(1000);                    progressDialog.setProgress(40);                    Thread.sleep(1000);                    progressDialog.setProgress(50);                    Thread.sleep(1000);                    progressDialog.setProgress(60);                    Thread.sleep(1000);                    progressDialog.setProgress(70);                    Thread.sleep(1000);                    progressDialog.setProgress(90);                    Thread.sleep(1000);                    progressDialog.setProgress(100);                    Thread.sleep(1000);                    progressDialog.dismiss();                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }).start();    }




消息模式弹出框:

Toast.makeText(getBaseContext(), "YES!", Toast.LENGTH_SHORT).show(); 

也可以自定义:

          Toast toast=Toast.makeText(getApplicationContext(), "显示带图片的toast", 3000);                         toast.setGravity(Gravity.CENTER, 0, 0);                         //创建图片视图对象                         ImageView imageView= new ImageView(getApplicationContext());                         //设置图片                         imageView.setImageResource(R.drawable.ic_launcher);                         //获得toast的布局                         LinearLayout toastView = (LinearLayout) toast.getView();                         //设置此布局为横向的                         toastView.setOrientation(LinearLayout.HORIZONTAL);                         //将ImageView在加入到此布局中的第一个位置                         toastView.addView(imageView, 0);                         toast.show();