Определите, находится ли устройство на горизонтальной поверхности [дубликат]

Обертка вокруг GNU ld, которая не поддерживает скрипты компоновщика

. Некоторые .so-файлы на самом деле являются GNU ld ссылками-компоновщиками , например. Файл libtbb.so является текстовым файлом ASCII с этим содержимым:

INPUT (libtbb.so.2)

Некоторые более сложные сборки могут не поддерживать это. Например, если вы включаете -v в параметры компилятора, вы можете видеть, что mainwin gcc wrapper mwdip отбрасывает файлы команд сценария компоновщика в подробном списке результатов библиотек для ссылки. Простая работа вместо файла командной строки ввода сценария компоновщика вместо копии (или символической ссылки), например

cp libtbb.so.2 libtbb.so

Или вы можете заменить аргумент -l полным путем .so, например вместо -ltbb сделать /home/foo/tbb-4.3/linux/lib/intel64/gcc4.4/libtbb.so.2

5
задан Quentin Golsteyn 19 August 2013 в 20:33
поделиться

4 ответа

См. официальную документацию http://developer.android.com/guide/topics/resources/runtime-changes.html

Изменение этого файла фактически создаст новый вид и onCreate будет вызываться снова.

Кроме того, вы можете проверить его с помощью

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}
23
ответ дан noone 24 August 2018 в 00:06
поделиться

Другой подход использует OrientationEventListener .

Его можно использовать следующим образом:

 OrientationEventListener mOrientationEventListener = new OrientationEventListener(
            this, SensorManager.SENSOR_DELAY_NORMAL) {

        @Override
        public void onOrientationChanged(int orientation) {
            //checking if device was rotated
            if (orientationPortrait != isPortrait(orientation)) {
                orientationPortrait = !orientationPortrait;
                Log.d(TAG, "Device was rotated!");
            }
        }
    };

Проверить ориентацию:

private boolean isPortrait(int orientation) {
    return (orientation >= (360 - 90) && orientation <= 360) || (orientation >= 0 && orientation <= 90);
}

И не забудьте включить и отключить прослушиватель:

if (mOrientationEventListener != null) {
        mOrientationEventListener.enable();
    }

if (mOrientationEventListener != null) {
        mOrientationEventListener.disable();
    }
3
ответ дан Bogdan Ustyak 24 August 2018 в 00:06
поделиться

Вы можете проверить onSavedInstanceState по вашему методу onCreate, если это не значение null, это изменение конфигурации.

3
ответ дан Eugene 24 August 2018 в 00:06
поделиться

Обычно изменение ориентации вызывает OnCreate(), если вы не сделали что-то, чтобы сделать это иначе.

Вы можете поместить туда логику.

2
ответ дан sealz 24 August 2018 в 00:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: