Android悬浮对话框(即点即关对话框)实现代码

2019-12-10 18:35:22王旭

单击“显示日期”按钮后,效果如图4所示。

Android,悬浮对话框

触摸任何位置都可以关闭的对话框

通常需要单击“关闭”或其他类似的按钮来关闭Activity或对话框。但有时需要单击(触摸)屏幕的任何位置来关闭Activity或对话框。关闭Activity很好处理,只需要处理Activity的触摸事件即可,代码如下:

@Override
public boolean onTouchEvent(MotionEvent event)
{
finish();
return true;
}

如果是对话框,也同样可以使用onTouchEvent事件方法。不过一般使用了AlertDialog对话框都是封装好的。因此,要使用onTouchEvent事件方法,就需要继承AlertDialog类。在上一节给出的onClick方法中弹出当前显示对话框的代码中使用了一个DateDialog类,该类是AlertDialog的子类,代码如下:

package net.blogjava.mobile;
import android.app.AlertDialog;
import android.content.Context;
import android.view.MotionEvent;
public class DateDialog extends AlertDialog
{
public DateDialog(Context context)
{
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
// 关闭显示日期对话框
dismiss();
return super.onTouchEvent(event);
}
}

在上面的代码中也使用了onTouchEvent事件方法。在该方法中调用了dismiss方法来关闭对话框。读者可以运行本文的例子,看看是否能通过单击屏幕的任何位置来关闭对话框和悬浮Activity。

总结

本文介绍了悬浮Activity和触摸任何位置都可以关闭的对话框的实现。悬浮Activity只需要在<activity>元素中添加android:theme="@android:style/Theme.Dialog"即可。要想触摸任何位置关闭对话框或Activity,需要使用触摸事件(onTouchEvent方法)。如果是对话框,需要通过继承AlertDialog类的方式来使用onTouchEvent方法。