使用Dialog实现PopupWindow效果

效果图:
使用Dialog实现PopupWindow效果_第1张图片
Dialog的使用对Android开发者来说再经常不过了,这里分享一种使用Dialog实现PopupWindow效果的方法。

一、我们最好写一个工具类,用的时候直接调:

public class DialogUtils {

    public static void showDialog(Context context, final OnTextClickListener onTextClickListener) {
        Dialog dialog = new Dialog(context, R.style.DialogCommonStyle);
        Window window = dialog.getWindow();
        window.setGravity(Gravity.BOTTOM);// 位置
        window.setContentView(R.layout.layout_my_dialog);

        // 这里findViewBuId初始化控件,设置数据等等。
        // 。。。
        // 。。。
        TextView textView = window.findViewById(R.id.textView);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onTextClickListener.onTextClick("传递数据");
            }
        });

        dialog.setCanceledOnTouchOutside(true);// 触摸外面关闭dialog
        WindowManager.LayoutParams lp = window.getAttributes();
        lp.width = ScreenUtils.getScreenWidth(context);// dialog宽等于屏幕宽
        lp.height = ScreenUtils.getScreenHeight(context) * 1/2;// dialog高为屏幕高一半
        window.setAttributes(lp);
        window.setBackgroundDrawableResource(R.color.black);// dialog背景
        window.setWindowAnimations(R.style.AnimBottom);
        dialog.show();
    }
    
    public interface OnTextClickListener {
        void onTextClick(String str);
    }
    
}

我们在layout_my_dialog.xml中自己布局,我这里只放了一个TextView作为例子,当然你可以放复杂的布局,例如:RecyclerView、自定义控件等等。通过定义接口来回调数据,这样做就完美的和activity分离了,而且复用性很强。

style.xml



    

push_bottom_in.xml




    
    

push_bottom_out.xml





    
    

你可能感兴趣的:(Android)