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. [译]Android view 测量布局和绘制的流程

    原文链接 创造优秀的用户体验是我们开发者的主要目标之一.为此, 我们首先要了解系统是如何工作的, 这样我们才可以更好的与系统配合, 从它的优点中获益, 规避它的缺陷. 之前关于Android渲染过程的 ...

  2. 使用mescroll来实现移动端页面上拉刷新, 下拉加载更多功能

    * mescroll请参考官方文档 1. 使用mescroll实现下拉滑动的效果: (仅仅效果, 有的页面不需要刷新数据, 只要你能下拉就行) 代码如下: var mescroll = new MeS ...

  3. [POJ1631] nlogn求LIS

    用到了algorithm自带的lower_bound函数进行二分查找 #include<cstdio> #include<cstring> #include<algori ...

  4. Kotlin封装RxJava与Retrofit

    代码地址:https://github.com/DarkPointK/RxTrofit.git 前言 Retrofit是Square公司开发的一个类型安全的Java和Android 的REST客户端库 ...

  5. 【Python】 垃圾回收机制和gc模块

    垃圾回收机制和gc模块 Py的一个大好处,就是灵活的变量声明和动态变量类型.虽然这使得学习py起来非常方便快捷,但是同时也带来了py在性能上的一些不足.其中相关内存比较主要的一点就是py不会对已经销毁 ...

  6. C++标准库vector类型的使用和操作总结

    vector是一种类型对象的集合,它是一种顺序容器,容器中的所有对象必须都是同一种类型.想了解顺序容器的更多内容:C++顺序容器知识总结.vector的对象是可以动态生长的,这说明它在初始化时可以不用 ...

  7. 初始Windows程序

    1.属性 窗体标题 Name  窗体的图标 Icon  背景图片 BackgroundImage 背景颜色 BackColor  最大化按钮 MaxIMonBox  最小化按钮 Minimun 窗体边 ...

  8. 客户端(winform)更新

    winform更新有两种情况,一种是在线更新在线使用:直接右击项目发布出去就可以更新在线使用了.还有一种更新是不用一直连接网络的模式. 1:C#Winform程序如何发布并自动升级--------ht ...

  9. CountDownLatch 源码解析—— await()

    上一篇文章说了一下CountDownLatch的使用方法.这篇文章就从源码层面说一下await() 的原理. 我们已经知道await 能够让当前线程处于阻塞状态,直到锁存器计数为零(或者线程中断). ...

  10. 201621123062《java程序设计》第四周作业总结

    1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 关键词:重载.继承.多态.static.final.抽象类 1.2 尝试使用思维导图将这些关键词组织起来.注:思维导图一般不需要 ...