Android从屏幕底部弹出popupWindow 先看一下效果,看看是不是你想要的效果,免得浪费大家的时间,有一点说明,由于我录制的 gif 是用的模拟器,所以没有屏幕变暗的效果和加速的弹起的效果,实际效果以真机测试为准...> 2.代码部分 我此处用的是一个加速的平移动画,从屏幕底部弹出,然后将屏幕的亮度变暗,让popupwindow获取焦点,就可以实现了popupwindow从手机屏幕底部弹出的效果...()) { case R.id.rlIcon: // TODO 弹出popupwind选择拍照或者从相册选择 changeIcon...popupWindow.setOutsideTouchable(true); // 平移动画相对于手机屏幕的底部开始,X轴不变,Y轴从1变0...} // 设置popupWindow的显示位置,此处是在手机屏幕底部且水平居中的位置 popupWindow.showAtLocation(SettingActivity.this.findViewById
PopupWindowCompat.showAsDropDown(mWindow, mButtom, 0, 0, Gravity.START); //或者 mWindow.showAsDropDown(...); //又或者使用showAtLocation根据屏幕来定位...left.gif 查了下showAsDropDown(),发现只能在指定控件的下面弹出,总感觉少了点什么~~ 有时候我想弹在View的上面、左边、右边?怎么解? ?...还未弹出时,宽高为0 contentView.measure(makeDropDownMeasureSpec(window.getWidth()), makeDropDownMeasureSpec...还能超出屏幕(感觉用不上)。...参考 RelativePopupWindow EasyPopup Android弹窗_PopupWindow详解 (挺详细的) 以上有错误之处,感谢指出
它的特点如下: 它作为android.support.design.widget.CoordinatorLayout 的子视图,出现在页面底部。 可以显示一个字符串和一个按钮。...xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com.../apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent..." android:layout_height="match_parent" android:fitsSystemWindows="true" android:background...="#2a5caa"> android.support.design.widget.CoordinatorLayout> 2.在代码里执行显示snackbar Snackbar.make
(contentView); 如果创建PopupWindow的时候没有指定高宽,那么showAsDropDown默认只会向下弹出显示,这种情况有个最明显的缺点就是:弹窗口可能被屏幕截断,显示不全,所以需要使用到另外一个方法...如下图所示,我们可以根据屏幕左上角的坐标A,屏幕高宽,点击View的左上角的坐标C,点击View的大小以及PopupWindow布局的大小计算出PopupWindow的显示位置B ?...contentView.getMeasuredHeight(); final int windowWidth = contentView.getMeasuredWidth(); // 判断需要向上弹出还是向下弹出显示...windowContentViewRoot是根布局View 上面的例子只是提供了一种计算方式,在实际开发中可以根据需求自己计算,比如anchorView在左边的情况,在中间的情况,可以根据实际需求写一个弹出位置能够自适应的...补充上获取屏幕高宽的代码ScreenUtils.java: /** * 获取屏幕高度(px) */ public static int getScreenHeight
:从屏幕底部对齐弹出 ?...调用update方法更新第5点中弹出PopupWindow,发现PopupWindow的Gravity发生了改变 ?...PopupWindow高宽都设置为match_parent:7.0(左边)从屏幕左上角弹出,5.1(右边)从anchorView下方弹出 ? ? 2....宽度wrap_content-高度match_parent:7.0(左边)从屏幕左上角弹出,5.1(右边)从anchorView下方弹出 ? ? 3....宽度wrap_content-高度大于anchorView到屏幕底部的距离:7.0与5.1都从anchorView上方弹出,与anchorView左对齐 ?
分析: 1、点击右上角三个点的图标,在界面底部弹出一个区域,这个区域有一些按钮提供给我们操作 2、当该区域出现的时候,详情界面便灰了,也说成透明度变化了 3、当任意选了一个按钮或者点击了该区域以外的部分...PopupWindow ,注意 父容器需要有一个id,因为我们需要它来给PopupWindow设置弹出的位置 android="http://schemas.android.com...(this, selectItemsOnClick); // 设置popupWindow显示的位置 // 此时设在界面底部并且水平居中...出现的时候 屏幕的透明度 ,设为0.5 即半透明 灰色效果 backgroundAlpha(0.5f); // 设置popupWindow...取消的点击事件,即popupWindow消失后,屏幕的透明度,全透明,就回复原状态 feedSelectPopupWindow.setOnDismissListener(
例如上图,在按下菜单键后会弹出对应的菜单选项,准确来说,是在菜单键弹起后出现的一个popupwindow,那么从菜单键弹起到popupwindow创建所涉及到的历程是怎样的呢?...按键键值,通知framework层,framework经过一系列的处理后分发给上层,或者拦截掉 现在是假设framework层已经把menu按键分发给了用户,那么接下里就是activity进行响应,所以从Activity...开始看起,整体流程如下: 从按键弹起framework层分发到activity开始,到弹出popupwindow结束整个流程图 代码所在目录如下 流程图中所涉及到的一些只是单纯的作为中介调用了一下,按着流程自己也可以看到...,或者正在弹出,然后在进行popup对象的实例化,并开启加载popup的线程。...popup,mPopup.tryShow(); 到这里menu按下从activity分发到popup的弹起就分析完了
API文档 继承树: java.lang.Object ↳ android.widget.PopupWindow 概述: popupWindow,顾名思义,用作在当前Activity前弹出一个界面...setBackgroundDrawable(Drawable background) //设置pw背景 void setClippingEnabled(boolean enabled) /*允许弹出窗口超出屏幕范围...默认情况下,窗口被夹到屏幕边界。设置为false将允许Windows精确定位。...Events都有一个大小,当Events的大小比手指尺寸大时即为CheekPress,这个可能常用于打电话时脸颊碰到屏幕的情况*/ void setOnDismissListener(PopupWindow.OnDismissListener...window显示指定的内容 parent:传你当前Layout的id; gravity:Gravity.BOTTOM(以屏幕左下角为参照),偏移量会以它为基准点 当x y为0,0是出现在底部居中*
概述 我们在使用手机QQ时,点击菜单键,会弹出如本案例说演示的效果图似的菜单选项。 ? 实现方式有很多种,在这里我们来演示下如何通过自定义PopupWindow的方式一步一步的实现如上效果。...点击外部,PopupWindow可消失 …… 实现 自定义PopupWindow UI编写 位于父布局的底部 距边框有一定的距离,根布局使用layout_margin即可 ListView(四个圆角+...白色背景) + View分割(透明色) +底部文字(圆角+白色背景) 蓝色字体 居中显示(ListView中的 在Item设置即可,底部文字设置gravity即可) ……....布局文件如下所示: list_popupwindow.xml android="http://schemas.android.com/apk/res/android...; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.TextView;
前言 小伙伴们,在上文中我们介绍了Android视图组件GridView,本文我们继续盘点,介绍一下视图控件的PopupWindow。...一 PopupWindow基本介绍 PopupWindow是Android中的一个弹出窗口控件,它可以在屏幕上方或下方弹出一个类似浮层的视图。...PopupWindow常用于实现一些简单的弹出式菜单、提示信息或自定义的交互界面。...setClippingEnabled(boolean enabled):设置是否允许PopupWindow超出屏幕范围。...四 总结 PopupWindow是Android中用于实现弹出式窗口的控件,可以展示自定义的视图,并具有灵活的位置、大小和样式设置。
使用方式: 示例一:用于从底部弹出,仿IOS的弹窗效果。常用语选择相机相册、分类查看等等。...public void showAll(View view) { if (popupWindow !...(findViewById(android.R.id.content), Gravity.BOTTOM, 0, 0); } ?...示例一 示例二:从控件的上下左右弹出,常用于点赞、撤销等等。 public void showLeftPop(View view) { if (popupWindow !...= null && popupWindow.isShowing()) return; popupWindow = new CommonPopupWindow.Builder(this)
对象 // 设置popupWindow显示的位置 // 此时设在界面底部并且水平居中 popup.showAtLocation...取消的点击事件,即popupWindow消失后,屏幕的透明度,全透明,就回复原状态 popup.setOnDismissListener(new PopupWindow.OnDismissListener...中的任意按钮,记得关闭此popupWindow, popup.dismiss(); } }; 弹出PopupWindow操作 ArrayList<String...对象 // 设置popupWindow显示的位置 // 此时设在界面底部并且水平居中 popup.showAtLocation(feedback_list_ly...,设为0.5 即半透明 灰色效果 backgroundAlpha(0.5f); // 设置popupWindow取消的点击事件,即popupWindow消失后,屏幕的透明度
--保持CPU 运转,屏幕和键盘灯有可能是关闭的,用于文件上传和下载 --> android:name="android.permission.WAKE_LOCK" /...,null); final PopupWindow popupWindow = new PopupWindow(contentview, LinearLayout.LayoutParams.WRAP_CONTENT...,进行数据操作 mItemClickListener.onEditOrDeleteClick(pos, EDIT_CODE); //销毁弹出框...进行数据操作 mItemClickListener.onEditOrDeleteClick(pos, DELETE_CODE); //销毁弹出框...8-3、需要Demo源码的童鞋,可以在底部公众号回复:"BmobDemo"即可获取。 小编整理了一份Android电子书籍,需要的童鞋关注公众号回复:"e_books" 即可获取哦!
接到一个博友的反馈,在屏幕旋转时调用 PopupWindow 的 update 方法失效。...使用场景如下:在一个 Activity 中监听屏幕旋转事件,在Activity主布局文件中有个按钮点击弹出一个 PopupWindow,另外在主布局文件中有个 ListView。...-- 这个ListView的显示隐藏直接影响到PopupWindow在屏幕旋转的时候update方法是否生效 --> <ListView android:id="@+id/listview"...监听屏幕旋转并调用PopupWindow的update方法,发现如果ListView可见的时候,update方法不生效,ListView不可见的时候update生效" /> <Button android...:layout_marginLeft="44dp" android:layout_marginTop="40dp" android:text="点击弹出PopupWindow" />
2.实例基础代码 我们要实现的界面就是上面所示的界面,上下各有两个按钮,点击按钮分别在正确的位置弹出PopupMenu或者PopupWindow,下面是界面代码: <RelativeLayout...); return true; } return false; } 从上面的代码可以看出,不论是点击上面的还是下面的show popup menu按钮,结果都是弹出在当前按钮附近显示...4.实现PopupWindow 实现PopupWindow稍微复杂些,但是自定义性更强,它可以将任意界面设置为PopupWindow。...}); } 从上面代码可以看出,点击上面和下面的按钮代码略微不同,因为这里我希望PopupWindow一直是从界面的底部慢慢滑入进入的,所以要控制下位置。...android:duration="200"/> (3)使用PopupWindow还有不少需要注意的地方,例如你上面看到的代码中很多判断popupwindow是否为null或者是否正在显示等,有一个情况是
在实际开发中,Android自带的菜单显得朴素不够灵活,一个是位置固定,如选项菜单固定从页面底部弹出,溢出菜单固定从页面右上角弹出,上下文菜单固定显示在页面中央;另一个是样式固定,无法设置菜单背景...PopupWindow的机制是实现一个弹出框,其内容可以是任意布局的View,其页面悬浮在当前Activity页面之上。...2、弹窗在弹出和消失时显示伸缩动画; 调用setAnimationStyle方法设置动画样式,该样式在styles.xml中定义,其中"android:windowEnterAnimation"项定义的是展示弹窗时的动画...; import android.widget.Button; import android.widget.ListView; import android.widget.PopupWindow; import...android.widget.Toast; import android.widget.PopupWindow.OnDismissListener; public class MainActivity
做项目经常需要用到各种各样的提示框,今天先把通用的提示框和仿IOS的弹出框写到demo里面后面会持续更新其他的。...; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.PopupWindow.OnDismissListener...mItems; this.mCancleAbleOutSide = mCancleAbleOutSide; showMyBottomPop(); } /** * 此种情况适用于在弹框上弹出...} // 设置popWindow的显示和消失动画 mPopupWindow.setAnimationStyle(R.style.mypopwindow_anim_style); // 在底部显示...=null && mPopupWindow.isShowing()) { mPopupWindow.dismiss(); } } /** * 设置添加屏幕的背景透明度 *
背景 在使用某APP的过程中发现,该APP对PopupWindow的沉浸式支持并不好,在使用PopupWindow的时候,状态栏会变成纯白色,看不到时间信号等等。如下图所示 ?...APP弹出菜单时候状态栏底色纯白 而正常的状态栏应该如下图所示 ? 正常情况下状态栏显示 问题追踪 看到这个之后觉得顶部看不到时间、信号神马的非常不舒服,于是上Google查了一下原因。.../Dialog弹出的时候,也可以正常显示了,在自己做的Demo中也证实了这一点 解决办法 在PopupWindow/Dialog展示(show)之前,调用setFocusable(false),这样在弹出...PopupWindow的时候没有焦点,就不会影响沉浸式状态栏的显示了。...遗留问题 因为Android底部有虚拟按键,上网查资料发现都说需要设置Popup的WindowInputMethod,但是发现和预期不一样,会导致虚拟按键的位置有问题,所以,暂时没有解决方案,最后还是通过
概述 Toast与对话框类似,也会在屏幕的某个位置弹出一个窗口,在窗口中可以显示文本、图片等信息 与对话框不同的是,Toast信息提示框不可获得焦点,而且在显示一定的时间后会自动关闭。...因此,再显示Toast信息提示框的同时,屏幕上的控件仍然可以继续操作。 Toast的基本用法 显示Toast需要使用android.widget.Toast类。...如果同时多个Toast信息提示框,系统会将这些Toast信息提示框放到队列中,等前一个Toast信息提示框关闭后会显示下一个Toast信息提示框,也就是说Toast信息提示框是按顺序显示的 ---- 用PopupWindow...(this); View view = inflater.inflate(R.layout.activity_popupwd_toast, null); final PopupWindow...popupWindow = new PopupWindow(view,500 ,200); popupWindow.setTouchable(false); popupWindow.showAtLocation
领取专属 10元无门槛券
手把手带您无忧上云