Gridview 的布局设置

<GridView 
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numColumns="4"//4列
android:id="@+id/gg"
android:background="#cf1818">//背景颜色
</GridView>
<Button//按钮用来关闭gridview
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="取消分享"
android:id="@+id/popb"
android:gravity="center"
android:layout_below="@+id/gg"/>
Popwindo的布局
<Button//简单的一个按钮,用来弹出gridview界面
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bb"
android:text="分享"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
main函数的书写
public class Main2Activity extends AppCompatActivity {
private Button bt;
private PopupWindow popupWindow;
private GridView gridView;
private View view;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pop_gild);
view=getLayoutInflater().inflate(R.layout.grid,null);//得到gridview的那个布局界面
gridView=(GridView)view.findViewById(R.id.gg);//得到布局界面的id 进行监听
/*
往gridvie中存放数据
*/
List list=new ArrayList();
Map map=new HashMap();
map.put("img", R.mipmap.a);
map.put("name", "朋友圈");
list.add(map);
map=new HashMap();
map.put("img", R.mipmap.a);
map.put("name", "朋友圈");
list.add(map);
map=new HashMap();
map.put("img", R.mipmap.a);
map.put("name", "朋友圈");
list.add(map);
map=new HashMap();
map.put("img", R.mipmap.a);
map.put("name", "朋友圈");
list.add(map);
map=new HashMap();
map.put("img", R.mipmap.a);
map.put("name", "朋友圈");
list.add(map);
map=new HashMap();
map.put("img", R.mipmap.a);
map.put("name", "朋友圈");
list.add(map);
map=new HashMap();
map.put("img", R.mipmap.a);
map.put("name", "朋友圈");
list.add(map);
SimpleAdapter ss=new SimpleAdapter(this,list,R.layout.grid_examp,
new String[]{"img","name"},new int[]{R.id.imm,R.id.tt1});//gridview的适配器,以你写好的模板格式填充数据
gridView.setAdapter(ss); bt = (Button) findViewById(R.id.bb);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow=getPopupWindow(view); //调用popwindow 控件
//设置按钮隐藏
bt.setVisibility(View.GONE);
}
});
button=(Button)view.findViewById(R.id.popb);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.dismiss();//gridview中的取消按钮监听,点击取消popwinodw界面
}
});
}
//定义一个内部类 实现popwindow视图
public PopupWindow getPopupWindow(View view){
popupWindow=new PopupWindow(view, LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
popupWindow.setOutsideTouchable(false);//点击pop外部是否取消
popupWindow.setBackgroundDrawable(new ColorDrawable());//给popwindow一个空背景
popupWindow.setAnimationStyle(R.style.pop2);//设置他的出现风格,这里是出现速度 ,详情见下面代码
//设置出现与消失时的背景透明度
WindowManager.LayoutParams ll=
getWindow().getAttributes();
ll.alpha=0.6f;
getWindow().setAttributes(ll);
popupWindow.showAtLocation(bt, Gravity.BOTTOM, 0, 0);//从底部出现
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
//设置背景透明度
WindowManager.LayoutParams ll=
getWindow().getAttributes();
ll.alpha=1f; //要与上边的ll形成对比 才能看到较明显的效果
getWindow().setAttributes(ll);
bt.setVisibility(View.VISIBLE);//让隐藏的按钮再出来
}
});
return popupWindow;
}
}
附 style 代码
<style name="pop2"> 
<item name="android:windowEnterAnimation">
@anim/pop_enter2
</item>
<item name="android:windowExitAnimation">
@anim/pop_exit2
</item>
</style>
其中pop——enter2和pop-exit2分别为出现消失的设置
pop——enter2
<translate 
android:duration="3000"
android:fromYDelta="100%p"
android:toYDelta="0">
</translate>
<alpha
android:fromAlpha="0"
android:duration="3000"
android:toAlpha="1"/>
pop-exit2
<translate
android:duration="3000"
android:fromYDelta="0"
android:toYDelta="100%p"
></translate>
<alpha
android:fromAlpha="1"
android:duration="3000"
android:toAlpha="0"/>




												

高级控件 popwindow 与gridview的组合应用的更多相关文章

  1. Android高级控件--AdapterView与Adapter

    在J2EE中提供过一种非常好的框架--MVC框架,实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上.在Android中有这样一种高级控件 ...

  2. UGUI核心元素、基本控件、复合控件和高级控件

    UGUI的核心元素: Anchor(锚点):每个控件都有一个Anchor属性,控件的4个顶点,分别与Anchor的4个点保持不变的距离,不受屏幕分辨率变化的影响. 系统默认设置控件的Anchor位置在 ...

  3. Android 高级控件(七)——RecyclerView的方方面面

    Android 高级控件(七)--RecyclerView的方方面面 RecyclerView出来很长时间了,相信大家都已经比较了解了,这里我把知识梳理一下,其实你把他看成一个升级版的ListView ...

  4. Android高级控件(六)——自定义ListView高仿一个QQ可拖拽列表的实现

    Android高级控件(六)--自定义ListView高仿一个QQ可拖拽列表的实现 我们做一些好友列表或者商品列表的时候,居多的需求可能就是需要列表拖拽了,而我们选择了ListView,也是因为使用L ...

  5. Android高级控件(五)——如何打造一个企业级应用对话列表,以QQ,微信为例

    Android高级控件(五)--如何打造一个企业级应用对话列表,以QQ,微信为例 看标题这么高大上,实际上,还是运用我么拿到listview去扩展,我们讲什么呢,就是研究一下QQ,微信的这种对话列表, ...

  6. Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷

    Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...

  7. Android高级控件(三)—— 使用Google ZXing实现二维码的扫描和生成相关功能体系

    Android高级控件(三)-- 使用Google ZXing实现二维码的扫描和生成相关功能体系 摘要 现在的二维码可谓是烂大街了,到处都是二维码,什么都是二维码,扫一扫似乎已经流行到习以为常了,今天 ...

  8. Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现

    Android高级控件(二)--SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现 写这个的原因呢,也是因为项目中用到了gif动画,虽然网上有很多的架包可以实现,不过我们还 ...

  9. Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能

    Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...

随机推荐

  1. 功能性AI术语表

    算法:一套计算机要遵循的指令.一个算法可以是一个简单的单步程序也可以是一个复杂的神经网络,但是通常被用来指一个模型. 人工智能:这是一个统称.广义上说,软件意味着模仿或取代人类智能的各个方面.人工智能 ...

  2. python爬微信公众号前10篇历史文章(2)-拼接URL&发送http请求

    如何拼接想要的url http://weixin.sogou.com/weixin?type=1&page=1&ie=utf8&query=%E5%A4%A7%E7%BA%BD ...

  3. 如何在IPFS里面上传一张图片

    之前有好几人问过小编,想在IPFS里面上传一张图片.如何做? 今天小编就讲一下如何在IPFS里面上传.下载文件? 1 下载IPFS软件 下载地址:https://dist.ipfs.io/#go-ip ...

  4. spring cloud 专题一 (spring cloud 入门搭建 之 Eureka注册中心搭建)

    一.前言 本文为spring cloud 微服务框架专题的第一篇,主要讲解如何快速搭建spring cloud微服务及Eureka 注册中心 以及常用开发方式等. 本文理论不多,主要是傻瓜式的环境搭建 ...

  5. 简单使用git和github来管理代码----配置与使用

    在以前没听说过github之前,自己写的代码很容易丢或者遗失,等到用时才知码到用时方恨丢,现在用了github,真的是替自己生省不少的事,闲话不多说,上教程. 1 在github上注册账号 https ...

  6. 前端Blob对二进制流数据的处理方式

    var xhr = new XMLHttpRequest(); xhr.open("post", "/login/getCaptcher?t=" + Math. ...

  7. java.lnag.Throwable详细解读

    public  class Throwable  extends  Object  implemnts Serializable Throwable类是所有错误或异常的超类.只有当对象是此类(或其中之 ...

  8. svn 要求commit提交必须加注释(日志) hook

    #vim /data/svn/mysvn/hook/pre-commit #!/bin/bashREPOS="$1"TXN="$2" #RES="OK ...

  9. Oracle Orion tool check io(ORACLE Orion 工具查看以及校验IO)

    文档主要来自oracle官方文档performance 8.3章节 Oracle数据库提供了Orion,一种 I/O校准工具.Orion是预测Oracle数据库性能的工具,无需安装Oracle或创建数 ...

  10. CentOS7搭建solr7.2

    solr介绍 一.Solr它是一种开放源码的.基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中. 二.Solr 提供了层面搜索(就是统计).命中醒目显示并且支持多种输出格式( ...