我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android自定义PopupWindow小案例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android自定义PopupWindow小案例

 PopupWindow是我们开发中的常客之一,使用起来也比较简单方便。
 写了个最简单地自定义PopupWindow,记录下来,方便以后使用时直接在上面改动就可以。



public class CustomPopup extends PopupWindow {
  //上下文
  private Context mContext;
  // PopupWindow中控件点击事件回调接口
  private IPopuWindowListener mOnClickListener;
  //PopupWindow布局文件中的Button
  private Button alarm_pop_btn;
   
  public CustomPopup(Context mContext, int width, int height, IPopuWindowListener listener) {
    super(mContext);
    this.mContext = mContext;
    this.mOnClickListener = listener;
    //获取布局文件
    View mContentView = LayoutInflater.from(mContext).inflate(R.layout.alarm_disopse_pop, null);
    //设置布局
    setContentView(mContentView);
    // 设置弹窗的宽度和高度
    setWidth(width);
    setHeight(height);
    //设置能否获取到焦点
    setFocusable(false);
    //设置PopupWindow进入和退出时的动画效果
    setAnimationStyle(R.style.popwindow_exit_anim_style);
    setTouchable(true); // 默认是true,设置为false,所有touch事件无响应,而被PopupWindow覆盖的Activity部分会响应点击
    // 设置弹窗外可点击,此时点击PopupWindow外的范围,Popupwindow不会消失
    setOutsideTouchable(false);
    //外部是否可以点击,设置Drawable原因可以参考:http://blog.csdn.net/harvic880925/article/details/49278705
    setBackgroundDrawable(new BitmapDrawable());
    // 设置弹窗的布局界面
    initUI();
  }
  
  private void initUI() {
  //获取到按钮
    alarm_pop_btn = (Button) getContentView().findViewById(R.id.alarm_pop_btn);
    //设置按钮点击事件
    alarm_pop_btn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        if (null != mOnClickListener) {
          mOnClickListener.dispose();
        }
      }
    });
  }
  
  public void show(View view) {
    int[] location = new int[2];
    view.getLocationOnScreen(location);
    //Gravity.BOTTOM设置在view下方,还可以根据location来设置PopupWindowj显示的位置
    showAtLocation(view, Gravity.BOTTOM, 0, 0);
  }
  
  public interface IPopuWindowListener {
    void dispose();
  }
}

注:设置PopupWindow的宽高还可以通过LayoutParams来设置,比如:


 //通过LayoutParams来设置PopupWindow的高度和宽度
  ViewGroup.LayoutParams lp = (ViewGroup.LayoutParams)mContentView.getLayoutParams();
   lp.widht=400;
   lp.height = 180;
  mContentView.setLayoutParams(lp);
  //但是直接这样写获取到的lp可能为空,我们在获取一个View的LayoutParams时,通常应该这样写:
  //在addOnGlobalLayoutListener监听中来获取View的LayoutParams  mContentView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
      @Override
      public void onGlobalLayout() {
        ViewGroup.LayoutParams lp = (ViewGroup.LayoutParams) mContentView.getLayoutParams();
        lp.height = 180;
        lp.width = 400;
        mContentView.setLayoutParams(lp);
      }
    });

在Activity中使用:


private CustomPopup alarmPopup;
....
//初始化PopupWindow这里通过数据200来设置PopupWindow高度
alarmPopup=new CustomPopup(getActivity(), ViewGroup.LayoutParams.MATCH_PARENT, 200, this);//这里的this是指当前Activity实现了PopupWindow中IPopuWindowListener接口
//弹出PopupWindow
 @Override
  protected void widgetClick(View v) {
    super.widgetClick(v);
    switch (v.getId()) {
      case R.id.popup:
        alarmPopup.show(v);
        break;
    }
  }
  //处理PopupWindow中按钮点击回调
   @Override
  public void dispose() {
    //TODO sth 
    if (alarmPopup.isShowing()) {
        alarmPopup.dismiss();//关闭PopupWindow
      }
  }

PopupWindow对应 的布局界面:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/pop_ll"
  android:layout_width="match_parent"
  android:layout_height="60dp"
  android:background="#404040"
  android:orientation="horizontal">
  <Button
    android:id="@+id/alarm_pop_btn"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@null"
    android:gravity="center"
    android:text="@string/dispose"
    android:textColor="#FFFFFF"
    android:textSize="18sp" />
</LinearLayout>

动画style:


  <style name="popwindow_exit_anim_style" parent="android:Animation">
    <item name="android:windowEnterAnimation">@anim/popshow_anim</item>
    <!-- 指定显示的动画xml -->
    <item name="android:windowExitAnimation">@anim/pophidden_anim</item>
    <!-- 指定消失的动画xml -->
  </style>

popshow_anim.xml


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
  <translate
  android:duration="500"
  android:fromYDelta="100%p"
  android:toYDelta="0" />
 <alpha
  android:duration="500"
  android:fromAlpha="0.0"
  android:toAlpha="1.0" />
</set>

pophidden_anim.xml:


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
   <translate
  android:duration="500"
  android:fromYDelta="0"
  android:toYDelta="50%p" />
 <alpha
  android:duration="500"
  android:fromAlpha="1.0"
  android:toAlpha="0.0" />
</set>
您可能感兴趣的文章:Android使用Dialog风格弹出框的ActivityAndroid实现可使用自定义透明Dialog样式的Activity完整实例Android解决dialog弹出时无法捕捉Activity的back事件的方法Android自定义仿微信PopupWindow效果android自定义popupwindow仿微信右上角弹出菜单效果Android自定义PopupWindow简单小例子Android开发:微信授权登录与微信分享完全解析Android 解决dialog弹出时无法捕捉Activity的back事件问题


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android自定义PopupWindow小案例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android自定义PopupWindow小案例

PopupWindow是我们开发中的常客之一,使用起来也比较简单方便。 写了个最简单地自定义PopupWindow,记录下来,方便以后使用时直接在上面改动就可以。/*** @param* @author ldm* @descriptio
2022-06-06

Android自定义PopupWindow简单小例子

最近没事做就写了一下PopupWindow,希望对有些人有点帮助。 照常先看一下完成后的结果(界面比较难看就不要吐槽了)点击地理位置然后弹出的PopupWindow,数据我写死了但是可以根据你们的需求自己改,或者通过网络获取数据。我是通过l
2022-06-06

Android自定义popupwindow实例代码

先来看看效果图:一、布局 Android自定义popupwindow实例代码
2022-06-06

Android自定义控件案例汇总1(菜单、popupwindow、viewpager)

自定义控件是根据自己的需要自己来编写控件。安卓自带的控件有时候无法满足你的需求,这种时候,我们只能去自己去实现适合项目的控件。同时,安卓也允许你去继承已经存在的控件或者实现你自己的控件以便优化界面和创造更加丰富的用户体验。在平常的项目中,我
2022-06-06

Android用PopupWindow实现自定义overflow

本文实例为大家分享了PopupWindow实现自定义overflow的具体代码,供大家参考,具体内容如下 当Action Bar的Action放不下时,系统会将其收集在overflow中。 用hierarchyviewer查看系统自己生成的
2022-06-06

Android用PopupWindow实现自定义Dailog

Android的PopupWindow是个很有用的widget,利用它可以实现悬浮窗体的效果,比如实现一个悬浮的菜单,最常见的应用就是在视频播放界面里,做一个工具栏,用来控制播放进度。本文利用PopupWindow来实现一个通用的Dailo
2022-06-06

Android自定义仿微信PopupWindow效果

给大家分享一个高仿微信的PopupWindow、就是微信的扫一扫那个功能窗口、下面有应用运行效果图、更加直观的展示了Demo的效果、源代码是通过两种方法实现的、大家可以下载源代码研究研究、集成到自己的项目中也是很方便的、希望对大家有用、先看
2022-06-06

Android简单实现自定义弹框(PopupWindow)

一:一般都是先上效果图二:实现步骤: 1.xml布局实现 2022-06-06

Android编程实现的自定义弹窗(PopupWindow)功能示例

本文实例讲述了Android编程实现的自定义弹窗(PopupWindow)功能。分享给大家供大家参考,具体如下: 在开发过程中,如果要弹出一个对话框,一般是使用AlertDialog,但其使用限制太大,灵活性不够,所以我们常需要用到灵活性更
2022-06-06

Android自定义弹出窗口PopupWindow使用技巧

PopupWindow是Android上自定义弹出窗口,使用起来很方便。 PopupWindow的构造函数为代码如下:public PopupWindow(View contentView, int width, int height, b
2022-06-06

Android自定义PopupWindow仿点击弹出分享功能

本文实例自定义PopupWindow,点击弹出PopupWindow,背景变暗,仿点击弹出分享功能,供大家参考,具体内容如下注:参照大神代码写的自定义代码package com.duanlian.popupwindowdemo; impo
2022-06-06

Android 自定义Dialog 实例

开发中经常需要请求网络获取数据,我们在请求网络到得到数据时当中需要等待一些时间,为了增加用户体验,我们一般会用一个Dialog来提示用户我们在加载网络数据。 今天我们来实现如下效果的加载中Dialog。 从图中我们可以看到要这个Dialo
2022-06-06

Android自定义ViewPager实例

本文实例讲述了Android自定义ViewPager的方法。分享给大家供大家参考,具体如下:package com.rong.activity; import android.content.Context; import android.
2022-06-06

【微信小程序】-- 案例 - 自定义 tabBar(四十六)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &
2023-08-17

Android中自定义ContentProvider实例

//以下为TestBaidu MainActivity如下: 代码如下: package cn.testbaidu; import android.net.Uri; import android.os.Bundle; import and
2022-06-06

android自定义popupwindow仿微信右上角弹出菜单效果

微信右上角的操作菜单看起来很好用,就照着仿了一下,不过是旧版微信的,手里刚好有一些旧版微信的资源图标,给大家分享一下。不知道微信是用什么实现的,我使用popupwindow来实现,主要分为几块内容:1、窗口布局文件:popwin_share
2022-06-06

如何在Android中使用PopupWindow制作一个自定义弹窗

本篇文章给大家分享的是有关如何在Android中使用PopupWindow制作一个自定义弹窗,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。代码:PopupWindow pw =
2023-05-31

Android 自定义ListView示例详解

本文讲实现一个自定义列表的Android程序,程序将实现一个使用自定义的适配器(Adapter)绑定 数据,通过contextView.setTag绑定数据有按钮的ListView。 系统显示列表(ListView)时,首先会实例化一个适配
2022-06-06

【微信小程序开发】自定义tabBar案例(定制消息99+小红心)

🤵‍♂️ 个人主页: @计算机魔术师 👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。 🌐 推荐一款找工作神器网站: 点击跳转牛客网 |笔试题库|面试经验|实
2023-08-17

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录