弹出窗口无法在Android中显示unity3D视图,但对话框确实如此



这是我项目的一些简短代码,我想在其中显示一个unity3D模型来做某件事。

public class MainActivity extends FragmentActivity{
protected UnityPlayer mUnityPlayer;
@Override
    protected void onCreate(Bundle savedInstanceState) {
    ...
    getWindow().setFormat(PixelFormat.RGBX_8888); 
    mUnityPlayer = new UnityPlayer(this);
    ...
    mTestImageButton = ***;
    mTestImageButton.setOnClickListener(mTestImageButtonClickListener);
}
    private ImageButton mTestImageButton;
    private View.OnClickListener mTestImageButtonClickListener = new 
    View.OnClickListener() {
        @Override
        public void onClick(View v) {
          showUnity3D_dialog(v);
          //showUnity3D_popupwindow(v);
        }
    };
    private void showUnity3D_dialog(View v) {
      Dialog dialog = new Dialog(v.getContext(), R.style.move_dialog);
      dialog.setContentView(mUnityPlayer);
      Window window = dialog.getWindow();
      window.setWindowAnimations(R.style.move_dialog);
      WindowManager.LayoutParams lp = window.getAttributes();
      window.setGravity(Gravity.RIGHT | Gravity.BOTTOM);
      lp.width = 1179; 
      lp.height = WindowManager.LayoutParams.MATCH_PARENT;
      window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
      window.setAttributes(lp);
      dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(DialogInterface dialog) {
                    }
                });
      dialog.setCanceledOnTouchOutside(true);
      dialog.show();
      mUnityPlayer.resume();
    }
    private void showUnity3D_popupwindow(View v) {
      PopupWindow pop = new PopupWindow(mUnityPlayer, 1000, 800);
      pop.setBackgroundDrawable(new BitmapDrawable()); 
      pop.setFocusable(true);
      pop.setOutsideTouchable(false);
      pop.setOnDismissListener(new PopupWindow.OnDismissListener() {
                    @Override
                    public void onDismiss() {
                    }
                });
      pop.showAtLocation(v, Gravity.BOTTOM, 0, 0);
      mUnityPlayer.resume();
    }
}

如上所述,我试图在弹出窗口中显示一个Unity3D模型,但是结果使我有些困惑,因为当我打电话给Showunity3d_popupupwindow(v)时,屏幕上没有什么都没有。

但是当我称为showunity3d_dialog(v)时,unity3d的模型显示。

我真的不明白是什么原因导致了这种情况,如何在Android的弹出窗口中显示我的模型?或者,这是不可能的任务吗?

我在Android 4.3&下面有我的项目。Unity 5.4.0。

非常感谢。

看起来您当前正在使用PopupWindow(View contentView, int width, int height) Overload功能。我已经看到了服用ViewContextActivity的功能不起作用的实例,您必须尝试其他过载。

您已经尝试了View,现在尝试Context超载:

PopupWindow(Context context)

然后以setWidthsetHeight功能设置宽度和高度。您可以使用UnityPlayer.currentActivity.getApplicationContext()获取当前上下文。

private void showUnity3D_popupwindow(View v) 
{
    Context mContext = UnityPlayer.currentActivity.getApplicationContext();
    PopupWindow pop = new PopupWindow(mContext);
    pop.setWidth(1000);
    pop.setHeight(800);
    pop.setBackgroundDrawable(new BitmapDrawable());
    pop.setFocusable(true);
    pop.setOutsideTouchable(false);
    pop.setOnDismissListener(new PopupWindow.OnDismissListener() {
    @Override
    public void onDismiss() {
    }
    });
    pop.showAtLocation(v, Gravity.BOTTOM, 0, 0);
    mUnityPlayer.resume();
}

最新更新