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

Android常用Dialog总结

2010-05-27 12:12 351 查看
选作了几种常用对话框

普通对话框 日期选择对画框 进度条对话框 和 定制iew的对话框

通过四个按钮来触发事件:

package com.Dialog;
import java.util.Calendar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
//import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.LinearLayout;
public class DialogActivity extends Activity {
/** Called when the activity is first created. */
final int DIALOG_WELCOME = 1;
final int DIALOG_DATEPICKER = 2;
final int DIALOG_PROGRESS = 3;
final int DIALOG_LOGIN = 4;
final int MAXPROGRESS = 200;
final int MSG_PROGRESS = 1;

Calendar c;

ProgressDialog pd;
Handler pHandler;

Button welcome;
Button date;
Button progress;
Button login;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

c = Calendar.getInstance();//时间设置对话框

pHandler = new Handler()//进度框  处理发来的消息Handler
{
@Override
public void handleMessage(Message msg)
{
super.handleMessage(msg);
//判断消息
switch(msg.what)
{
case MSG_PROGRESS:
if(pd.getProgress() >= MAXPROGRESS)
{//满了进度条就消失
pd.dismiss();
}
else
{//否则就进一格
pd.incrementProgressBy(1);
pHandler.sendEmptyMessageDelayed(MSG_PROGRESS, 100);
}
break;
default:
break;
}
}
};

welcome = (Button) findViewById(R.id.welcomeDialog);
welcome.setOnClickListener(new ClickListener());
date = (Button) findViewById(R.id.dateDialog);
date.setOnClickListener(new ClickListener());
progress = (Button) findViewById(R.id.progressDialog);
progress.setOnClickListener(new ClickListener());
login = (Button) findViewById(R.id.loginDialog);
login.setOnClickListener(new ClickListener());

}

@Override
protected Dialog onCreateDialog(int id)
{
switch(id)
{
case DIALOG_WELCOME:
return new AlertDialog.Builder(DialogActivity.this)
.setIcon(R.drawable.icon)
.setTitle("欢迎~!")
.setMessage("欢迎使用本程序!")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
/* User clicked OK so do some stuff */
}
}).create();
case DIALOG_DATEPICKER:
return new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {

public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
/*
* 设置好日期后的回调方法
* 可以根据设置好的内容更新用户界面
* 或者更新系统时间
*/
}
}, c.get(Calendar.YEAR),
c.get(Calendar.MONTH),
c.get(Calendar.DAY_OF_MONTH));
case DIALOG_PROGRESS:
pd = new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置进度条格数
pd.setMax(MAXPROGRESS);
pd.setProgress(0);
return pd;
case DIALOG_LOGIN:
//LayoutInflater factory = LayoutInflater.from(DialogActivity.this);
//final View ld = factory.inflate(R.layout.logindialog, null);
//上面和下面两种获取ld的方法皆可
LinearLayout ld =
(LinearLayout)getLayoutInflater().inflate(R.layout.logindialog, null);
return new AlertDialog.Builder(DialogActivity.this)
.setIcon(R.drawable.icon)
.setTitle("User Login")
.setView(ld)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked cancel so do some stuff */
}
}).create();
default:
return null;
}
}

class ClickListener implements OnClickListener
{
public void onClick(View v)
{
if(v == welcome)
{
showDialog(DIALOG_WELCOME);
}
else if(v == date)
{
showDialog(DIALOG_DATEPICKER);
}
else if(v == progress)
{
showDialog(DIALOG_PROGRESS);
pHandler.sendEmptyMessage(MSG_PROGRESS);
}
else if(v == login)
{
showDialog(DIALOG_LOGIN);
}
}
}
}


main.xml:

<?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"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:id="@+id/welcomeDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcomeDialog"
/>
<Button
android:id="@+id/dateDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dateDialog"
/>
<Button
android:id="@+id/progressDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/progressDialog"
/>
</LinearLayout>


logindialog.xml

<?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">
<TextView
android:id="@+id/username_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft = "20px"
android:layout_marginRight = "20px"
android:gravity = "left"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/username"
/>
<EditText
android:id="@+id/username_edit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20px"
android:layout_marginRight="20px"
android:scrollHorizontally="true"
android:autoText="false"
android:capitalize="none"
android:hint="请输入您的用户名!"
android:gravity="fill_horizontal"
android:textAppearance="?android:attr/textAppearanceMedium"
/><!--fill_horizontal 可能的话横向填满容器 -->
<EditText
android:id="@+id/ceshi"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:scrollHorizontally="false"
android:autoText="false"
android:capitalize="none"
android:numeric="integer"
android:gravity="fill_horizontal"
android:textAppearance="?android:attr/textAppearanceMedium"
/>

<TextView
android:id="@+id/password_view"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:text="@string/password"
android:gravity="left"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/password_edit"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:scrollHorizontally="true"
android:autoText="false"
android:capitalize="none"
android:gravity="fill_horizontal"
android:password="true"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>






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