安卓开发04:对话框例子

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();



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值