Ventana emergente de la ventana flotante de Android

Visión de conjunto

Hoy se desarrolla una función, que es hacer clic en el avatar. El usuario puede elegir qué hacer con él, pero necesitamos usar la ventana flotante para completarlo. Al principio, usaba AlertDialog para el desarrollo, pero el efecto era relativamente feo, así que cambié a PopupWindow para la operación. Solía ​​hacerlo antes, pero nunca he tomado notas.

¿Qué es PopupWindow?

Esta clase representa una ventana emergente que se puede usar para mostrar una vista arbitraria. La ventana emergente es un contenedor flotante que aparece encima de la actividad actual.

¿Cómo debemos usar nuestra ventana emergente con elegancia?

De acuerdo con la práctica internacional, primero miramos su código:

item_layout.xml Página de diseño de ventana emergente

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">

     <Button
         android:id="@+id/btn_xixi"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:padding="5dp"
         android:text="Hello"
         android:textSize="18sp" />

     <Button
         android:id="@+id/btn_hehe"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:padding="5dp"
         android:text="World"
         android:textSize="18sp" />
 </LinearLayout>

Esto también es muy simple, simplemente ponemos dos botones.
Aquí uso la forma más simple sin ninguna operación de animación.
Luego miramos nuestro código lógico.

public class MainActivity extends AppCompatActivity {
    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        this.textView = this.findViewById(R.id.main_TextView);
        this.textView.setOnClickListener(view -> initPopupWindow(view));
    }
    void initPopupWindow(View v) {
        //创建内容显示View
        View view = LayoutInflater.from(this).inflate(R.layout.item_popip, null, false);
        Button btn1 = view.findViewById(R.id.btn_xixi);
        Button btn2 = view.findViewById(R.id.btn_hehe);
        //构造一个PopupWindow,参数依次是加载的View,宽,高
        final PopupWindow popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
        //添加点击PopupWindow外部PopupWindow自动消失
        popupWindow.setTouchable(true);
        popupWindow.setTouchInterceptor(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                return false;
            }
        });
        //设置PopupWindow的显示位置,这里的参数分别是,参照View,X轴的偏移量,Y轴的偏移量
        popupWindow.showAsDropDown(v, 50, 0);
        //设置PopupWindow的View的点击效果
        btn1.setOnClickListener(view12 -> Toast.makeText(MainActivity.this, "这是一个", Toast.LENGTH_SHORT).show());
        btn2.setOnClickListener(view1 -> Toast.makeText(MainActivity.this, "PopupWindow", Toast.LENGTH_SHORT).show());
    }
}

Esta parte es todo nuestro código.
A continuación, echemos un vistazo a lo que nuestra lógica es lograr:
primero, hacemos clic en un TextView para mostrar la ventana flotante PopupWindow.
Luego procedemos a través de initPopupWindow.
La v en el método es nuestra referencia de visualización, y la Vista en el método es el contenido que se muestra.
Las siguientes operaciones tienen comentarios más detallados en el código, puedes echar un vistazo a ti mismo.

Supongo que te gusta

Origin www.cnblogs.com/cao-1/p/12680483.html
Recomendado
Clasificación