Android之PopupWindow(弹窗)

一、特点
1、可以在任意位置出现(对话框基本上只会在中间出现)
2、在弹窗中间可以附加多种操作(对话框通常指针对于一种操作的不同选择)
3、弹窗不会展现在界面中,只有进行某种操作后,才会出现,而出现的弹窗必然是与操作相关的一些后续操作或选项(弹窗是一个在你需要的时候,给你更多选择;在你不需要的时候,不会干扰你的视线)

二、PopupWindow的位置
以某一控件为参照物,设置相对位置

三、PopupWindow使用步骤
1、创建PopupWindow对象实例
2、设置背景、注册时间监听器和添加动画
3、展示PopupWindow
showPopupWindow.java

 	//设置showPopupWindow
    private void showPopupWindow(View view) {
        //把整个布局变成一个View,准备弹窗所需要的视图对象
        View v= LayoutInflater.from(this).inflate(R.layout.popup_layout,null);//没有父容器,传null
        //1、创建PopupWindow对象实例
        //参数1:用在弹窗中的View
        //参数2、3:弹窗的宽、高
        //参数4(focusable):能否获取焦点
        final PopupWindow window=new PopupWindow(v,420,100,true);

        //2、设置背景、注册时间监听器和添加动画
        //设置背景
        window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//设为背景为透明色
        //设置能响应外部的点击事件
        window.setOutsideTouchable(true);
        //设置弹窗能响应点击事件
        window.setTouchable(true);

        //设置动画效果
        //①创建动画资源 ②创建一个style应用动画资源 ③对当前弹窗的动画风格设置为第二步的资源索引
        window.setAnimationStyle(R.style.translate_anim);


        //3、展示PopupWindow
        //参数1(anchor):锚,显示在某个按钮的下面
        //参数2、3:相对于锚在x、y方向上的偏移量
        window.showAsDropDown(view,-500,0);

        //为弹窗中的文本设置点击事件
        v.findViewById(R.id.choose).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"您点击了选择",Toast.LENGTH_SHORT).show();
                window.dismiss();//点击了弹窗中的文本后,弹窗消失
            }
        });

        v.findViewById(R.id.choose_all).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"您点击了全选",Toast.LENGTH_SHORT).show();
                window.dismiss();
            }
        });

        v.findViewById(R.id.copy).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"您点击了复制",Toast.LENGTH_SHORT).show();
                window.dismiss();
            }
        });
    }

styles.xml

 <!-- ②创建一个style应用动画资源   -->
    <style name="translate_anim">

        <item name="android:windowEnterAnimation">@anim/translate</item>
    </style>

popup_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#00ffff"
    android:padding="2dp">

    <TextView
        android:id="@+id/choose"
        android:layout_width="45dp"
        android:layout_height="30dp"
        android:text="选择"
        android:textColor="#ffffff"
        android:gravity="center"
        android:background="#000000"/>

    <TextView
        android:id="@+id/choose_all"
        android:layout_width="45dp"
        android:layout_height="30dp"
        android:text="全选"
        android:textColor="#ffffff"
        android:gravity="center"
        android:background="#000000"/>

    <TextView
        android:id="@+id/copy"
        android:layout_width="45dp"
        android:layout_height="30dp"
        android:text="复制"
        android:textColor="#ffffff"
        android:gravity="center"
        android:background="#000000"/>
</LinearLayout>

在myClick()方法中加入以下代码

 case R.id.popup_btn:
                showPopupWindow(view);
                break;
发布了34 篇原创文章 · 获赞 5 · 访问量 7487

猜你喜欢

转载自blog.csdn.net/qq_39438055/article/details/104113346