0

下面是从 Kotlin 代码函数转换的 java 函数。

@RequiresApi(api = Build.VERSION_CODES.M)
public void setWhiteNavigationBar(@NonNull Dialog dialog) {
    Window window = dialog.getWindow();
    if (window != null) {
        DisplayMetrics metrics = new DisplayMetrics();
        window.getWindowManager().getDefaultDisplay().getMetrics(metrics);

        GradientDrawable dimDrawable = new GradientDrawable();
        GradientDrawable navigationBarDrawable = new GradientDrawable();
        navigationBarDrawable.setShape(GradientDrawable.RECTANGLE);
        navigationBarDrawable.setColor(Color.WHITE);

        val layers = arrayOf<Drawable>(dimDrawable, navigationBarDrawable)

        LayerDrawable windowBackground = new LayerDrawable(layers);
        windowBackground.setLayerInsetTop(1, metrics.heightPixels);

        window.setBackgroundDrawable(windowBackground);
    }
}

我在该功能内的以下行遇到了麻烦。我很困惑如何在 Java 的 kotlin 行下面写:

val layers = arrayOf<Drawable>(dimDrawable, navigationBarDrawable)

那么,请任何人指导我们如何在java中编写这一行?

谢谢。

4

2 回答 2

1

为什么不直接将 kotlin 代码转换为 java,我们在 android studio 中有选项。

you can go to Tools > Kotlin > Show kotlin bytecode 

它将向您展示该类的完整 java 代码。

这是您的解决方案:

  public void setWhiteNavigationBar(@NonNull Dialog dialog) {
    Window window = dialog.getWindow();
    if (window != null) {
        DisplayMetrics metrics = new DisplayMetrics();
        window.getWindowManager().getDefaultDisplay().getMetrics(metrics);

        GradientDrawable dimDrawable = new GradientDrawable();
        GradientDrawable navigationBarDrawable = new GradientDrawable();
        navigationBarDrawable.setShape(GradientDrawable.RECTANGLE);
        navigationBarDrawable.setColor(Color.WHITE);

        GradientDrawable [] layers =new GradientDrawable[] 
   {dimDrawable,navigationBarDrawable};

        LayerDrawable windowBackground = new LayerDrawable(layers);
        windowBackground.setLayerInsetTop(1, metrics.heightPixels);

        window.setBackgroundDrawable(windowBackground);
    }
}
于 2020-01-25T05:35:19.073 回答
1

事实证明arrayOf(),kotlin 是一种创建特定类型数组的方法。在你的情况下Drawable。在 Java 中,您可以通过以下方式创建它:

Drawable[] drawables = new Drawable[] {dimDrawable, navigationBarDrawable}

您可以省略new Drawable[]并编写:

Drawable[] drawables = {dimDrawable, navigationBarDrawable}
于 2020-01-25T05:48:25.593 回答