Отвечая на мой собственный вопрос
Метод resize для VirtualDisplay
работает довольно хорошо, хотя это было с моей стороны недопонимание того, как добиться очень точных c поведение, когда только базовый макет изменяет свой размер, хотя элементы сохраняют свои свойства в меньшем окне
Так что, если вы хотите получить какое-то "скалярное" изменение размера (как будто все становится больше или меньше), вы должны назвать resize
Но, когда ваш проект требует какого-то изменения размера и увеличения элементов управления
, хотя экран становится меньше Вы должны проверить расширение вашего конкретного Presentation
класса, связанного с VirtualDisplay
, и просто обновить свой макет вручную, не имея VirtualDisplay
resized
public void resizeView(final int newWidth, final int newHeight) {
uiHandler.post(new Runnable() {
@Override
public void run() {
try {
Constructor<? extends ViewGroup.LayoutParams> ctor =
mainView.getLayoutParams().getClass().getDeclaredConstructor(int.class, int.class);
mainView.setLayoutParams(ctor.newInstance(newWidth, newHeight));
mainView.requestLayout();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
, где uiHandler
может быть просто получено даже на фоне
Handler uiHandler = new Handler(Looper.getMainLooper());
Надеюсь, это кому-нибудь пригодится!