Android自定义PopupWindow仿点击弹出分享功能

本文实例自定义PopupWindow,点击弹出PopupWindow,背景变暗,仿点击弹出分享功能,供大家参考,具体内容如下

注:参照大神代码写的

自定义代码

package com.duanlian.popupwindowdemo; 

import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView; 

/**
 * 自定义popupWindow
 */ 

public class RewritePopwindow extends PopupWindow {
  private View mView; 

  public RewritePopwindow(Activity context, View.OnClickListener itemsOnClick) {
    super(context);
    initView(context, itemsOnClick);
  } 

  private void initView(final Activity context, View.OnClickListener itemsOnClick) {
    LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    mView = mInflater.inflate(R.layout.popupwindow_share, null);
    LinearLayout weiXFriend = (LinearLayout) mView.findViewById(R.id.weixinghaoyou);
    LinearLayout friendster = (LinearLayout) mView.findViewById(R.id.pengyouquan);
    LinearLayout QQFriend = (LinearLayout) mView.findViewById(R.id.qqhaoyou);
    LinearLayout QQZone = (LinearLayout) mView.findViewById(R.id.qqkongjian);
    TextView canaleTv = (TextView) mView.findViewById(R.id.share_cancle);
    canaleTv.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) { 

        //销毁弹出框
        dismiss();
        backgroundAlpha(context, 1f);
      }
    });
    //设置按钮监听
    weiXFriend.setOnClickListener(itemsOnClick);
    friendster.setOnClickListener(itemsOnClick);
    QQFriend.setOnClickListener(itemsOnClick);
    QQZone.setOnClickListener(itemsOnClick);
    //设置SelectPicPopupWindow的View
    this.setContentView(mView);
    //设置SelectPicPopupWindow弹出窗体的宽
    this.setWidth(WindowManager.LayoutParams.FILL_PARENT);
    //设置SelectPicPopupWindow弹出窗体的高
    this.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
    //设置SelectPicPopupWindow弹出窗体可点击
    this.setFocusable(true);
    //设置PopupWindow可触摸
    this.setTouchable(true);
    //设置非PopupWindow区域是否可触摸
//    this.setOutsideTouchable(false);
    //设置SelectPicPopupWindow弹出窗体动画效果
//    this.setAnimationStyle(R.style.select_anim);
    //实例化一个ColorDrawable颜色为半透明
    ColorDrawable dw = new ColorDrawable(0x00000000);
    //设置SelectPicPopupWindow弹出窗体的背景
    this.setBackgroundDrawable(dw);
    backgroundAlpha(context, 0.5f);//0.0-1.0
    this.setOnDismissListener(new OnDismissListener() { 

      @Override
      public void onDismiss() {
        // TODO Auto-generated method stub
        backgroundAlpha(context, 1f);
      }
    });
  } 

  /**
   * 设置添加屏幕的背景透明度
   *
   * @param bgAlpha
   */
  public void backgroundAlpha(Activity context, float bgAlpha) {
    WindowManager.LayoutParams lp = context.getWindow().getAttributes();
    lp.alpha = bgAlpha;
    context.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
    context.getWindow().setAttributes(lp);
  } 

}

MainActivity中用

package com.duanlian.popupwindowdemo; 

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity {
  private RewritePopwindow mPopwindow; 

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    findViewById(R.id.share).setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        mPopwindow = new RewritePopwindow(MainActivity.this, itemsOnClick);
        mPopwindow.showAtLocation(view,
            Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
      }
    });
  } 

  //为弹出窗口实现监听类
  private View.OnClickListener itemsOnClick = new View.OnClickListener() { 

    public void onClick(View v) {
      mPopwindow.dismiss();
      mPopwindow.backgroundAlpha(MainActivity.this, 1f);
      switch (v.getId()) {
        case R.id.weixinghaoyou:
          Toast.makeText(MainActivity.this, "微信好友", Toast.LENGTH_SHORT).show();
          break;
        case R.id.pengyouquan:
          Toast.makeText(MainActivity.this, "朋友圈", Toast.LENGTH_SHORT).show();
          break;
        case R.id.qqhaoyou:
          Toast.makeText(MainActivity.this, "QQ好友", Toast.LENGTH_SHORT).show();
          break;
        case R.id.qqkongjian:
          Toast.makeText(MainActivity.this, "QQ空间", Toast.LENGTH_SHORT).show();
          break;
        default:
          break;
      }
    } 

  };
}

布局文件--popupWindow布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent" 

       android:layout_height="match_parent"
       >
  <TextView
    android:layout_width="match_parent"
    android:alpha="0.2"
    android:layout_height="match_parent"
    android:layout_above="@+id/ll"/> 

<LinearLayout
  android:id="@+id/ll"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_alignParentBottom="true"
  android:orientation="vertical">
  <LinearLayout
    android:paddingBottom="30dp"
    android:id="@+id/share_ll"
    android:paddingTop="20dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingRight="20dp"
    android:background="#ebebeb"
    android:paddingLeft="20dp"
    android:orientation="horizontal"
    >
  <LinearLayout
    android:id="@+id/weixinghaoyou"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    > 

    <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:background="@mipmap/icon_weixin_fenxiang"/> 

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:gravity="center"
      android:onClick="share"
      android:layout_gravity="center"
      android:layout_marginTop="10dp"
      android:text="微信好友"
      android:textColor="#000000"/>
  </LinearLayout>
  <LinearLayout
    android:id="@+id/pengyouquan"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    > 

    <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:background="@mipmap/icon_quan"/> 

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:gravity="center"
      android:onClick="share"
      android:layout_gravity="center"
      android:layout_marginTop="10dp"
      android:text="朋友圈"
      android:textColor="#000000"/>
  </LinearLayout>
  <LinearLayout
    android:id="@+id/qqhaoyou"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    > 

    <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:background="@mipmap/icon_qq_fenxiang"/> 

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:gravity="center"
      android:onClick="share"
      android:layout_gravity="center"
      android:layout_marginTop="10dp"
      android:text="QQ"
      android:textColor="#000000"/>
  </LinearLayout>
  <LinearLayout
    android:id="@+id/qqkongjian"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    > 

    <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:background="@mipmap/icon_kongjian"/> 

    <TextView 

      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:gravity="center"
      android:onClick="share"
      android:layout_gravity="center"
      android:layout_marginTop="10dp"
      android:text="QQ空间"
      android:textColor="#000000"/>
  </LinearLayout>
  </LinearLayout> 

  <TextView
    android:id="@+id/line"
    android:layout_width="match_parent"
    android:layout_height="0.5dp"
    android:layout_below="@+id/share_ll"
    android:background="#000000"/>
<TextView
  android:id="@+id/share_cancle"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:gravity="center"
  android:textSize="20sp"
  android:layout_below="@+id/line"
  android:background="#f5f3f3"
  android:paddingBottom="20dp"
  android:paddingTop="20dp"
  android:text="取消"/>
</LinearLayout>
</RelativeLayout>

mainActivity的布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/activity_main"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context="com.duanlian.popupwindowdemo.MainActivity"> 

  <Button
    android:id="@+id/share"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="点击弹出"/>
</RelativeLayout>

demo下载地址:Android PopupWindow弹出分享

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android开发中应用程序分享功能实例

    本文实例讲述了Android开发中应用程序分享功能.分享给大家供大家参考,具体如下: Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); //设置类型 shareIntent.setType("text/plain"); //设置分享的主题 shareIntent.putExtra("android.intent.extra.SUBJECT", "分享&

  • Android编程之微信SDK分享功能过程步骤详细分析

    本文实例讲述了Android编程之微信SDK分享功能过程步骤详细分析.分享给大家供大家参考,具体如下: 之前已经分析过怎么用官方的demo分享微信信息了,在这里我就不再多说,其中关于在自己应用分享说得很简单,本文作者也是经过一番折腾才弄成功,为了以后让大家都少走弯路,决定在这里从头到尾介绍怎么在自己的应用中分享功能 注意:顺序不能乱!! 1.建立自己的应用 TestShareWX (1)应用包名是com.freeson.test,然后建立一个测试Activity,名字为TestActivity,

  • 关于Android实现简单的微信朋友圈分享功能

    1.先下载微信分享的jar包放在lib目录下,并且添加依赖, 清单文件添加 <activity android:name=".wxapi.WXEntryActivity" android:exported="true">//产生回调 </activity> 2.在工程下新建如图所示的包和Activity Activity里面的内容主要是创建微信api并且注册返回回调值 private final String APP_ID= "wx

  • 记录Android微信分享功能的吐槽与思考

    在App内潜入分享到微信好友或朋友圈的功能想必大家已经屡见不鲜了,比如Android分享一个网页信息(URL)到微信客户端的代码: /** * 微信分享:分享网页 * @param context * @param url * @param title * @param description * @param scene */ public static void shareToWeChatWithWebpage(Context context, String url, String titl

  • 详解Android系统中跨应用数据分享功能的实现

    一个Andoird应用程序的重要的地方是他们有相互沟通和整合的能力,一个应用程序可以和另一个应用程序交互,接下来我们来看看Android应用之间的内容分享 当你构建Intent的时候,必须要指定Intent的Action触发,定义Intent的Action例如ACTION_SEND,你大概可以猜到指定Action为ACTION_SEND的Intent的作用是从一个Activity发送数据到另一个Activity,甚至跨越不同的进程,将数据发送给另一个Activity,你需要指定数据和他的类型,系

  • Android实现分享功能

    Android应用中能很方便的完成这些功能,很多的应用中都有"分享"功能?如何分享呢?下面给大家说说看. 最近有人问到Android分享功能用那个比较好,使用Android自带的Intent来进行分享还是借助第三方呢,直接上代码: 一.使用Intent直接和第三方应用进行通信: /** * 分享功能 * * @param context * 上下文 * @param activityTitle * Activity的名字 * @param msgTitle * 消息标题 * @para

  • Android编程实现调用系统分享功能示例

    本文实例讲述了Android编程实现调用系统分享功能.分享给大家供大家参考,具体如下: /** * 调用系统的分享功能 * Created by admin on 15-4-13. */ public class ShareActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV

  • Android ShareSDK快速实现分享功能

    第一步 :获取ShareSDK 为了集成ShareSDK,您首先需要到ShareSDK官方网站注册并且创建应用,获得ShareSDK的Appkey,然后到SDK的下载页面下载SDK的压缩包,解压以后可以得到如下图的目录结构: ShareSDK在"ShareSDK for Android"目录下,此目录中的"Libs"包含"MainLibs"和"OnekeyShare" 分别是ShareSDK的核心库和"快捷分享&qu

  • Android 微信图片分享功能

    我们都知道,通过 微信官方 分享sdk 支持图片分享,而且有多种方式.官方链接 可直接查看,不再赘述. 本文要解决的问题是,分享本地带二维码的图片给微信好友和朋友圈.朋友圈图片能够实现长按识别,给微信好友对话框的图片 在 iOS 可以正常识别,但是 Android 端却不能识别 ,为什么? 以下引用网友的回答: 经过分析和功能对比,android wechat app 中有两种图片浏览方式,图片预览,和图片本地发送后的打开查看(这个有识别动作)页面.预览图片功能中,不包含长按手势的识别功能,仔细

  • Android 分享功能的实现

     Android 分享功能的实现 Android程序里面的分享功能分为第三方程序分享,就是使用QQ空间,QQ微博,新浪微博,人人等第三方包进行分享; 还有就是用本地程序进行分享,如短信,UC浏览器,蓝牙等. 他们的区别是使用第三方包进行分享手机系统不用安装该类程序,而本地程序分享就需要. 这里主要讲的是使用本地程序进行分享. 效果如下图所示: 实现代码如下所示; Intent email = new Intent(android.content.Intent.ACTION_SEND); emai

随机推荐