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