点击弹出全屏dialog 触摸消失 带动画

这篇博客讲述了如何在Android应用中实现点击按钮后弹出全屏、半透明的Dialog,并在用户触摸屏幕时自动消失。作者尝试了PopupWindow、自定义布局以及全屏Dialog三种方法,最终通过设置Dialog样式和窗口动画实现所需效果。文中还强调了解决问题的思路和自我学习的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      今天还是在原来的UI上面做手脚, 点击侧滑出来的布局其中的按钮,弹出一个全屏半透明界面,然后触摸消失, 开始浮现在自己脑海中的集中思路 不说实现

       1. popupwindow();

       2.事先将一张view铺在上面隐藏好,等有点击事件的时候再将其显示出来;

       3.弹出个全屏的dialog;点击、触摸的时候消失;

        我先测试的第一种情况, popupwindow()  点击某个按钮,在此按钮附近弹出一个浮窗,不过它是有个父view作为参照,在底层视图的某个位置, 测试了几种情况, 没成功   只能换种情况来试试;

        换2来测, 将当前的布局嵌入到FrameLayout中, 将要显示的pic放在framlayout的最上层隐藏起来; 看起来没什么大问题, 不过当实测的时候的确不可以;提示了一些布局方面的事情, 我想应该是不能这么搞;

        换3来测, dialog大家都不陌生, 只是要让它全屏, 怎么设定它的布局宽高都不好使, 那么只能自己来控制布局的样式;

        好, 话不多说了, 先上代码实现再说其他··············

/**
	 * 点击侧滑按钮  弹出介绍页dialog.
	 * 点击dialog, 消失。
	 */
	public void showKPIIndicateDialog() {
		helpLL.setVisibility(View.GONE);
		showDownAnimationInX(allLL, 100, 0);//横向动画
		rightIsFinished = false;
		leftIsFinished = false;
		final Dialog dialog = new Dialog(this, R.style.dialog_fullscreen);
		LayoutInflater inflater = LayoutInflater.from(this);
		view = (View)inflater.inflate(R.layout.fullscreen_dialog_land_layout, null);
		dialog.setContentView(view);
		dialog.getWindow().setWindowAnimations(R.style.dialog_anim);
		dialog.show();
		image = (ImageView) view.findViewById(R.id.land_kpi_indicate_iamge);
		image.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				if(dialog.isShowing()) {
					dialog.dismiss();
				}
			}
		});
	}
        自定义个dialog 显示样式自己来处理;

        直接对dialog进行动画设定是不科学的, 必须dialog.getWindow().setWindowAnimation();

        要实现触摸、点击隐藏dialog,必然要对dialog布局进行提取,监听,处理; 在dialog.dismiss()之前最好判断下是否处在显示状态,避免不必要的问题

       开始准备要用到的代码素材:

       自定义样式--  res/values/styles.xml下面新建<style></style> 标签, 进行一些标签的设置, 如下

<!-- dialog的全屏显示样式 -->
	<style name="dialog_fullscreen">
	    <item name="android:windowFullscreen">true</item>
	    <item name="android:windowNoTitle">true</item>
	</style>
    
	<!-- dialog的进出动画样式 -->
	<style name="dialog_anim">
	    <item name="android:windowEnterAnimation">@anim/dialog_enter_anim</item>
	    <item name="android:windowExitAnimation">@anim/dialog_exit_anim</item>
	</style>
         准备进出动画 ---res/新建anim文件夹/新建两个.xml文件来设置动画过渡效果  

       进---dialog_enter_anim.xml;

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/accelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.0"
        android:fromYScale="0.0"
        android:toYScale="1.0"
        android:pivotX="0%"
        android:pivotY="100%"
        android:fillAfter="false"
        android:duration="400"/>

</set>
         出---dialog_exit_anim.xml;
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/accelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.0"
        android:fromYScale="1.0"
        android:toYScale="0.0"
        android:pivotX="0%"
        android:pivotY="100%"
        android:fillAfter="false"
        android:duration="400"/>

</set>
     嗯  基本上这几点就能组装实现要求, 先写这么多,所有东西都需要代码检验才能见分晓, 说是没用的。

  我一般出问题之后不会立刻抱着问题去问别人, 以前是的; 基本上是先定位哪里出问题了, 分析看看大致什么原因,实在有些难度上Google下, 其实想想,你查书跟查Google有区别么? 不要有种上网找资料就是菜B的心理,虽然我以前是这样的思想; 都是互相学习的个过程, 学到了, 成为自己的了 那才是本事,过程跟途径不重要;

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     ~~~~~~~~~~~~~~~~~~~~ 唯有压力才能突破, 才能距破茧成蝶之日更进一步、~~~~~~~~~~~~~~~
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值