`
龙哥IT
  • 浏览: 258541 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Dialog弹出框

 
阅读更多

网上已经有很多弹出框类型了,我自己也记录下自己遇到的。

这个其实不是最好的,但是对我来说是最适合的,

它适用于屏幕上下左右弹出都可以,根据自己的需要,自己设置

可以设置背景色,弹出框大小,以及位置等信息

	private int mWidth;
	private int mHeight;
	PopupWindow popupWindow;
	int from = 0;
	private StartYSJDialogAdapter mDialogAdapter;
	private GridView ysp_gridlistview;
	
	/**
	 * 添加新笔记时弹出的popWin关闭的事件,主要是为了将背景透明度改回来
	 * 
	 */
	class popupDismissListener implements PopupWindow.OnDismissListener {

		@Override
		public void onDismiss() {
			backgroundAlpha(1f);
		}

	}

	protected void initPopupWindow() {
//		initData();
		View popupWindowView = this.getLayoutInflater().inflate(
				R.layout.startysjdialoglist, null);
		// 内容,高度,宽度
		if (Location.LEFT.ordinal() == from) {
			popupWindow = new PopupWindow(popupWindowView,
					LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, true);
		} else {
			popupWindow = new PopupWindow(popupWindowView,
					LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT, true);
		}
		// 动画效果
		if (Location.LEFT.ordinal() == from) {
			popupWindow.setAnimationStyle(R.style.AnimationLeftFade);
		} else if (Location.RIGHT.ordinal() == from) {
			popupWindow.setAnimationStyle(R.style.AnimationRightFade);
		} else if (Location.BOTTOM.ordinal() == from) {
			popupWindow.setAnimationStyle(R.style.AnimationBottomFade);
		}
		// 菜单背景色
		ColorDrawable dw = new ColorDrawable(android.R.color.transparent);
		popupWindow.setBackgroundDrawable(dw);
		calWidthAndHeight(this);
		// 宽度
		popupWindow.setWidth(mWidth);
		// //高度
		popupWindow.setHeight(mHeight);
		// 显示位置
		if (Location.LEFT.ordinal() == from) {
			popupWindow.showAtLocation(this.getLayoutInflater()
					.inflate(R.layout.startysplist, null), Gravity.LEFT|Gravity.TOP, 0, 500);
		} else if (Location.RIGHT.ordinal() == from) {
			popupWindow.showAtLocation(this.getLayoutInflater()
					.inflate(R.layout.startysplist, null), Gravity.RIGHT, 0, 500);
		} else if (Location.BOTTOM.ordinal() == from) {
			popupWindow.showAtLocation(this.getLayoutInflater()
					.inflate(R.layout.startysplist, null), Gravity.BOTTOM
					| Gravity.TOP, 0, 0);
		}
		// 设置背景半透明
		backgroundAlpha(0.5f);
		// 关闭事件
		popupWindow.setOnDismissListener(new popupDismissListener());

		popupWindowView.setOnTouchListener(new OnTouchListener() {

			@Override
			public boolean onTouch(View v, MotionEvent event) {
				return false;
				// /*if( popupWindow!=null && popupWindow.isShowing()){
				// popupWindow.dismiss();
				// popupWindow=null;
				// }*/
				// // 这里如果返回true的话,touch事件将被拦截
				// // 拦截后 PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss
				// return false;
			}
		});
		ysp_gridlistview = (GridView) popupWindowView.findViewById(R.id.ysp_gridlistview);
		getDialogAdapter();

		ysp_gridlistview.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				popupWindow.dismiss();
				switch (position) {}
			}

		});
	}

	private void getDialogAdapter() {
		mDialogAdapter = new StartYSJDialogAdapter(StartMainYSPActivity.this, yslFilterList,
				R.layout.startysjdialoglist_item);
//		mDialogAdapter.setOnCheckedChanged(StartMainYSPActivity.this);
		ysp_gridlistview.setAdapter(mDialogAdapter);
	}

	/**
	 * 设置PopupWindow的大小
	 * 
	 * @param context
	 */
	private void calWidthAndHeight(Context context) {
		WindowManager wm = (WindowManager) context
				.getSystemService(Context.WINDOW_SERVICE);
		DisplayMetrics metrics = new DisplayMetrics();
		wm.getDefaultDisplay().getMetrics(metrics);

		mWidth = metrics.widthPixels-200;
		// 设置高度为全屏高度的90%
//		mHeight = (int) (500);
		mHeight = (int) (metrics.heightPixels * 0.89);
	}

	/**
	 * 设置添加屏幕的背景透明度
	 * 
	 * @param bgAlpha
	 */
	public void backgroundAlpha(float bgAlpha) {
		WindowManager.LayoutParams lp = this.getWindow()
				.getAttributes();
		lp.alpha = bgAlpha; // 0.0-1.0
		this.getWindow().setAttributes(lp);
	}

	/**
	 * 菜单弹出方向
	 * 
	 */
	public enum Location {

		LEFT, RIGHT, TOP, BOTTOM;

	}
	

 然后获取网络数据,调用initPopupWindow();这个方法即可实现

  • 大小: 43 KB
  • 大小: 41 KB
分享到:
评论

相关推荐

    dialog弹出框

    **标题:“dialog弹出框”** 在Web开发中,对话框(Dialog)是一种常见的用户界面元素,用于在页面上提供额外的信息或者与用户交互。它通常以弹出窗口的形式出现,可以包含各种输入、按钮、文本等组件。对话框允许...

    jquery Dialog 弹出框 很漂亮 实用

    jQuery Dialog 是一个功能强大的弹出框插件,它是 jQuery UI 库的一部分,广泛应用于网页交互设计中,提供美观且可自定义的对话框效果。在实际项目中,它以其高效和易用性受到开发者的喜爱。 Dialog 弹出框的核心...

    自定义dialog弹出框

    在Android开发中,自定义Dialog弹出框是一个常见的需求,它可以帮助我们提供更丰富的用户交互体验,使得信息提示或者操作选择更加个性化。本篇将详细讲解如何创建和使用自定义Dialog,以及涉及到的相关知识点。 ...

    很好用的Dialog弹出框

    "很好用的Dialog弹出框"这个标题暗示我们将讨论如何创建和使用一个功能强大的、易于定制的`Dialog`实例。描述中的“给出demo,用起来很简单”意味着我们将通过一个简单的示例来阐述`Dialog`的使用方法。 `Dialog`的...

    带三角的dialog弹出框

    本文将详细探讨如何实现一个带有三角形指示箭头的对话框,即"带三角的dialog弹出框",并分享相关代码实现。 首先,我们需要理解Android中的Dialog。它是一个轻量级窗口,通常用来显示临时信息或获取用户输入。在...

    带圆头像、圆角的dialog弹出框

    最近做android项目的时候,因为系统自带的dialog实在不美观,所以我自定义了比较美观的dialog。而且有圆角和圆形头像,圆角给人柔和的感觉,dialog顶部是个半圆,所以十分美观。说起dialog,没什么代码量,主要工作...

    android-dialog弹出框,弹出gridview条目选中.rar

    本示例“android-dialog弹出框,弹出gridview条目选中”是一个实现自定义Dialog并集成GridView来展示可选条目的实践案例。下面我们将深入探讨这一主题。 首先,`Dialog`是Android提供的一个类,用于显示一个浮动...

    elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo

    ### el-dialog 弹出框组件 `&lt;el-dialog&gt;`是Element UI提供的一个模态框组件,可以用来创建对话框框体。在文件示例中,我们可以看到如何使用`&lt;el-dialog&gt;`来创建一个包含确认/取消功能的提示弹窗。`&lt;el-dialog&gt;`提供...

    遮罩层弹出半透明dialog

    遮罩层弹出半透明dialog,很fashion。

    QT无边框窗口,无边框弹出框,无边框MessageBox

    "QT无边框窗口,无边框弹出框,无边框MessageBox"这一主题主要涉及的是如何在QT中去除窗口的标准边框,以及如何自定义无边框的对话框和消息提示框。 首先,我们来谈谈无边框窗口的实现。在QT中,我们可以使用`...

    Android dialog单选、多选弹窗

    PopWindow是Android中另一种轻量级的弹出窗口,它可以在Activity之上显示任意的View。与Dialog不同,PopWindow没有预设的外观,完全由开发者自定义。它常用于快速操作或者显示额外的信息,如下拉菜单、快捷工具栏等...

    dialog ui jquey .net c# 弹出对话框

    在这个场景中,我们关注的是如何在ASP.NET C#环境中利用jQuery创建一个弹出对话框。 首先,让我们深入了解jQuery UI中的`dialog`组件。jQuery UI提供了丰富的UI元素,其中包括对话框功能。通过使用`dialog`,我们...

    Dialog 弹出提示窗 js

    在网页开发中,Dialog弹出提示窗是一种常见的交互设计元素,用于向用户显示临时信息、警告、确认对话或提供操作选项。"Dialog 弹出提示窗 js" 是一种使用JavaScript实现的动态弹出窗口技术,它能模拟腾讯等大型...

    modaldialog:弹出框

    modalDialog 弹出框 提示框,确认框。 公共参数 clazz: 弹出框的css类名 cancelStr: 取消按钮的按钮名 sureStr: 确定按钮的按钮名 title: 弹出框的标题 content: 弹出框内容 header: 表示头部的html模板 okCallback...

    自定义Dialog背景

    在Android开发中,自定义Dialog背景是一个常见的需求,它能够帮助开发者实现更加个性化和符合应用设计风格的对话框。本文将深入探讨如何实现这一功能,包括理解Dialog的基本原理、自定义布局以及修改Dialog的背景。 ...

    Android自定义弹出框实现(修改版)完整实例源码

    总之,“Android自定义弹出框实现(修改版)完整实例源码”提供了一种自定义Android弹出框的实现方式,通过学习和理解这个实例,开发者能够更好地掌握自定义Dialog的设计和实现,提升应用的界面美观度和用户体验。

    Dialog仿IOS弹出框

    在Android开发中,为了提供与iOS相似的用户体验,开发者经常需要实现自定义Dialog来模仿iOS的弹出框样式。这个“Dialog仿IOS弹出框”项目正是为了达到这一目的,它通过纯代码实现,仅使用XML来处理对话框的圆角效果...

    dialog弹出提示框

    标题"dialog弹出提示框"指的是如何在Android应用中创建和使用对话框来提供用户交互体验。描述中的“在很多布局文件中会用到”暗示了`Dialog`在各种场景下都有广泛的应用。 对话框通常分为几种类型:`AlertDialog`、...

Global site tag (gtag.js) - Google Analytics