PopupWindow封装类

news/2024/7/16 9:04:37

实现一个简单popupWindow的简单封装类

public class PopupUtils {
    private PopupWindow popupWindow;
    private Activity activity;

    public PopupUtils(Activity activity, View contentView) {
        this.activity = activity;
        popupWindow = new PopupWindow(activity);
        popupWindow.setContentView(contentView);
        popupWindow.setHeight(LinearLayout.LayoutParams.WRAP_CONTENT);
        popupWindow.setWidth(LinearLayout.LayoutParams.WRAP_CONTENT);
        popupWindow.setOutsideTouchable(true);
        popupWindow.setFocusable(true);
        popupWindow.setBackgroundDrawable(new BitmapDrawable());
    }

    public void show(View parent) {
        popOutShadow(popupWindow, activity);
        popupWindow.showAtLocation(parent, Gravity.CENTER, 0, 0);//相对于父窗口
    }

    public void dismiss() {
        if (popupWindow.isShowing()) {
            popupWindow.dismiss();
        }
    }

    public void popOutShadow(PopupWindow popupWindow, final Activity activity) {
        WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
        lp.alpha = 0.7f;
        activity.getWindow().setAttributes(lp);
        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {

            @Override
            public void onDismiss() {
                WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
                lp.alpha = 1f;
                activity.getWindow().setAttributes(lp);
            }
        });
    }
}


http://www.niftyadmin.cn/n/3649007.html

相关文章

TabActivity中某一个tab内切换activity页面的方法

之前写的程序要用到TabActivity,其中一个tab下有个多级列表,其实就是像“设置‘切换页面一样,倒是如果直接启动一个activity,你会发现这个activity会变成全屏的,和之前的TabActivity半毛钱关系木有,所以&am…

成为主流平台厂商的关键性市场标志

成为主流平台厂商的关键性市场标志 :有100个以上的旗舰客户(具有行业代表性和一定规模) 有1万个以上的CPU部署 有10万个以上的注册开发者 有10亿以上的销售额 相关标准组织的主要成员中国能有这样的公司会在2010 - 2015年出现吗?欢…

如何将加载指示器添加到您的Vue.js应用程序

Loading indicators improve UX (user experience) in any application web or mobile. It tells the user that an action is being carried and a result will return shortly. 加载指示器可改善任何应用程序Web或移动设备中的UX(用户体验)。 它告诉用户正在执行一项操作&…

TabActivity实现手指左右滑动切换页面

在做项目的时候主界面有好几个tab, 有些用户习惯性的左右滑屏来切换tab,所以添加了左右滑屏切换他变得功能。 基本思想: dispatchTouchEvent在接收到用户触屏时间之后被触发,所在在dispatchTouchEvent中获取当前用户事件&#xff…

图片三级缓存

什么是三级缓存? 1). 图片的三级缓存 一级缓存: 内存缓存, 缓存的是bitmap对象, 用Map<String, Bitmap>结构保存, key是url 二级缓存: 本地(sd卡)缓存, 缓存的是图片文件, /storage/sdcard/Android/data/packageName/files/图片文件名(xxx.jpg) 三级缓存: 远程服务器缓存…

[收藏]C++大师Stan Lippman:我对中国程序员的忠告

C大师Stan Lippman:我对中国程序员的忠告作者&#xff1a; www.ASPCool.com 时间:2004-9-20 18:07:29 C语言的创立者&#xff0c;斯坦.利普曼(Stan Lippman) 9月17日参加了在北京召开的微软技术大会Tech.Ed2004并做了"The C Binding, Integrating a Static and dynam…

node和express_如何在Node和Express中添加高级照片上传

node和express介绍 (Introduction) At one time or another when building our Node application we have been faced with uploading a photo (usually from a form) to be used as a profile photo for a user in our app. In addition, we usually have to store the photo …

Android ListView 数据更新的总结

1、android中ListView滚动刷新 在做ListView加载数据时如果数据量大的话会造成加载时间过长而卡屏&#xff0c;所以为了解决这个问题&#xff0c;查看了SDK&#xff0c; 在OnScrollListener中有两个方法 只要重写这两个方法就可以实现滚动加载&#xff0c;例如&#xff1a; pub…