popwindow é a solução mais eficaz para abrir a sombra de fundo da tela e cancelar a sombra

O projeto requer que a janela pop-up desfoque o fundo. Após definir o plano de fundo, verifica-se que clicar na área externa da janela pop-up não iluminará o fundo. O código a seguir resolve todos os problemas.

Clique na janela pop para aparecer no onclick

case 1 :
     //弹出popWiondw
     View.OnClickListener itemsOnClicks = new View.OnClickListener() {
         @Override
 public void onClick (View v) {
             menuWindow .dismiss() ;
fundoAlfa( 1f ) ;
} 
    } ;
fundoAlfa( 0,5f ) ;
menuWindow = nova categoriaPopWiondow(getContext() , itemsOnClicks) ;
menuWindow .setBackgroundDrawable( new BitmapDrawable()) ;
                                            //位置
// menuWindow.showAtLocation(getActivity().findViewById(R.id.tv_category), Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0);
menuWindow .showAtLocation(getActivity().findViewById(R.id. tv_category ) , Gravity. CENTER ,
 ViewGroup.LayoutParams. FILL_PARENT ,
 ViewGroup.LayoutParams. WRAP_CONTENT ) ;
menuWindow .setOnDismissListener( new PopupWindow.OnDismissListener() {
         @Override
 public void onDismiss () {
             menuWindow .dismiss() ;
 backgroundAlpha(                                                      1f ) ;
        } 
    }) ;
    quebrar;
/**
 * Define a transparência do plano de fundo da tela adicionada
 * @param bgAlpha
 */
 public void backgroundAlpha ( float bgAlpha)
{
    WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes() ;
 lp.alpha= bgAlpha ; / /0.0 -1.0
 getActivity().getWindow().setAttributes(lp) ;
 getActivity( ) .getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) ;
 }              

Acho que você gosta

Origin blog.csdn.net/qq_37870139/article/details/71514515
Recomendado
Clasificación