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);
}
注:错漏之后还望批评改正
实现上述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);
}
注:错漏之后还望批评改正
相关文章推荐
- 【CF 应用开发大赛】IT Share(IT分享网)
- 新版本susymenu树形菜单,请大家指教、分享
- 一个不太让人讨厌的自动弹出窗口
- javascript实现类似百度分享功能的方法
- javascript弹出窗口 window.open使用方法以及参数说明分析篇
- 右下角弹出窗口效果代码
- javascript弹出拖动窗口
- javascript弹出窗口实现代码
- Jquery弹出窗口插件 LeanModal的使用方法
- 让js弹出窗口居前显示的实现方法
- Flex弹出窗口请求Action函数示例
- 网页上facebook分享功能具体实现
- 精通ASP.NET中弹出窗口技术
- js实现右下角窗口弹出窗口效果
- Javascript弹出窗口的各种方法总结
- javascript 弹出窗口中是否显示地址栏的实现代码
- 用DIV完美模拟createPopup 弹出窗口(脚本之家修正版),支持Firefox,ie,chrome
- android教程之使用popupwindow创建菜单示例
- aspx 页面弹出窗口代码大全
- JS弹出窗口代码大全(详细整理)