除固定设备方向外,还可以旋转Dialog和AlertDialog

时间:2016-11-25 12:11:14

标签: android rotation orientation

我尝试使用搜索,但没有找到解决此问题的方法。 我有一个固定横向的相机应用程序。 orientationEventListener正确旋转我的所有按钮。但是,有些按钮会显示对话框或警告对话框,并且这些对话框不会旋转。以下是MainActivity中相关的缩写代码

button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final Dialog dialog = new Dialog(CameraActivity.this);
            dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
            dialog.setContentView(R.layout.layout_dialog_mode);
            // set up texts in layout_dialog_mode

private void createMenu() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    final String[] modeS = {getString(R.string.mode_1), getString(R.string.mode_2), getString(R.string.mode_3), getString(R.string.mode_4), getString(R.string.mode_5)};
    builder.setTitle(getString(R.string.mode_title));
    builder.setSingleChoiceItems(modeS, mode, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int item) {
             // set things as chosen by user
            }
            dialog.dismiss();  /* close menu after selection    */
        }
    });

    builder.show();
}

layout_dialog_mode是一个包含TextViews和ImageViews的linearLayout。

按钮的旋转方式如下:

private void initialiseOEListener() {

    oEListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL) {
        @Override
        public void onOrientationChanged(int orientation) {
            try {
                if (orientation == ORIENTATION_UNKNOWN) return;

                orientation = (orientation + 45) / 90 * 90;

                switch (orientation) {
                   // set params and orientation
                }

                ImageButton ibu = (ImageButton) findViewById(R.id.button0);
                ibu.setRotation(orientation);
                ibu = (ImageButton) findViewById(R.id.button1);
                ibu.setRotation(orientation);
                // and so on

            } catch (Exception e) {


            }
        }
    };

现在我的问题:是否可以像按钮一样旋转对话框?目前,它们以横向显示,因为我将此活动的设备方向设置为横向。例如,当用户将手机旋转为纵向并单击按钮1时,对话框将显示错误,因为它未旋转。

非常感谢

1 个答案:

答案 0 :(得分:0)

好的,所以我通过为每个对话框创建单独的Activity来解决问题。现在的问题是,当旋转新的前景对话框Activity时,后台Activity也会旋转!当我旋转前景活动时,我可以以某种方式设置背景活动方向吗?