Thread.sleep(long time)要实现,开辟一个普通的线程来关闭也不能实现,下面的示例是采用Handler技术与Runnable来共同实现了该功能,是麻烦了点,但是没有办法。

一、实的功能与操作:点击菜单->点击菜单项->会弹出对话框,该对话框中有一个文字为关闭的按钮->点击对话框中的关闭按钮->会看到按钮上面文件产生了变化,提示多少秒关闭对话框->当时间到时,对话框会被自动关闭。
二、实现步骤:
第一步: res/layout/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"
/>
</LinearLayout>
第二步:java代码
package com.fs.activity;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements OnMenuItemClickListener,
android.view.View.OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public boolean onCreateOptionsMenu(Menu menu) {
MenuItem mt1 = menu.add("对话框");
mt1.setOnMenuItemClickListener(this);
return true;
}
private Button button,button1;
private AlertDialog dialog;
@Override
public boolean onMenuItemClick(MenuItem item) {
if ("对话框".equals(item.getTitle())) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
dialog = builder.create();
dialog.setTitle("天花板");
button = new Button(this);
button.setText("关闭");
button.setOnClickListener(this);
dialog.setView(button);
dialog.show();
}
return true;
}
// 点击关闭按钮的回调函数
@Override
public void onClick(View v) {
Button btn = (Button) v;
if (button == v) {
Toast.makeText(this, "关闭", Toast.LENGTH_SHORT).show();
handler.postDelayed(runnable, 1000);
}
}
public Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("run...");
Message msg = handler.obtainMessage();
handler.dispatchMessage(msg);
}
};
public Handler handler = new Handler() {
int i = 5;
public void handleMessage(Message msg) {
if (i > -1) {
button.setText(i + "秒后关半对话框");
i--;
handler.postDelayed(runnable, 1000);
} else {
i = 5;
dialog.cancel();
}
}
};
}
第三步:完