您的位置:首页 > 移动开发

PopWindow分享到第三方app的弹出窗口

2016-04-12 11:48 471 查看
1.效果图:点击了一个按钮时候会出现一个弹出窗口



实现上述PopupWindow的布局文件是share_popwin.xml 如下所示

<?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="wrap_content"
android:orientation="vertical"
android:background="@color/white"
android:id="@+id/share_layout" >
<LinearLayout
android:id="@+id/ly_share_pop_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="2dp"
android:gravity="center_horizontal"
android:background="@null">

<TextView
android:id="@+id/share_pop_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/share"
android:textSize="14sp" />

</LinearLayout>
<LinearLayout
android:id="@+id/ly_share_pop_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="1dp">

<LinearLayout
android:id="@+id/ly_share_friend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingBottom="2dp"
>

<ImageView
android:id="@+id/share_friend_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"
and
4000
roid:src="@drawable/friend_img"
android:contentDescription="@string/share_friend"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/friend"
android:typeface="monospace"
android:textSize="12sp"
/>

</LinearLayout>

<LinearLayout
android:id="@+id/ly_share_timeline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingBottom="2dp"
>

<ImageView
android:id="@+id/share_timeline_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:src="@drawable/timeline_img"
android:contentDescription="@string/share_timeline"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/timeline"
android:typeface="monospace"
android:textSize="12sp"
/>

</LinearLayout>

</LinearLayout>

</LinearLayout>

之后跟源代码相关的布局文件只是添加一个按钮,不在这里加入代码,注意:布局文件要声明一个id

在源代码中创建PopupWindow的关键代码如下:

//显示pop window
private void showPopupWindow(View v){
//获取popwindow的视图
View view=LayoutInflater.from(mContext).inflate(R.layout.share_popwin, null);
//获取朋友圈图标视图
ImageView imgV=(ImageView) view.findViewById(R.id.share_timeline_img);
//设置点击的事件
imgV.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
//1代表分享到朋友圈
share2weixin(1);
}
});
//创建popwindow
final PopupWindow pop=new PopupWindow(view,LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT,true);

pop.setTouchable(true);
pop.setTouchInterceptor(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
//背景一定要设置,不然无法dismiss popwindow
ColorDrawable dw=new ColorDrawable(0xffffff);
pop.setBackgroundDrawable(dw);
pop.setOnDismissListener(new OnDismissListener() {

public void onDismiss() {
backgroundAlpha(1f);
pop.dismiss();

}
});
pop.showAtLocation(rl,Gravity.BOTTOM, 0, 0);
}

这个方法在用户点击了上面所设置的按钮之后才会调用,这个时候同时要改变原来窗口的透明度,即把原来窗口变暗一点,方法如下
//设置原来视图的透明度
public void backgroundAlpha(float bgAlpha){
WindowManager.LayoutParams lp=getWindow().getAttributes();
lp.alpha=bgAlpha;
getWindow().setAttributes(lp);
}

在点击按钮之后的onclick方法如下:
public void onClick(View v) {
//改变透明度
backgroundAlpha(0.5f);
//创建并显示PopupWindow
showPopupWindow(v);
}

注:错漏之后还望批评改正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息