`
whao189
  • 浏览: 124673 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

android 中弹出透明模态框

 
阅读更多
此文章有本人亲撰,但是下面所提到的code 并非本人所写写这篇日志的目的在于记录这个知识点防止以后忘记同时也希望能帮助可能用到这种效果的人!

需求 就是通过 点击一个button 弹出来 类似于Dialog这样的效果
这里我们可以通过两种方式实现
第一种:就是通过dialog
第二种:通过PopupWindow

第一种如下重要的伪代码如下:
我们需要通过 dialog 弹出来一个 listview
private void openDialog() {
View menuView = View.inflate(this, R.layout.gridview_menu, null);
		// 创建AlertDialog
final AlertDialog menuDialog = new AlertDialog.Builder(this).create();
menuDialog.setView(menuView);
menuGrid = (GridView) menuView.findViewById(R.id.gridview);
menuGrid.setAdapter(getMenuAdapter(menu_name_array,menu_image_array));
menuGrid.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
	if (arg2 == 11) {
	      menuDialog.cancel();
	}
	}
});
	menuDialog.show();
}

首先拿到 你要显示的listview 组件
然后我们通过设置dialog的view 来显示 显示出来之后 至于 你要在listview 中得item 中 实现什么功能那就要自己 添加了

dialog这一种方式 只是 通过 一个自定义的view 来填充 dialog 本身包含的view(我个人理解是这样的。。)

第二种方式:
	LayoutInflater mLayoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
		ViewGroup menuView = (ViewGroup) mLayoutInflater.inflate(
				R.layout.gridview_pop, null, true);
		menuGrid = (GridView) menuView.findViewById(R.id.gridview);
		menuGrid.setAdapter(getMenuAdapter(menu_name_array, menu_image_array));
		menuGrid.requestFocus();
		menuGrid.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				if (arg2 == 11) {
					popupWindow.dismiss();
				}
			}
		});
		menuGrid.setOnKeyListener(new OnKeyListener() {// 焦点到了gridview上,所以需要监听此处的键盘事件。否则会出现不响应键盘事件的情况
					@Override
					public boolean onKey(View v, int keyCode, KeyEvent event) {
						switch (keyCode) {
						case KeyEvent.KEYCODE_MENU:
							if (popupWindow != null && popupWindow.isShowing()) {
								popupWindow.dismiss();
							}
							break;
						}
						System.out.println("menuGridfdsfdsfdfd");
						return true;
					}
				});
		popupWindow = new PopupWindow(menuView, LayoutParams.FILL_PARENT,
				LayoutParams.FILL_PARENT, true);
		popupWindow.setBackgroundDrawable(new BitmapDrawable());
		popupWindow.setAnimationStyle(R.style.PopupAnimation);
		popupWindow.showAtLocation(findViewById(R.id.parent), Gravity.CENTER
				| Gravity.CENTER, 0, 0);
		popupWindow.update();


个人理解 就是 LayoutInflater (布局填充者) 获取到我们事先定义好的布局界面

PopupWindow(menuView, LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT, true);

定义弹出来的 组件填充全屏 

popupWindow.setBackgroundDrawable(new BitmapDrawable());

这个地方一定要设置 而且一定要设置在

popupWindow.showAtLocation(findViewById(R.id.parent), Gravity.CENTER
| Gravity.CENTER, 0, 0);

之前
我猜想是这样的。。如果popupWindow 没有 画好背景的话他是不会弹出来的,(他必须把需要的东西准备好才会弹出来) ..
至于findViewById(R.id.parent),  这个东西就是你要弹出在那个view之上的那个view Id
。。。
分享到:
评论

相关推荐

    Android实现底部半透明弹出框PopUpWindow效果

    "Android实现底部半透明弹出框PopUpWindow效果" Android实现底部半透明弹出框PopUpWindow效果是一种常见的UI设计效果,主要用于提供用户更多的交互选项,例如分享、收藏、举报等。下面我们将详细介绍如何在Android...

    Android浮层 弹出窗口demo

    下面将详细讨论如何在Android中实现浮层和弹出窗口,并涉及相关的界面设置、Style设置以及半透明效果。 首先,浮层(Floating Layer)或称为悬浮窗,可以是自定义视图,也可以是对话框(Dialog)或者小部件(Widget...

    android dialog 大合集 对话框 透明

    1. 底部弹出框:从底部向上滑出,适用于展示更多的选项或信息。通过`BottomSheetDialogFragment`类创建。 七、使用注意事项 1. 对话框生命周期:对话框与Activity关联,当Activity销毁时,对话框也会消失。因此,...

    在对话框中点击按钮弹出另外一个对话框

    在描述中提到的场景,当用户点击一个按钮时弹出另一个对话框,这通常涉及到模态对话框,因为它创建了一个新的交互上下文,直到用户处理完弹出的对话框,才能继续原来的对话。 实现这个功能通常涉及以下步骤: 1. *...

    android dialog------普通对话框

    在Android开发中,Dialog是一种非常常见的用户界面组件,它用于在主界面之上显示一个临时的、半透明的小窗口,用于提示用户或者获取用户的输入。在本文中,我们将深入探讨如何在Android应用中创建和使用普通的Dialog...

    模拟弹出窗口

    在移动应用开发中,iOS的UIAlertController和Android的AlertDialog是实现模拟弹出窗口的主要方式。这些API允许开发者创建具有定制标题、消息、按钮和其他交互元素的弹出窗口。 标签“源码”提示我们关注代码实现...

    ModelProgress.rar

    - 为了使B页面看起来像一个浮在A页面之上的模态框,可能需要设置B的背景为透明,并确保B页面全屏显示,这样A页面会透过B页面可见。 5. **关闭B页面**: - 在B页面上,当用户点击关闭按钮时,通常会调用`finish()`...

    PopupMenu:使用模态方式播放多种动画的弹出菜单(视图)

    在iOS应用开发中,弹出菜单(PopupMenu)是一种常见的交互元素,它可以在用户触发特定操作时,以模态的方式展示一系列可选的选项。本文将深入探讨如何使用Swift语言实现一个支持多种动画效果的模态弹出菜单。 首先...

    打造万能的对话框Dialog(二)

    4. 弹出式菜单:有时候,我们可能需要一个看起来像Dialog但实际上包含多个选项的视图,这就是弹出式菜单。可以使用`PopupMenu`类来实现。 五、自定义动画 为Dialog添加进入和退出动画,可以增强用户体验。通过设置`...

    html5 网页加载中效果

    在iOS7中,当你尝试删除一项内容时,会出现一个半透明的警告框,询问用户是否确定删除。在HTML5中,可以创建一个具有“确认”和“取消”按钮的对话框,通过JavaScript处理点击事件,根据用户的选择执行相应操作。...

    alert遮罩层显示内容

    遮罩层,也称为模态对话框或弹出窗口,会在主界面之上覆盖一层半透明或不透明的背景,聚焦用户的注意力到特定的警告、消息或表单上。这种设计模式广泛应用于网页、桌面应用以及移动应用中。下面将详细介绍"alert遮罩...

    TestClock.zip

    在IT领域,特别是Android或者iOS应用开发中,对话框(Dialog)和PopupWindow以及自定义View是构建用户界面时常见的元素。这些组件帮助提供额外的信息,接收用户输入,或者以吸引用户注意的方式展示内容。现在,让...

    reactnativecardmodal用于ReactNative框架纯javascript的卡片式UI

    "react-native-card-modal"是专门为React Native设计的一个库,它提供了一种卡片式的用户界面(UI)元素,这种元素在很多现代应用中都非常常见,比如用于显示详细信息、弹出窗口或者进行轻量级交互。 在这个库中,...

    iOS8 人机交互指南

    临时视图(TemporaryViews)包括警告框(Alert)、操作菜单(ActionSheet)、模态视图(ModalView)等。这些视图通常用于显示临时信息或要求用户做进一步的操作。 设计尺寸 iOS8中还涉及不同设备的设计尺寸,包括...

    XCT弹出问题

    在“XCT弹出问题”这个场景中,我们可能遇到的是在使用Xamarin Community Toolkit中的Popup组件时出现的问题。 Popup是Xamarin.Forms中一个非常有用的组件,它可以用于显示临时的、模态的信息,或者作为一些交互的...

    react-native-popup-expo

    React Native Popup Expo 是一个基于React Native的库,专为Expo开发环境设计,用于创建弹出窗口或模态对话框。这个库可以帮助开发者在移动应用中实现交互式的UI组件,如下拉菜单、警告提示或者复杂的自定义视图。...

    戴口罩人脸检测和戴口罩识别,戴口罩数据集

    例如,在人脸检测任务中可以采用边界框回归损失;而在识别任务中则可能更侧重于分类准确率。 - **训练流程**: - **数据加载**:从数据集中加载已处理好的样本数据; - **模型初始化**:根据所选网络架构实例化...

Global site tag (gtag.js) - Google Analytics