#android #android-animation #android-windowmanager
#Android #android-анимация #android-windowmanager
Вопрос:
У меня возникла следующая проблема — у меня есть представление, которое я помещаю внутрь WindowManager, и я бы хотел, чтобы оно отображало анимацию перевода с экрана и к середине экрана.
К сожалению, независимо от того, что я делаю, представление привязывается к оси.
Это код:
view = (FrameLayout) LayoutInflater.from(this).inflate(
R.layout.poke, null);
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
300, 400, WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.verticalMargin = -10f;
params.gravity = Gravity.TOP;
windowManager.addView(view, params);
Как вы можете видеть, я пытался играть с запасом (поставил минус, чтобы он вырос).
Кстати, я знаю, что некрасиво вводить числа, а не dp dimen.xml . Это просто тестовый код..
Ответ №1:
Я только что столкнулся с той же проблемой, и фактический флаг:
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
Итак, ваш код должен выглядеть так:
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
300, 400, WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
PixelFormat.TRANSLUCENT);
Ответ №2:
В указываемых вами флагах добавьте еще один флаг FLAG_LAYOUT_NO_LIMITS
.
Это должно позволить вам размещать свои представления даже за пределами экрана.
Ваш код должен выглядеть следующим образом:
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
300, 400, WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
PixelFormat.TRANSLUCENT);
Комментарии:
1. нет ничего похожего на FLAG_LAYOUT_NO_BOUNDS