自定义PobUpwindow弹出框

来源:互联网 发布:淘宝如何改会员名 编辑:程序博客网 时间:2024/06/10 07:53

在做分享这一块的时候,用到弹出框的功能,还必须得有点击返回键,同样可以撤销显示的弹出框,于是自己就动手写了一个,一切看代码:

public class ShareBoardPicker implements OnClickListener {private Context mContext;private SharePobupWindow mPopupWindow;//分享框private LinearLayout layout;private RelativeLayout mWeixinLayout;//微信分享private RelativeLayout mWeixinCircleLayout;//微信朋友圈分享private RelativeLayout mSinaLayout;//新浪微博分享private RelativeLayout mQQZoneLayout;//QQ空间分享private UMengShare share;public ShareBoardPicker(Context context, String infoStr) {mContext = context;share = new UMengShare(context,infoStr);init();}public ShareBoardPicker(Context context, String title, String url, String imgUrl) {mContext = context;share = new UMengShare(context,title,url,imgUrl);init();}public void init(){LayoutInflater inflater = LayoutInflater.from(mContext);layout = (LinearLayout) inflater.inflate(R.layout.shareboard_picker,null);mWeixinLayout = (RelativeLayout) layout.findViewById(R.id.weixin);mWeixinCircleLayout = (RelativeLayout) layout.findViewById(R.id.weixin_circle);mSinaLayout = (RelativeLayout) layout.findViewById(R.id.sina);mQQZoneLayout = (RelativeLayout) layout.findViewById(R.id.email_share);mWeixinLayout.setOnClickListener(this);mWeixinCircleLayout.setOnClickListener(this);mSinaLayout.setOnClickListener(this);mQQZoneLayout.setOnClickListener(this);mPopupWindow = new SharePobupWindow(mContext,layout, LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT, true);// 设置点击窗口外边窗口消失mPopupWindow.setOutsideTouchable(true);// 设置此参数获得焦点,否则无法点击mPopupWindow.setFocusable(true);mPopupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));mPopupWindow.setAnimationStyle(R.style.picker_anim_style);}public void show() {WindowManager.LayoutParams lp = ((Activity) mContext).getWindow().getAttributes();lp.alpha = 0.5f; // 0.0-1.0((Activity) mContext).getWindow().setAttributes(lp);layout.setFocusable(true);// 设置该view能监听事件layout.setFocusableInTouchMode(true);// 设置该view能监听事件layout.setOnKeyListener(new OnKeyListener() {public boolean onKey(View v, int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK && mPopupWindow != null) {dismiss();}return true;}});mPopupWindow.update();mPopupWindow.showAtLocation(layout, Gravity.BOTTOM, 0, 0);}public void dismiss() {WindowManager.LayoutParams lp = ((Activity) mContext).getWindow().getAttributes();lp.alpha = 1.0f; // 0.0-1.0((Activity) mContext).getWindow().setAttributes(lp);mPopupWindow.dismiss();mPopupWindow = null;((Activity) mContext).getWindow().setAttributes(lp);}/** * 用来在Activity中使用 *  * @return */public void activityResult(int requestCode, int resultCode, Intent data) {share.activityResult(requestCode, resultCode, data);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.weixin:share.startWeixinShare();dismiss();break;case R.id.weixin_circle:share.startWeixinCircleShare();dismiss();break;case R.id.sina:share.startSinaShare();dismiss();break;case R.id.email_share:share.startEmailShare();dismiss();break;default:dismiss();break;}}class SharePobupWindow extends PopupWindow {private Context myContext;@Overridepublic void dismiss() {// TODO Auto-generated method stubWindowManager.LayoutParams lp = ((Activity) myContext).getWindow().getAttributes();lp.alpha = 1.0f; // 0.0-1.0((Activity) myContext).getWindow().setAttributes(lp);super.dismiss();}public SharePobupWindow(){}public SharePobupWindow(Context context,View contentView, int width, int height, boolean focusable){super(contentView, width, height, focusable);myContext = context;}}}

0 0