Android PopupWindow实现从底部滑出弹出选择菜单窗口例子
2014-10-30 14:30:49  By: dwtedx

本实实现了从屏幕下方弹出窗口、并且有一个透明的遮盖层、另外还有从下向上滑动的动画、那么实现呢主要是继承PopupWindow类来实现的弹出窗体、布局可以根据自己定义设计、弹出效果主要使用了translate和alpha样式实现、运行效果如下

PopupWindow实现的弹出窗体

具体实例如下

public SelectPicPopupWindow(Activity context,
	OnClickListener itemsOnClick) {
	super(context);
	LayoutInflater inflater = (LayoutInflater) context
		.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	mMenuView = inflater.inflate(R.layout.alert_dialog, null);
	btn_take_photo = (Button) mMenuView
		.findViewById(R.id.btn_take_photo);
	btn_pick_photo = (Button) mMenuView
		.findViewById(R.id.btn_pick_photo);
	btn_cancel = (Button) mMenuView
		.findViewById(R.id.btn_cancel);
	//取消按钮
	btn_cancel.setOnClickListener(new OnClickListener() {

		public void onClick(View v) {
			//销毁弹出框
			dismiss();
		}
	});
	//设置按钮监听
	btn_pick_photo.setOnClickListener(itemsOnClick);
	btn_take_photo.setOnClickListener(itemsOnClick);
	//设置SelectPicPopupWindow的View
	this.setContentView(mMenuView);
	//设置SelectPicPopupWindow弹出窗体的宽
	this.setWidth(LayoutParams.FILL_PARENT);
	//设置SelectPicPopupWindow弹出窗体的高
	this.setHeight(LayoutParams.WRAP_CONTENT);
	//设置SelectPicPopupWindow弹出窗体可点击
	this.setFocusable(true);
	//设置SelectPicPopupWindow弹出窗体动画效果
	this.setAnimationStyle(R.style.AnimBottom);
	//实例化一个ColorDrawable颜色为半透明
	ColorDrawable dw = new ColorDrawable(0xb0000000);
	//设置SelectPicPopupWindow弹出窗体的背景
	this.setBackgroundDrawable(dw);
	//mMenuView添加OnTouchListener
	//监听判断获取触屏位置如果在选择框外面则销毁弹出框
	mMenuView.setOnTouchListener(new OnTouchListener() {
		
		public boolean onTouch(View v, MotionEvent event) {
			
			int height = mMenuView
				.findViewById(R.id.pop_layout).getTop();
			int y=(int) event.getY();
			if(event.getAction()==MotionEvent.ACTION_UP){
				if(y<height){
					dismiss();
				}
			}				
			return true;
		}
	});
}

调用方法如下

//把文字控件添加监听,点击弹出自定义窗口
tv.setOnClickListener(new OnClickListener() {			
	public void onClick(View v) {
		//实例化SelectPicPopupWindow
		menuWindow = new SelectPicPopupWindow(MainActivity.this, 
			itemsOnClick);
		//显示窗口
		menuWindow.showAtLocation(MainActivity.this
			//设置layout在PopupWindow中显示的位置
			.findViewById(R.id.main), Gravity.BOTTOM|Gravity
			.CENTER_HORIZONTAL, 0, 0); 
	}
});

这样就实现了一个漂亮的popup了、链接: http://dwtedx.com/download.html?bdkey=s/1eQ5r8D8 密码: pa8j

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+