popupwindow 底部弹出+背景半透明
- 首先是布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/popup_linear"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/translucent"android:orientation="vertical"><LinearLayout
android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:gravity="center"android:layout_marginTop="14dp"android:padding="14dp"><ImageView
android:id="@+id/img_type"android:layout_width="wrap_content"android:layout_height="wrap_content"android:scaleType="centerInside"/></LinearLayout><LinearLayout
android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/bg_popup_photo"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:orientation="vertical" ><TextView
android:id="@+id/take_photo_tv"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:padding="15dp"android:textSize="@dimen/text_medium"android:text="拍照"android:textColor="@color/blue" /><View
android:layout_width="match_parent"android:layout_height="1px"android:background="@color/divide_line" /><TextView
android:id="@+id/gallery_photo_tv"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:padding="15dp"android:text="从手机相册选择"android:textSize="@dimen/text_medium"android:textColor="@color/blue" /></LinearLayout><LinearLayout
android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/bg_popup_photo"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:layout_marginTop="10dp"android:layout_marginBottom="20dp"android:orientation="vertical" ><TextView
android:id="@+id/photo_cancle"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:padding="15dp"android:textSize="@dimen/text_medium"android:text="取消"android:textColor="@color/blue" /></LinearLayout>
</LinearLayout>
- 布局里的最外层布局可以是透明的也可以是半透明的,可以在下面设置。translucent这个是半透明
public ImagePopupWindow(Context context) {
// super(context);this.mContext=context;LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View view = inflater.inflate(R.layout.popup_get_pic, null);setContentView(view);//这句话必须要有,如果没有点击背景是全黑,除非你先点击了别的设置了这个属性的popupwindowview.getBackground().setAlpha(150);//设置宽和高setWidth(LayoutParams.MATCH_PARENT);setHeight(LayoutParams.MATCH_PARENT);setTouchable(true);//这个控制PopupWindow内部控件的点击事件,但是我的项目中没用这个也能点击。setFocusable(true);//点击外部是否可消去,需要与上面的属性配合使用,都为true可消去,都为false不可消去,也有说法是setOutsideTouchable必须和setBackgroundDrawable同时用才好用,没试过,就都写上了。setOutsideTouchable(true);//设置透明的颜色背景。以前的那个方法过时了用这个,与下面一个意思就是分开不开写的区别,在这可以设置背景色,也可以在布局里设置背景色setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
// //实例化一个ColorDrawable颜色为半透明
// ColorDrawable dw = new ColorDrawable(0xb0000000);
// // 设置弹出窗体的背景
// this.setBackgroundDrawable(dw);//设置动画效果this.setAnimationStyle(R.style.popupAnimationTwo);initView(view);setListener();}
- 进和出的动画效果放在style里
<style name="popupAnimation" parent="android:Animation"><item name="android:windowEnterAnimation">@anim/popup_in</item><item name="android:windowExitAnimation">@anim/popup_out</item></style>
进和出的动画效果放在anim里
进入动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">//移动<translate
android:duration="300"//动画时间android:fromYDelta="100%p"//开始位置,p为parent,相对于父类,100%p也就是在最底部android:toYDelta="0" />//结束位置,0也就是在最上边//透明度<alpha
android:duration="300"android:fromAlpha="0.0"//透明度由透明到不透明android:toAlpha="1.0" />
</set>
- 出的动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><translate
android:duration="300"android:fromYDelta="0"android:toYDelta="100%p" /><alpha
android:duration="300"android:fromAlpha="1.0"android:toAlpha="0.0" />
</set>
但是这个做,半透明的背景也会从底部弹出,有动画效果,个人感觉不好看,所以可以这个改,在布局和popupwindow里面背景设置为透明,然后在用到popupwindow的地方 用下面的方法
imgPop = new ImagePopupWindow(this);imgPop.showAtLocation(mHeadIv, Gravity.CENTER, 0, 0);imgPop.setOnPicTypeListener(new ImagePopupWindow.OnPicTypeListener() {
// @Override
// public void onCamera() {// //ImageChooseUtils.doCameraPhoto(AddColorActivity.this);
GalleryFinal.openCamera(1,mOnHanlderResultCallback);
// photoUtil=new PhotoUtil(PersonalDataActivity.this);
//
// }@Overridepublic void onPhoto() {GalleryFinal.openGallerySingle(2, mOnHanlderResultCallback);}});backgroundAlpha(0.7f);imgPop.setOnDismissListener(new PopupWindow.OnDismissListener() {@Overridepublic void onDismiss() {backgroundAlpha(1f);}});/*** 设置添加屏幕的背景透明度* @param bgAlpha*/public void backgroundAlpha(float bgAlpha){WindowManager.LayoutParams lp = getWindow().getAttributes();lp.alpha = bgAlpha; //0.0-1.0getWindow().setAttributes(lp);}
- 贴一份完整的代码(布局已经有了)
public class SexPopupWindow extends PopupWindow implements OnClickListener {public TextView mWoman, mMan, mClance;public LinearLayout li;public OnSexTypeListener onSexTypeListener;public SexPopupWindow(Context context) {super(context);LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View view = inflater.inflate(R.layout.popup_sex, null);setContentView(view);view.getBackground().setAlpha(150);setWidth(LayoutParams.MATCH_PARENT);setHeight(LayoutParams.MATCH_PARENT);setFocusable(true);setOutsideTouchable(true);setBackgroundDrawable(new BitmapDrawable());this.setAnimationStyle(R.style.popupAnimation);initView(view);setListener();}private void initView(View view) {mWoman = (TextView)view.findViewById(R.id.woman_tv);mMan = (TextView)view.findViewById(R.id.man_tv);mClance = (TextView)view.findViewById(R.id.cancle_tv);li = (LinearLayout)view.findViewById(R.id.popup_linear);}private void setListener() {mWoman.setOnClickListener(this);mMan.setOnClickListener(this);mClance.setOnClickListener(this);li.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.woman_tv:onSexTypeListener.onWoman();dismiss();break;case R.id.man_tv:onSexTypeListener.onMan();dismiss();break;case R.id.cancle_tv:dismiss();break;case R.id.popup_linear:dismiss();break;}}public void setOnSexTypeListener(OnSexTypeListener l){onSexTypeListener = l;}public interface OnSexTypeListener {void onWoman();void onMan();}}
sexPop = new SexPopupWindow(this);sexPop.showAtLocation(mHeadIv, Gravity.CENTER, 0, 0);sexPop.setOnSexTypeListener(new SexPopupWindow.OnSexTypeListener() {@Overridepublic void onWoman() {mSexTv.setText("女性");}@Overridepublic void onMan() {mSexTv.setText("男性");}});
popupwindow 底部弹出+背景半透明相关推荐
- PopupWindow底部弹出,底部UI被遮盖问题
之前做项目的时候也碰到过PopupWindow从底部弹出,界面底部的UI有一部分被遮盖了.之前碰到这个问题的大多是类似华为手机之类的有虚拟按键的手机.可是这次我用来运行的机子是模拟机,也没有虚拟按键之 ...
- html透明页面锁定窗口,CSS弹出背景半透明窗口
弹出窗口,背景半透明 body{margin:0px;} #bg{width:100%;height:100%;top:0px;left:0px;position:absolute;filter: A ...
- 底部弹出PopupWindow并且背景变为半透明效果
来自:http://blog.csdn.net/LANG791534167/article/details/48985101 先来看看运行效果图 [方式一]实现从底部弹出PopupWindow 原理: ...
- 【Android】Activity和PopupWindow都实现从底部弹出或滑出选择菜单或窗口
使用Activity和PopupWindow都实现从底部弹出或滑出选择菜单或窗口 [Android]测试与popwindow PopupWindow转载自:Android PopupWindow实现从 ...
- android PopupWindow实现从底部弹出或滑出选择菜单或窗口
android PopupWindow实现从底部弹出或滑出选择菜单或窗口 http://www.open-open.com/lib/view/open1379383271818.html http:/ ...
- Android自定义底部弹出窗-dialog(2种实现分析+源码)
Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...
- Android仿IOS封装通用的弹出框Dialog和底部弹出列表选择框 仿美团顶部条件筛选框 附自定义ViewGroup
弹出框 背景 提示与询问弹出框 实现 使用 列表选择框 实现 使用 顶部条件筛选框 实现 自定义ViewGroup 使用 总结 背景 鉴于Android提供的默认弹出框很一般,IOS的弹出框样式还不错 ...
- Android——完全自定义 底部弹出支付页面
近期博主在网上随便搜了一番,发现很多实现 底部弹出支付页面的大多数都用的,自定义PopupWindow 去实现的,里面复杂的逻辑看得我不想看,很多对自定义不熟悉伙伴们,看到 自定义 这三个字就有种血脉 ...
- Android之popWindows底部弹出挡住了华为虚拟键盘问题
1.问题 使用popWindows的时候底部弹出遮挡华为虚拟键盘 2.解决办法 在调用下面代码之前 popupWindow.showAtLocation 加上如下的代码进行设置 popupWindow ...
最新文章
- 多路径配置udev_ASM磁盘多路径及udev配置
- android系统 通知管理,Android的通知系统
- 3-07. 求前缀表达式的值(25) (ZJU_PAT数学)
- YUI经验谈 - 自定义事件默认行为
- 计算机网络链接的主要目标 主要功能,计算机网络课程教案.doc
- python 内置运算
- python单词的含义-Python这个单词是什么含义??????????????
- Android4.4 多媒体开发(五)----OpenMax简介
- 移植SlidingMenu Android library,和安装example出现的问题解决
- Java 代码混淆器
- 拓端tecdat|SAS用梯度提升回归树(GBDT)迁移学习预测抵押贷款拖欠风险和垃圾电子邮件数据
- excel vba 数据分析
- 苹果开发者新账号上新app审核被拒绝:Other-Other被拒绝,心路历程记录!
- PaMIR: Parametric Model-Conditioned Implicit Representation for Image-based Human Reconstruction
- Dreamweaver cs3快捷键一览
- 服务器虚拟机ping不通百度,未知的名称或服务,解决方法
- 监控摄像头服务器维护要多久,监控摄像头如何维护 监控摄像头维护方法【详解】...
- idea远程断点调试
- 阿里云服务器怎么样可以实现 frp 内网穿透
- spark 的lit是什么_什么是LIT文件(以及如何打开一个文件)?
热门文章
- 计算机故障维修要遵循什么原则,计算机故障排除原则和方法;
- 激光打印机的原理、碳粉分类
- 电击脖子还能抗疲劳?FDA在20年前就已批准这种疗法
- 根据经纬度确定行政区域_获取中国指定行政区域内所有POIS(兴趣点)的方法
- docker服务器版搭建pikachu靶场
- 逆天了,俄罗斯黑客一口气黑掉60多所大学和政府机构
- 暗通道去雾法-对算法的理解Dark Channel Prior
- 西安电子科技大学计算机科学与技术排名,西安电子科技大学双一流学科名单2个...
- Qt 5.9.5学习笔记第三节课
- 【数学理论】最优化问题:拉格朗日乘子法、KKT条件以及对偶问题