Мне нужно знать размеры приложения в пикселях для целей захвата экрана. Ранее я использовал такие методы, как getRealmetrics, чтобы получить разрешение, и это работает безупречно при нормальных обстоятельствах, но недавно обнаружил (по -видимому, на версиях Android 30+), что если устройство повернуто, значения ширины и высоты, возвращаемые APIS /strong> обновление, чтобы отразить повернутое представление, но в других случаях нет. ? /code> правильно. < /p>
Например, если мое приложение имеет высоту 200 пикселей и шириной 100px в портретном режиме, вращение в ландшафт иногда обновляется до 100px высокой, шириной 200 пикселей, но просто только Как часто он будет продолжать возвращать высоту 200 пикселей, шириной 100px на неопределенный срок. По моему опыту до сих пор нет четкой причины для того, почему он иногда правильно обновляется, но в других случаях не так. Я пытался использовать getRealmetrics, а также более поздние GetCurrentWindowMetrics, где это необходимо и даже очень устарело от методов, таких как GetWidth для тестирования, но каждый возвращает одно и то же правильное или неправильное значение, синхронизируя друг с другом. (Другими словами, после каждого вращения все они либо правильны, либо неправильны, поэтому они, по -видимому, получают данные с одной и той же основы «Истина»). Учитывая, что это кажется более распространенным, если не исключительно для новых устройств, я действительно надеялся, что использование более новой GetCurrentWindowMetrics будет работать, но не удачи. Strong> пытался поиграть с Display.getRotation () и заметил, что он всегда возвращался 0, независимо от того, что я делал, так что что -то фундаментальное не установлено правильно. Это не является внешним условием гонки, так как после того, как вращение происходит правильные или неправильные значения, остаются возвращаемыми API до другого вращения, после чего примерно 50/50 о том, будет ли на этом вращении значения будут правильно обновлены. . < /p>
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
import android.view.WindowMetrics;
import androidx.annotation.NonNull;
public class DisplayUtil {
private static WindowManager windowManagerInstance;
public static void getScreenDimensions() {
Display getOrient = windowManagerInstance.getDefaultDisplay();
if (VERSION.SDK_INT >= VERSION_CODES.R) {
WindowMetrics metrics = windowManagerInstance.getCurrentWindowMetrics();
} else {
DisplayMetrics metrics = new DisplayMetrics();
windowManagerInstance.getDefaultDisplay().getRealMetrics(metrics);
}
}
public static synchronized void setWindowManager(WindowManager windowManager) {
windowManagerInstance = windowManager;
}
}
< /code>
кто -нибудь еще испытывал это поведение раньше? Это ожидаемое поведение или известная ошибка как -то? Несоответствие действительно отбрасывает меня. Есть ли что -то в моем приложении, что виновато здесь?
Подробнее здесь: https://stackoverflow.com/questions/794 ... ce-rotatio
API Apis Android часто возвращают неправильные разрешения экрана после вращения устройства ⇐ Android
Форум для тех, кто программирует под Android
1738335064
Anonymous
Мне нужно знать размеры приложения в пикселях для целей захвата экрана. Ранее я использовал такие методы, как getRealmetrics, чтобы получить разрешение, и это работает безупречно при нормальных обстоятельствах, но недавно обнаружил (по -видимому, на версиях Android 30+), что если устройство повернуто, значения ширины и высоты, возвращаемые APIS /strong> обновление, чтобы отразить повернутое представление, но в других случаях нет. ? /code> правильно. < /p>
Например, если мое приложение имеет высоту 200 пикселей и шириной 100px в портретном режиме, вращение в ландшафт иногда обновляется до 100px высокой, шириной 200 пикселей, но просто только Как часто он будет продолжать возвращать высоту 200 пикселей, шириной 100px на неопределенный срок. По моему опыту до сих пор нет четкой причины для того, почему он иногда правильно обновляется, но в других случаях не так. Я пытался использовать getRealmetrics, а также более поздние GetCurrentWindowMetrics, где это необходимо и даже очень устарело от методов, таких как GetWidth для тестирования, но каждый возвращает одно и то же правильное или неправильное значение, синхронизируя друг с другом. (Другими словами, после каждого вращения все они либо правильны, либо неправильны, поэтому они, по -видимому, получают данные с одной и той же основы «Истина»). Учитывая, что это кажется более распространенным, если не исключительно для новых устройств, я действительно надеялся, что использование более новой GetCurrentWindowMetrics будет работать, но не удачи. Strong> пытался поиграть с Display.getRotation () и заметил, что он всегда возвращался 0, независимо от того, что я делал, так что что -то фундаментальное не установлено правильно. Это не является внешним условием гонки, так как после того, как вращение происходит правильные или неправильные значения, остаются возвращаемыми API до другого вращения, после чего примерно 50/50 о том, будет ли на этом вращении значения будут правильно обновлены. . < /p>
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
import android.view.WindowMetrics;
import androidx.annotation.NonNull;
public class DisplayUtil {
private static WindowManager windowManagerInstance;
public static void getScreenDimensions() {
Display getOrient = windowManagerInstance.getDefaultDisplay();
if (VERSION.SDK_INT >= VERSION_CODES.R) {
WindowMetrics metrics = windowManagerInstance.getCurrentWindowMetrics();
} else {
DisplayMetrics metrics = new DisplayMetrics();
windowManagerInstance.getDefaultDisplay().getRealMetrics(metrics);
}
}
public static synchronized void setWindowManager(WindowManager windowManager) {
windowManagerInstance = windowManager;
}
}
< /code>
кто -нибудь еще испытывал это поведение раньше? Это ожидаемое поведение или известная ошибка как -то? Несоответствие действительно отбрасывает меня. Есть ли что -то в моем приложении, что виновато здесь?
Подробнее здесь: [url]https://stackoverflow.com/questions/79401088/android-apis-frequently-return-incorrect-screen-resolutions-after-device-rotatio[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия