如何在对话框片段中从LayoutInflater切换到AsyncLayoutInflater?

时间:2019-07-04 08:17:00

标签: android layout-inflater

我在项目中使用对话框片段,但是客户端希望在该片段处于活动状态时使对话框片段后面的背景模糊。我使用了BlurKit库,该库添加了iOS的半透明效果,但是尽管它一点也不落后于我的应用程序,但是Dialog Fragment布局膨胀现在要慢一点。基本上,快速模糊设备发生在Main Activity上,然后立即显示Dialog Fragment,但延迟约0.8秒。如果禁用该模糊效果,片段将立即显示。

我在网上搜索了一个解决方案,并且发现了相对较快的AsyncLayoutInflater。如何为该异步充气机转换我的代码,以查看这是否解决了启用模糊后的短暂延迟。

public class ExpenseDialogFragment extends DialogFragment{

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.dialog_fragment_expense, container, false);
        getViewReferences(view);
        setCancelable(false);
        return view;
    }

    @Override
    public void onResume() {
        super.onResume();
        WindowManager.LayoutParams layoutParams = Objects.requireNonNull(
                Objects.requireNonNull(getDialog()).getWindow()).getAttributes();
        layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
        layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
        Objects.requireNonNull(getDialog().getWindow()).setAttributes(layoutParams);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        //stuff here
    }

0 个答案:

没有答案