android PopupWindow实现从底部弹出或滑出选择菜单或窗口

Android案例页面底部弹框PopupWindow+竖直滑动选择器WheelView的实现 立即下载

本实例弹出窗口主要是继承PopupWindow类来实现的弹出窗体,布局可以根据自己定义设计。弹出效果主要使用了translate和alpha样式实现,具体实习如下:

第一步:设计弹出窗口xml:

 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout   
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="wrap_content"  
  6.     android:gravity="center_horizontal"  
  7.     android:orientation="vertical"  
  8.   >  
  9.   
  10. <LinearLayout   
  11.     android:id="@+id/pop_layout"  
  12.     android:layout_width="fill_parent"  
  13.     android:layout_height="wrap_content"  
  14.     android:gravity="center_horizontal"  
  15.     android:orientation="vertical"  
  16.     android:layout_alignParentBottom="true"  
  17.      android:background="@drawable/btn_style_alert_dialog_background"  
  18.      >  
  19.   
  20.       
  21.     <Button  
  22.         android:id="@+id/btn_take_photo"  
  23.         android:layout_marginLeft="20dip"  
  24.         android:layout_marginRight="20dip"  
  25.         android:layout_marginTop="20dip"  
  26.         android:layout_width="fill_parent"  
  27.         android:layout_height="wrap_content"  
  28.         android:text="拍照"  
  29.         android:background="@drawable/btn_style_alert_dialog_button"  
  30.         android:textStyle="bold"  
  31.          />  
  32.   
  33.     <Button  
  34.         android:id="@+id/btn_pick_photo"  
  35.         android:layout_marginLeft="20dip"  
  36.         android:layout_marginRight="20dip"  
  37.         android:layout_marginTop="5dip"   
  38.          android:layout_width="fill_parent"  
  39.         android:layout_height="wrap_content"  
  40.         android:text="从相册选择"  
  41.          android:background="@drawable/btn_style_alert_dialog_button"  
  42.          android:textStyle="bold"  
  43.          />  
  44.   
  45.     <Button  
  46.         android:id="@+id/btn_cancel"  
  47.        android:layout_marginLeft="20dip"  
  48.        android:layout_marginRight="20dip"  
  49.        android:layout_marginTop="15dip"   
  50.        android:layout_marginBottom="15dip"  
  51.        android:layout_width="fill_parent"  
  52.        android:layout_height="wrap_content"  
  53.        android:text="取消"  
  54.        android:background="@drawable/btn_style_alert_dialog_cancel"  
  55.        android:textColor="#ffffff"  
  56.        android:textStyle="bold"  
  57.          
  58.         />  
  59. </LinearLayout>  
  60. </RelativeLayout>  

 第二步:创建SelectPicPopupWindow类继承PopupWindow:

 

Java代码  收藏代码
  1. import android.app.Activity;  
  2. import android.content.Context;  
  3. import android.graphics.drawable.ColorDrawable;  
  4. import android.view.LayoutInflater;  
  5. import android.view.MotionEvent;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.view.View.OnTouchListener;  
  9. import android.view.ViewGroup.LayoutParams;  
  10. import android.widget.Button;  
  11. import android.widget.PopupWindow;  
  12.   
  13. public class SelectPicPopupWindow extends PopupWindow {  
  14.   
  15.   
  16.     private Button btn_take_photo, btn_pick_photo, btn_cancel;  
  17.     private View mMenuView;  
  18.   
  19.     public SelectPicPopupWindow(Activity context,OnClickListener itemsOnClick) {  
  20.         super(context);  
  21.         LayoutInflater inflater = (LayoutInflater) context  
  22.                 .getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
  23.         mMenuView = inflater.inflate(R.layout.alert_dialog, null);  
  24.         btn_take_photo = (Button) mMenuView.findViewById(R.id.btn_take_photo);  
  25.         btn_pick_photo = (Button) mMenuView.findViewById(R.id.btn_pick_photo);  
  26.         btn_cancel = (Button) mMenuView.findViewById(R.id.btn_cancel);  
  27.         //取消按钮  
  28.         btn_cancel.setOnClickListener(new OnClickListener() {  
  29.   
  30.             public void onClick(View v) {  
  31.                 //销毁弹出框  
  32.                 dismiss();  
  33.             }  
  34.         });  
  35.         //设置按钮监听  
  36.         btn_pick_photo.setOnClickListener(itemsOnClick);  
  37.         btn_take_photo.setOnClickListener(itemsOnClick);  
  38.         //设置SelectPicPopupWindow的View  
  39.         this.setContentView(mMenuView);  
  40.         //设置SelectPicPopupWindow弹出窗体的宽  
  41.         this.setWidth(LayoutParams.FILL_PARENT);  
  42.         //设置SelectPicPopupWindow弹出窗体的高  
  43.         this.setHeight(LayoutParams.WRAP_CONTENT);  
  44.         //设置SelectPicPopupWindow弹出窗体可点击  
  45.         this.setFocusable(true);  
  46.         //设置SelectPicPopupWindow弹出窗体动画效果  
  47.         this.setAnimationStyle(R.style.AnimBottom);  
  48.         //实例化一个ColorDrawable颜色为半透明  
  49.         ColorDrawable dw = new ColorDrawable(0xb0000000);  
  50.         //设置SelectPicPopupWindow弹出窗体的背景  
  51.         this.setBackgroundDrawable(dw);  
  52.         //mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框  
  53.         mMenuView.setOnTouchListener(new OnTouchListener() {  
  54.               
  55.             public boolean onTouch(View v, MotionEvent event) {  
  56.                   
  57.                 int height = mMenuView.findViewById(R.id.pop_layout).getTop();  
  58.                 int y=(int) event.getY();  
  59.                 if(event.getAction()==MotionEvent.ACTION_UP){  
  60.                     if(y<height){  
  61.                         dismiss();  
  62.                     }  
  63.                 }                 
  64.                 return true;  
  65.             }  
  66.         });  
  67.   
  68.     }  
  69.   
  70. }  
 

第三步:编写MainActivity类实现测试:

 

Java代码  收藏代码
  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.view.Gravity;  
  4. import android.view.View;  
  5. import android.view.View.OnClickListener;  
  6. import android.widget.TextView;  
  7.   
  8. public class MainActivity extends Activity {  
  9.   
  10.     //自定义的弹出框类  
  11.     SelectPicPopupWindow menuWindow;  
  12.       
  13.     @Override  
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.activity_main);  
  17.         TextView tv = (TextView) this.findViewById(R.id.text);  
  18.         //把文字控件添加监听,点击弹出自定义窗口  
  19.         tv.setOnClickListener(new OnClickListener() {             
  20.             public void onClick(View v) {  
  21.                 //实例化SelectPicPopupWindow  
  22.                 menuWindow = new SelectPicPopupWindow(MainActivity.this, itemsOnClick);  
  23.                 //显示窗口  
  24.                 menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow中显示的位置  
  25.             }  
  26.         });  
  27.     }  
  28.       
  29.     //为弹出窗口实现监听类  
  30.     private OnClickListener  itemsOnClick = new OnClickListener(){  
  31.   
  32.         public void onClick(View v) {  
  33.             menuWindow.dismiss();  
  34.             switch (v.getId()) {  
  35.             case R.id.btn_take_photo:  
  36.                 break;  
  37.             case R.id.btn_pick_photo:                 
  38.                 break;  
  39.             default:  
  40.                 break;  
  41.             }  
  42.               
  43.                   
  44.         }  
  45.           
  46.     };  
  47.       
  48. }  
 
Android底部弹窗的实现示例代码 本文主要是介绍Android中实现底部弹窗的的正确姿势,如果你在实现底部弹窗时遇到了一些问题,那么请仔细阅读本文,相信文章会对你有所帮助。 收获早知道 阅读完本文后,你可以有以下收获 利用PopupWindow实现底部弹窗 PopupWindow实现底部弹窗时的缺点 解决利用PopupWindow实现底部弹窗,无法覆盖状态栏的问题 利用dialog实现底部弹窗 利用dialogFragment实现底部弹窗 实现底部弹窗的方式 由于本人水平有限,只知道一下几种实现底部弹窗的方式 利用PopupWindow实现底部弹窗。 利用Dialog实现底部弹窗。 利用Dial 立即下载

相关推荐

Android PopupWindow实现右侧、左侧和底部弹出菜单

主要为大家详细介绍了Android PopupWindow实现右侧、左侧和底部弹出菜单的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Android从底部弹出一个PopupWindow

在开发中我们经常遇到PopupWindow从底部弹出的情况,比如从底部向上弹出分享按钮、菜单等等

Zhiwei_Sun的博客 2145

Android自定义PopWindow实现QQ、微信弹出菜单效果

前段时间在个人开发的项目中需要用到弹出菜单,类似QQ右上角的弹出菜单,自己使用popwin的次数也不是很多,其中也遇到过一点问题,今天正好有时间就把一些经验分享给大家。 先来看看最终实现过后的效果怎么样,下面放上图 自定义的弹出菜单是继承的popwin,并不是view 因为没有必要重复造车轮,如果想要实现某种特殊的效果另说。首先创建类MyPopWindow继承Popwindow。 public class MyPopWindow extends PopupWindow implements View.OnClickListener { private Context contex

androids实现从底部弹出列表选择框

android 使用bottomSheet+listView实现从底部弹出列表选择框

qq_37127456的博客 801

数字加网(一)— —概念及分色合成

由于大多数图像复制设备是二值设备,因此在图像复制过程中,必须先把连续调的灰度图像或彩色图像处理成二值的半色调图像,用单位面积的网点覆盖率来表现图像的颜色深浅变化。这个过程被称之为加网(Screening) 数字加网就是根据人眼视觉的空间混色特性,用人眼无法分辨的细小黑白点的单位覆盖面积来模拟灰度图像或彩色图像的层次变化,使得到

Sin_Geek成长の迹 8591

FT601Q芯片深度解析:从USB3.0引脚定义到FPGA FIFO协议实战选型

本文深入解析FT601Q芯片在USB3.0接口设计与FPGA协议栈开发中的应用,详细介绍了USB3.0引脚定义、FT601Q芯片架构、245同步FIFO模式及硬件设计要点,帮助工程师实现高速数据传输系统。

weixin_30607659的博客 447

【Android】Activity和PopupWindow都实现从底部弹出或滑出选择菜单或窗口

使用Activity和PopupWindow都实现从底部弹出或滑出选择菜单或窗口 【Android】测试与popwindow PopupWindow转载自:Android PopupWindow实现从底部弹出或滑出选择菜单或窗口       Android PopupWindow的使用和分析         Popupwindow的使用 ...

weixin_34358092的博客 230

Zemax操作40--序列模式中LD光源模拟

LD模拟

lzy750750的博客 9118

android Activity实现从底部弹出或滑出选择菜单或窗口(不需要dialog或popupwindow)

前言: 今天就是未来,没有人能代替你奋斗! 借鉴: http://104zz.iteye.com/blog/1685425: 第一步:设计要弹出窗口的xml布局: &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;RelativeLayout xmlns:android="http://schemas.android.com/a...

Lizheng~的博客 3935

VIO实战前传:手把手教你解读Kalibr双目IMU标定报告与参数应用

本文详细解析Kalibr双目IMU联合标定报告的核心参数与应用方法,涵盖重投影误差分析、IMU误差指标解读、关键变换矩阵原理及VINS-Fusion实战配置。通过手把手教学帮助开发者准确理解标定结果,解决VIO算法落地中的参数配置难题,提升视觉惯性里程计的系统稳定性与精度。

weixin_42699679的博客 331

抓包网络调试工具 reqable抓包教程

如果CA根证书未安装成功,网络图标是黄色,点击盾牌图标可以进入CA根证书安装界面,详细步骤请阅读。在API调试中,获取流量是第一步也是最基本的操作,这里讲解下如何使用Reqable获取流量,通俗地讲就是抓包。我们可以选择一个图片请求,双击打开详情面板,能够看到该请求的详细信息。如果系统代理未设置,网络图标是黄色,点击网络图标可以自动设置系统代理。此域名的结构树,可以查看该域名下所有请求的目录结构,点击选择可以查看该请求的详情。首先,需要启用Reqable的调试功能,点击最右上角的。打开浏览器,输入地址。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2552

android PopupWindow实现从底部弹出或滑出选择菜单或窗口

本实例弹出窗口主要是继承PopupWindow类来实现的弹出窗体,布局可以根据自己定义设计。弹出效果主要使用了translate和alpha样式实现,具体实习如下: 第一步:设计弹出窗口xml:   &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;RelativeLayout xmlns:android="http://sche...

xiao12593a的专栏 773

YOLOv11改进有效涨点专栏目录 | 含卷积、主干、注意力机制、Neck、检测头、损失函数、二次创新C2PSA/C3k2等各种网络结构改进

Hello,各位读者们好.本文为最新YOLOv11有效涨点专栏目录,YOLOv11以及发布了一个月左右,这个过程中我也是给大家整理了许多的机制,其中包含了C3k2、主干(均支持根据yolov11训练的版本进行二次缩放,全系列都能轻量化)、检测头、注意力机制、Neck多种结构上创新,也有损失函数和一些细节点上的创新。

Snu77的博客 8万+
上一篇: Android开发中view状态变化样式篇
下一篇: Ionic: Advanced HTML5 Hybrid Mobile App Framework
geekcoder
博客等级 码龄14年 78粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值