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. IE浏览器URL中文传参,后端接收是乱码问题处理

    这个问题还是因为IE浏览器是国外产品,人家交流的主要语言是英语,中文不识别. 直接上代码,亲测无误. //判断是否是IE浏览器 function isIE() { var userAgent = na ...

  2. Django数据模型——数据库字段类型

    字段 一个模型最重要也是唯一必需的部分,是它定义的数据库字段 字段名称限制 1.字段名不能是python保留字,这样会导致python语法错误 2.字段不能包含连续一个以上的下划线,这样会和Djang ...

  3. Cesium home键定位的位置

    Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(80, 22, 130, 50);//home定位到中国范围

  4. mvvm,如何解析一个指令表达式?

    如何解析一个指令表达式? v-model="msg==='abc'?'1':a" 完美的解决方案 1,with(vm){ return new Function('vm',exp) ...

  5. form表单里的故事

    <form class="m-t" role="form" action='javascript:;'> <div class="f ...

  6. MySQL数据库学习四 存储引擎和数据类型

    4.1存储引擎 1. 查看MySQL DBMS所支持的存储引擎 SHOW ENGINES;

  7. 基于hi-nginx的web开发(python篇)——utf-8编码

    一致地utf-8编码,非常重要.对python2而言,尤其如此. 如果在hi-nginx中使用的是python2,同时又需要无障碍地使用中日韩等文字,那么一定不要忘记使用: #-*- coding:u ...

  8. Zabbix常用key和自定义key的讲解

    zabbix中常用到的几个key: 1.监控端口的:net.tcp.port[,3306],可以在服务器端对被监控端测试. /usr/local/zabbix/bin/ -s192.168.8.120 ...

  9. C语言的输入输出操作函数小结

    一.scanf()&printf()函数 scanf() 函数用于从标准输入(键盘)读取并格式化, printf() 函数发送格式化输出到标准输出(屏幕).  scanf()函数原型为int ...

  10. mysql新手入门随笔2

    17.创建表 CREATE TABLE tbname(columnname1 类型 约束条件, columnname2 类型 约束条件,-); 三大类型:数值型,时间日期型,字符串类型 六大约束条件: ...