欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

PopupWindow自定义位置显示的实现代码

程序员文章站 2023-11-16 16:46:28
一、概述 在android中弹出式菜单(以下称弹窗)是使用十分广泛的一种菜单呈现方式,弹窗为用户交互提供了便利。关于弹窗的实现大致有以下两种方式alertdialog和p...

一、概述

在android中弹出式菜单(以下称弹窗)是使用十分广泛的一种菜单呈现方式,弹窗为用户交互提供了便利。关于弹窗的实现大致有以下两种方式alertdialog和popupwindow,当然网上也有使用activity并配合dialog主题的方式实现弹窗,有兴趣的朋友也可以去研究一下。对于alertdialog和popupwindow两者最主要的区别就是显示的位置问题:

(1)alertdialog在位置显示上是固定的
(2)popupwindow相对比较随意,能够在主屏幕的任意位置显示。

二、效果图

PopupWindow自定义位置显示的实现代码

三、代码

(1)mainactivity中的代码:

public class mainactivity extends appcompatactivity {

  private int x;
  private int y;

  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);

  }

  @override
  public boolean ontouchevent(motionevent event) {

    // 获得点击屏幕的坐标

    x = (int) event.getx();
    y = (int) event.gety();

    // 加载popupwindow 对应的界面
    layoutinflater inflater = getlayoutinflater();
    final view popupview = inflater.inflate(r.layout.popup_entry_layout,null);

    // 创建popupwindow 对象
    final popupwindow popupwindow = new popupwindow(popupview,400,100); // 第二、第三个参数用来设置弹窗的大小,也可以用wrap_content

    // 设置位置
    popupwindow.showatlocation(popupview, gravity.no_gravity,x,y);

    new handler().postdelayed(new runnable() {
      @override
      public void run() {

        // 1秒后关闭该弹窗

        popupwindow.dismiss();

      }
    },1000);

    return true;
  }
}

(2)布局文件中的代码省略。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。