Подтвердить что ты не робот

Как остановить изменение ориентации, когда индикатор прогресса вращается в андроиде

У меня есть экран регистрации, в котором пользователь вводит все регистрационные данные, и когда пользователь нажимает кнопку "Регистрация", я показываю индикатор выполнения (индикатор выполнения начинает вращаться), а затем выводит пользователя на главный экран. Если пользователь поворачивает телефон, когда индикатор выполнения вращается, индикатор выполнения отклоняется. Я хочу, чтобы ориентация не изменялась от пористого до пейзажа, и наоборот, когда индикатор выполнения видится (что означает, что он вращается). Как остановить изменение ориентации когда индикатор прогресса вращается? Любая помощь будет оценена.

4b9b3361

Ответ 1

Это происходит потому, что, когда ориентация экрана вращается, активность снова запускается. В этом случае вы можете добавить атрибут configChanges в свой тег в файле AndroidManifest, чтобы остановить повторное создание Activity.

<activity android:name=".Activity_name"
          android:configChanges="orientation|keyboardHidden">

В результате эта ориентация может измениться, будет работать индикатор выполнения, и он не остановится, хотя меняется ориентация.

UPDATE

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
            setContentView(R.layout.login_landscape);
        }
        else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
            setContentView(R.layout.login);         
        }
    }

Ответ 2

Как описано здесь, вызывая

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

а затем

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

действительно работает как шарм... на реальных устройствах!

Не думайте, что это сломано при тестировании на эмуляторе, клавиша ctrl + F11 ВСЕГДА меняет ориентацию экрана, не двигая имитирующие датчики.

Некоторые другие ссылки:

И вот Activityinfo

***************** Отредактировано ***************************** ***

И я думаю, что вы не можете обрабатывать progressbar при вращении экрана. Я прав?

Поэтому вам не нужно останавливать вращение для этого решения. Вы должны обработать индикатор выполнения. Вот несколько учебных пособий, которые полезны для этой цели.

************** Отредактировано 2 *****************

И некоторое время, когда вы теряете данные при изменении ориентации. Таким образом, вы можете попробовать эти учебные пособия

Ответ 3

использовать метод setRequestOrientation в классе Activity.

Наследовать класс ProgressDialog и методы переопределения.
Пример кода ниже.

    class myDialog extends ProgressDialog
{
    Activity mActivity;
    public myDialog(Activity context) {
        super(context);
        this.mActivity = context;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
    }

    @Override
    public void dismiss() {            
        super.dismiss();
        mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
    }
}