<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <View android:id="@+id/viewId" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background="#9000"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:gravity="center" android:text="分享到微信" android:textColor="@color/black" android:textSize="18sp"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal"> <LinearLayout android:id="@+id/layout_wechat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginTop="8dp" android:orientation="vertical"> <ImageView android:layout_width="60dp" android:layout_height="60dp" android:src="@drawable/share_wechat"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="微信"/> </LinearLayout> <LinearLayout android:id="@+id/layout_wechat_circle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginLeft="15dp" android:layout_marginTop="8dp" android:orientation="vertical"> <ImageView android:layout_width="60dp" android:layout_height="60dp" android:src="@drawable/share_wechat_circle"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="朋友圈"/> </LinearLayout> </LinearLayout> </LinearLayout></LinearLayout>
/** * 选择分享方式 */ private void choiceShareWay() { int width = getWindowManager().getDefaultDisplay().getWidth(); PoPShareWindowManager.getInstance().init(getApplicationContext(), width, ViewGroup .LayoutParams.WRAP_CONTENT, R.layout.pop_share_wechat); PoPShareWindowManager.getInstance().showPopAllLocation(mShareLayout, Gravity.CENTER | Gravity .BOTTOM, 0, 0); //分享到微信 PoPShareWindowManager.getInstance().OnClickWechat(new View.OnClickListener() { @Override public void onClick(View v) { String title = shareData.get("title"); String description = shareData.get ("subsTitle"); Utils.wechatShare(0, webLink.trim(), title, description, wxBitmap); PoPShareWindowManager.getInstance().dismissPop(); } }); PoPShareWindowManager.getInstance().OnClick(new View.OnClickListener() { @Override public void onClick(View v) { PoPShareWindowManager.getInstance().dismissPop(); } }); //分享到朋友圈 PoPShareWindowManager.getInstance().OnClickWechatCircle(new View.OnClickListener() { @Override public void onClick(View v) { Utils.wechatShare(1, webLink.trim(), shareData.get("title"), shareData.get ("subTitle"), wxBitmap); PoPShareWindowManager.getInstance().dismissPop(); } }); }
public class PoPShareWindowManager { private static volatile PoPShareWindowManager instance; public Context context; List<String> data = new ArrayList<String>(); private PopupWindow pop; private View popView; private View p; private PoPShareWindowManager() { } /** * 创建单例类,提供静态方法调用 * * @return ActivityManager */ public static PoPShareWindowManager getInstance() { if (instance == null) { instance = new PoPShareWindowManager(); } return instance; } /*** * popWindow初始化方法 * * @param context * @param */ public void init(Context context, final int width, int height, int id) { this.context = context; // 创建PopupWindow对象 pop = new PopupWindow(setPopView(context, id), LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, false); // setPopWidth(context, width, height); pop.setWidth(width); pop.setHeight(height); // 需要设置一下此参数,点击外边可消失 pop.setBackgroundDrawable(new BitmapDrawable()); // 设置点击窗口外边窗口消失 pop.setOutsideTouchable(false); // 设置此参数获得焦点,否则无法点击 pop.setFocusable(true); } public PopupWindow getPopView() { return pop; } public View setPopView(Context context, int id) { if (popView == null) { LayoutInflater inflater = LayoutInflater.from(context); // 引入窗口配置文件 popView = inflater.inflate(id, null); } return popView; } public void showPopAsDropDown(View view, int x, int y) { if (pop != null) { pop.showAsDropDown(view, x, y); } else { } } public void showPopAllLocation(View parent, int gravity, int x, int y) { p = parent; if (pop != null) { if (!pop.isShowing()) { pop.showAtLocation(parent, gravity, x, y); } } else { } } public void dismissPop() { pop.dismiss(); } public void setPopWidth(Context context, final int width, final int height) { if (popView == null) { return; } popView.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // 动态设置pop的宽度 FrameLayout.LayoutParams linearParams = (FrameLayout.LayoutParams) popView .getLayoutParams(); linearParams.width = width; linearParams.height = height; } }); } public void OnClickWechat(OnClickListener onClickListener) { popView.findViewById(R.id.layout_wechat).setOnClickListener(onClickListener); } public void OnClickWechatCircle(OnClickListener selectListener) { popView.findViewById(R.id.layout_wechat_circle).setOnClickListener(selectListener); } public void setPickViewData(List<String> data) { this.data = data; } public void OnClick(OnClickListener selectListener) { popView.findViewById(R.id.viewId).setOnClickListener(selectListener); } }
Android 自定义弹窗
最新推荐文章于 2024-08-31 12:04:03 发布