package com.tq.mbaexam.view;





import java.util.ArrayList;

import java.util.LinkedHashMap;

import java.util.List;

import java.util.Map;





import android.content.Context;

import android.graphics.drawable.ColorDrawable;

import android.view.LayoutInflater;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.View.OnTouchListener;

import android.view.WindowManager.LayoutParams;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.GridView;

import android.widget.PopupWindow;

import android.widget.SimpleAdapter;

import android.widget.TextView;





import com.tq.mbaexam.R;

import com.tq.mbaexam.activity.NLPGActivity;





public class CustomPopupWindowView extends PopupWindow {



private View view;

private GridView gridView;

private TextView cancel;

private int[] logo = {R.drawable.logo_sinaweibo, R.drawable.logo_tencentweibo

, R.drawable.logo_kaixin, R.drawable.logo_qzone, R.drawable.logo_renren};

private String[] name = {"新浪微博", "腾讯微博", "开心网", "QQ空间", "人人网"};

private List<Map<String, Object>> contents;



public CustomPopupWindowView(NLPGActivity context,OnItemClickListener listener){

LayoutInflater inflater = (LayoutInflater) context  

                .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

contents  = new ArrayList<Map<String,Object>>();

        view = inflater.inflate(R.layout.popup_window_view, null);  

        gridView = (GridView) view.findViewById(R.id.share_gridview);

        cancel = (TextView) view.findViewById(R.id.cancel);

        cancel.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

dismiss();

}

});

        this.setContentView(view);

        //设置SelectPicPopupWindow弹出窗口的宽  

        this.setWidth(LayoutParams.MATCH_PARENT);  

        //设置SelectPicPopupWindow弹出窗口的高  

        this.setHeight(LayoutParams.WRAP_CONTENT);  

        //设置SelectPicPopupWindow弹出窗口可点击  

        this.setFocusable(true);  

        //设置SelectPicPopupWindow弹出窗口动画效果  

        this.setAnimationStyle(R.style.mystyle);  

        //实例化一个ColorDrawable颜色为半透明  

        ColorDrawable dw = new ColorDrawable(-00000);  

        //设置SelectPicPopupWindow弹出窗口的背景  

        this.setBackgroundDrawable(dw);  

        //mMenuView加入OnTouchListener监听推断获取触屏位置假设在选择框外面则销毁弹出框  

        view.setOnTouchListener(new OnTouchListener() {  

               

            public boolean onTouch(View v, MotionEvent event) {  

                   

                int height = view.findViewById(R.id.popup_window_view_layout).getTop();  

                int y=(int) event.getY();

                if(event.getAction()==MotionEvent.ACTION_UP){  

                    if(y<height){  

                        dismiss();  

                    }  

                }                 

                return true;  

            }  

        });  

         

        for (int i = 0; i < name.length; i++) {

Map<String, Object> map = new LinkedHashMap<String, Object>();

map.put("logo", logo[i]);

map.put("name", name[i]);

contents.add(map);

}

        SimpleAdapter adapter = new SimpleAdapter(context, contents,

R.layout.popup_window_view_item, new String[] { "logo","name"},

new int[] { R.id.share_iv, R.id.share_txt,});

        gridView.setNumColumns(3);

        gridView.setAdapter(adapter);

        gridView.setOnItemClickListener(listener);

    }

}

//实现就可以

CustomPopupWindowView pop = new CustomPopupWindowView(NLPGActivity.this,new ItemClick());  

//显示窗体  

pop.showAtLocation(view,Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);

popup_window_view.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/popup_window_view_layout"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:layout_marginBottom="20dp"

    android:gravity="center_horizontal">

    

<GridView 

   android:id="@+id/share_gridview"

   android:layout_height="wrap_content"

   android:layout_width="fill_parent"

   android:gravity="center_horizontal"

   android:layout_marginLeft="10dp"

   android:layout_marginRight="10dp"

   android:background="@drawable/corners_bg"

   android:verticalSpacing="20dp"/>

<TextView 

   android:id="@+id/cancel"

   android:layout_below="@+id/share_gridview"

   android:layout_height="42dp"

   android:layout_width="fill_parent"

   android:background="@drawable/corners_bg"

   android:layout_marginTop="10dp"

   android:gravity="center"

   android:text="@string/cancel"

   android:layout_marginLeft="10dp"

   android:layout_marginRight="10dp"

   android:textSize="20sp"

   android:textColor="@color/light_blue"

   android:layout_marginBottom="16dp"/>

</RelativeLayout>

popup_window_view_item.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:gravity="center"

    android:layout_margin="20dp">

    

<ImageView 

   android:id="@+id/share_iv"

   android:layout_height="wrap_content"

   android:layout_width="wrap_content"

   android:layout_marginTop="20dp"

   android:layout_centerHorizontal="true"/>

    <TextView 

        android:id="@+id/share_txt"

        android:layout_below="@+id/share_iv"

        android:layout_height="wrap_content"

        android:layout_width="wrap_content"

        android:layout_marginTop="4dp"

        android:layout_centerHorizontal="true"

        android:textSize="12sp"/>

</RelativeLayout>

fade_in.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate

        android:duration="600"

        android:fromYDelta="100%p" />

</set>

fade_out.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate

        android:duration="600"

        android:toYDelta="100%p" />

</set>

style.xml

<style name="mystyle" parent="android:Animation">  

        <item name="@android:windowEnterAnimation">@anim/fade_in</item>  

        <item name="@android:windowExitAnimation">@anim/fade_out</item>

    </style>

Android PopupWindow做的分享界面的更多相关文章

  1. Android UI组件----用相对布局RelativeLayout做一个登陆界面

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  2. 利用新版ShareSDK进行手动分享(自定义分享界面)

    之前有用过Share SDK进行快捷分享,可是官方demo中的快捷分享的界面已经设置死了,而公司的产品又设计了自己的分享界面,这就需要我进行手动分享了.当前ShareSDK版本是2.5.4. 看了一堆 ...

  3. 最实用的Android开发学习路线分享

    Android开发学习路线分享.Android发展主导移动互联发展进程,在热门行业来说,Android开发堪称火爆,但是,虽然Android有着自身种种优势,但对开发者的专业性要求也是极高,这种要求随 ...

  4. Android开发优化之——对界面UI的优化(1)

    在Android应用开发过程中,屏幕上控件的布局代码和程序的逻辑代码通常是分开 的.界面的布局代码是放在一个独立的xml文件中的,这个文件里面是树型组织的,控制着页面的布局.通常,在这个页面中会用到很 ...

  5. [Android] Android开发优化之——对界面UI的优化(2)

    在Android应用开发过程中,屏幕上控件的布局代码和程序的逻辑代码通常是分开的.界面的布局代码是放在一个独立的xml文件中的,这个文件里面是树型组织的,控制着页面的布局.通常,在这个页面中会用到很多 ...

  6. [Android] Android开发优化之——对界面UI的优化(1)

    在Android应用开发过程中,屏幕上控件的布局代码和程序的逻辑代码通常是分开的.界面的布局代码是放在一个独立的xml文件中的,这个文件里面是树型组织的,控制着页面的布局.通常,在这个页面中会用到很多 ...

  7. Android PopupWindow Dialog 关于 is your activity running 崩溃详解

    Android PopupWindow Dialog 关于 is your activity running 崩溃详解 [TOC] 起因 对于 PopupWindow Dialog 需要 Activi ...

  8. Android 获取浏览器当前分享页面的截屏

    Android 获取浏览器当前分享页面的截屏 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/BrowserScreenShotActivity 文中 ...

  9. 当我们按下电源键,Android 究竟做了些什么?

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由goo发表于云+社区专栏 相信我们对Android系统都不陌生,而Android系统博大精深,被各种各样的智能设备承载的同时,我们会否 ...

随机推荐

  1. LightOJ 1319 Monkey Tradition(中国剩余定理)

    题目链接:https://vjudge.net/contest/28079#problem/U 题目大意:给你n(n<12)行,每行有pi,ri,求一个数ans满足ans%pi=ri(i从1~n ...

  2. Linux 基础——关机重启命令shutdown、reboot等

    一.关机重启命令的作用 相信对于接触过电脑的人来说,特别是对于windows系统来说,如果长时间使用不经重启的话会出现一点点卡顿的感觉.但是当重启整个系统后,这点点卡顿的感觉好像又没了,重启后wind ...

  3. [前端随笔][css] 弹性布局

    说在前面 弹性布局,顾名思义就是有弹性,能够根据屏幕/当前空间大小自由伸缩的.使用弹性布局可以很好的适应各种尺寸的客户端. 关键代码 display:flex; 设定元素为弹性布局 <文档传送门 ...

  4. go接口及嵌入类型例子

    书上看的.慢慢领会.. package main import ( "fmt" ) type notifier interface { notify() } type user s ...

  5. MySQL增删改数据

    1.增加数据 ,); /*插入所有字段.一定依次按顺序插入--字符串与日期需要加单引号,数字不需要,各个字段之间用逗号分隔*//*注意不能少或者多字段值*/ ,) /*按字段名插入数据,中间用逗号隔开 ...

  6. 修改 jupyter notebook 启动工作路径的方法

    Windows下jupyter notebook默认的启动路径就是当前cmd启动jupyter 的路径: C:\Users\用户名>jupyter notebook 此时jupyter 的启动工 ...

  7. Asp.net vNext 学习之路(二)

    View component(视图组件)应该是MVC6 新加的一个东西,类似于分部视图.本文将演示在mvc 6中 怎么添加视图组件以及怎么在视图中注入一个服务. 本文包括以下内容: 1,创建一个新的a ...

  8. ps | grep app 命令不显示grep app本身进程的几种方式

    ps | grep app 命令不显示grep app本身进程的几种方式 使用ps命令查询进程,常常我们不想打印出"ps | grep app"这个当前进程,比如如下: [root ...

  9. loadrunner中并发数与迭代的区别

    你的理解的虚拟用户应该是 迭代次数 ,录制脚本时只会有1个虚拟用户,1个虚拟用户可以有多次 迭代,也就是 重复执行 Action里面的内容,在场景设置的时候,如果你说的10时在runtime-sett ...

  10. Codeforces Round #286 (Div. 1) D. Mr. Kitayuta's Colorful Graph

    D - Mr. Kitayuta's Colorful Graph 思路:我是暴力搞过去没有将答案离线,感觉将答案的离线的方法很巧妙.. 对于一个不大于sqrt(n) 的块,我们n^2暴力枚举, 对于 ...