您的位置:首页 > 移动开发 > Android开发

Android入门之AlertDialog

2014-11-18 15:31 489 查看
本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!

时隔一年,又要准备做Android的开发了,最近复习和整理一下Android的知识。这次要说的是AlertDialog,这种对话框会经常遇到。AlertDialog跟WIN32开发中的Dialog不一样,AlertDialog是非阻塞的,而阻塞的对话框用的是PopupWindow。

先贴出程序运行的截图:



main.xml的源码:

[xhtml] view
plaincopyprint?

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

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

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<Button android:id="@+id/Button01" android:layout_height="wrap_content" android:text="非Layout型对话框" android:layout_width="fill_parent"></Button>

<Button android:id="@+id/Button02" android:layout_height="wrap_content" android:text="Layout型对话框" android:layout_width="fill_parent"></Button><View android:id="@+id/View01" android:layout_width="wrap_content" android:layout_height="wrap_content"></View>

</LinearLayout>

下图是非Layout型对话框,直接使用AlertDialog



下图是使用了Layout的对话框,可以自定义控件,实现更复杂的对话框



dialoglayout.xml的源码:

[xhtml] 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="wrap_content"

android:orientation="vertical">

<EditText android:layout_height="wrap_content"

android:layout_width="fill_parent" android:layout_marginLeft="20dip"

android:layout_marginRight="20dip" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/edtInput"/>

</LinearLayout>

程序源码:

[java] view
plaincopyprint?

package com.testAlertDialog;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.Context;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.Gravity;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.PopupWindow;

public class testAlertDialog extends Activity {

Button btnShowDialog;

Button btnShowDialog_Layout;

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

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//定义按钮

btnShowDialog=(Button)this.findViewById(R.id.Button01);

btnShowDialog.setOnClickListener(new ClickEvent());

btnShowDialog_Layout=(Button)this.findViewById(R.id.Button02);

btnShowDialog_Layout.setOnClickListener(new ClickEvent());

}

//统一处理按键事件

class ClickEvent implements OnClickListener{

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

if(v==btnShowDialog)

showDialog(testAlertDialog.this);

else if(v==btnShowDialog_Layout)

showDialog_Layout(testAlertDialog.this);

}

}

//显示基本的AlertDialog

private void showDialog(Context context) {

AlertDialog.Builder builder = new AlertDialog.Builder(context);

builder.setIcon(R.drawable.icon);

builder.setTitle("Title");

builder.setMessage("Message");

builder.setPositiveButton("Button1",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

setTitle("点击了对话框上的Button1");

}

});

builder.setNeutralButton("Button2",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

setTitle("点击了对话框上的Button2");

}

});

builder.setNegativeButton("Button3",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

setTitle("点击了对话框上的Button3");

}

});

builder.show();

}

//显示基于Layout的AlertDialog

private void showDialog_Layout(Context context) {

LayoutInflater inflater = LayoutInflater.from(this);

final View textEntryView = inflater.inflate(

R.layout.dialoglayout, null);

final EditText edtInput=(EditText)textEntryView.findViewById(R.id.edtInput);

final AlertDialog.Builder builder = new AlertDialog.Builder(context);

builder.setCancelable(false);

builder.setIcon(R.drawable.icon);

builder.setTitle("Title");

builder.setView(textEntryView);

builder.setPositiveButton("确认",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

setTitle(edtInput.getText());

}

});

builder.setNegativeButton("取消",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

setTitle("");

}

});

builder.show();

}

}

package com.ceac.deng;

import android.support.v7.app.ActionBarActivity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.os.SystemClock;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Chronometer;

import android.widget.Toast;

import android.widget.Chronometer.OnChronometerTickListener;

public class MainActivity extends ActionBarActivity {

private Chronometer chronometer;

private Button stopButton;

private Button startButton;

private Button button;

private Button button2;

private Button button3;

private Button button4;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findView();

chronometer.setBase(SystemClock.elapsedRealtime());

// chronometer.setFormat("已经用了多少时间: %s");

chronometer.start();

chronometer.setOnChronometerTickListener(new OnChronometerTickListener() {

@Override

public void onChronometerTick(Chronometer chronometer) {

// TODO Auto-generated method stub

if (SystemClock.elapsedRealtime() - chronometer.getBase() >= 100000)

{

chronometer.stop();

}

}

});

setListenner();

}

/**

* findView

*/

private void findView()

{

chronometer = (Chronometer) findViewById(R.id.chronometer1);

stopButton = (Button) findViewById(R.id.stop);

startButton = (Button) findViewById(R.id.start);

button = (Button) findViewById(R.id.button1);

button2 = (Button) findViewById(R.id.button2);

button3 = (Button) findViewById(R.id.button3);

button4 = (Button) findViewById(R.id.button4);

}

private void setListenner()

{

stopButton.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

chronometer.stop();

System.out.println("stop chronometer....");

}

});

startButton.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

chronometer.setBase(SystemClock.elapsedRealtime());

chronometer.start();

System.out.println("start Chronometer....");

}

});

button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();

// alertDialog.setIcon(R.drawable.ic_launcher);

// alertDialog.setTitle("系统提示");

// alertDialog.setMessage("带取消 、中立、确定按钮的对话框");

//// alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", listener);

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

builder.setIcon(R.drawable.ic_launcher);

builder.setTitle("系统提示");

builder.setMessage("带取消 、中立、确定按钮的对话框");

//确定

builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

showToast("点击了确定的按钮");

}

});

//中立

builder.setNeutralButton("中立", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

showToast("点击了中立按钮");

}

});

//取消

builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

showToast("点击了取消按钮");

}

});

builder.show();

}

});

}

/**

*

* @param str

*/

private void showToast(String str)

{

Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: