服务器之家

服务器之家 > 正文

android使用PopupWindow实现页面点击顶部弹出下拉菜单

时间:2021-03-29 14:30     来源/作者:Never-say-Never

实现此功能没有太多的技术难点,主要通过popupwindow方法,同时更进一步加深了popupwindow的使用,实现点击弹出一个自定义的view,view里面可以自由设计,比较常用的可以放一个listview。

demo中我只是一个点击展示,简单的使用了fade in out的动画效果,也没有精美的图片资源,看着也丑,不过这么短的时间,让你掌握一个很好用的技术,可以自己扩展,不很好么?

废话不说了,直接上代码:

mainactivity.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public class mainactivity extends activity implements onclicklistener {
  private popupwindow popupwindow;
  private button button;
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
    button = (button) findviewbyid(r.id.button1);
    button.setonclicklistener(this);
  }
  @override
  public void onclick(view v) {
    switch (v.getid()) {
    case r.id.button1:
      if (popupwindow != null&&popupwindow.isshowing()) {
        popupwindow.dismiss();
        return;
      } else {
        initmpopupwindowview();
        popupwindow.showasdropdown(v, 0, 5);
      }
      break;
    default:
      break;
    }
  }
  public void initmpopupwindowview() {
    // // 获取自定义布局文件pop.xml的视图
    view customview = getlayoutinflater().inflate(r.layout.popview_item,
        null, false);
    // 创建popupwindow实例,200,150分别是宽度和高度
    popupwindow = new popupwindow(customview, 250, 280);
    // 设置动画效果 [r.style.animationfade 是自己事先定义好的]
    popupwindow.setanimationstyle(r.style.animationfade);
    // 自定义view添加触摸事件
    customview.setontouchlistener(new ontouchlistener() {
      @override
      public boolean ontouch(view v, motionevent event) {
        if (popupwindow != null && popupwindow.isshowing()) {
          popupwindow.dismiss();
          popupwindow = null;
        }
        return false;
      }
    });
    /** 在这里可以实现自定义视图的功能 */
    button btton2 = (button) customview.findviewbyid(r.id.button2);
    button btton3 = (button) customview.findviewbyid(r.id.button3);
    button btton4 = (button) customview.findviewbyid(r.id.button4);
    btton2.setonclicklistener(this);
    btton3.setonclicklistener(this);
    btton4.setonclicklistener(this);
  }
}

activity_main.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="#000000"
  tools:context=".mainactivity" >
  <button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignparentleft="true"
    android:layout_alignparenttop="true"
    android:gravity="center"
    android:background="#c0c0c0"
    android:text="点击下拉列表" />
</relativelayout>

自定义view的xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="#c0c0c0" >
  <button
    android:id="@+id/button2"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:layout_alignparentleft="true"
    android:layout_alignparenttop="true"
    android:paddingright="70dp"
    android:text="viviens" />
  <button
    android:id="@+id/button3"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:layout_alignparentleft="true"
    android:layout_below="@+id/button2"
    android:paddingright="70dp"
    android:text="mryang" />
  <button
    android:id="@+id/button4"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:layout_alignparentleft="true"
    android:layout_below="@+id/button3"
    android:paddingright="70dp"
    android:text="张晓达" />
</relativelayout>

动画效果:

inputodown.xml 进入屏幕

?
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
  <translate
    android:duration="500"
    android:fromydelta="-100%"
    android:toydelta="0" />
</set>

outdowntoup.xml

?
1
2
3
4
5
6
7
<?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="-100%" />
</set>

styles.xml

?
1
2
3
4
5
<style name="animationfade">
  <!-- popupwindow左右弹出的效果 -->
  <item name="android:windowenteranimation">@anim/inuptodown</item>
  <item name="android:windowexitanimation">@anim/outdowntoup</item>
</style>

实现效果:

android使用PopupWindow实现页面点击顶部弹出下拉菜单

以上所述就是本文对android使用popupwindow实现页面点击顶部弹出下拉菜单的全部内容,希望大家喜欢。

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部