2011-02-03 2 views
4

Я хочу наложить вид на все мое приложение, включая все действия. Подумайте об этом как HUD (Head Up Display) над моим приложением. Приложение имеет несколько действий, в том числе активность вкладок, и HUD никак не взаимодействует с пользователем, он просто отображает информацию, позволяя пользователю взаимодействовать с приложением, как обычно. Я хочу этот HUD для отладки, поэтому я (и другие) могу отслеживать активность приложения и состояние, когда телефон не подключен к отладочной машине (полевое тестирование).Обложка приложения для Android по всей стране (HUD)

Как мне добавить такое представление?

Я попытался с помощью WindowManager.addView() как так:

 WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
      LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 
      WindowManager.LayoutParams.TYPE_APPLICATION, 
      WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE 
        | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
      PixelFormat.TRANSLUCENT); 
     windowManager.addView(hudView, lp); 

Но HUD, кажется, не сохраняются на переднем плане, когда я запускаю новые виды деятельности, он просто исчезает.

ответ

1

Я знаю, что это старый вопрос, но я думал, что все равно отвечу, так как это помогло мне. Я пытался запустить HUD в игре openGL, и это отлично работает для этого.

Поскольку у вас уже есть отображение HUD с помощью диспетчера окон, все, что вам нужно сделать, чтобы сохранить постоянство между действиями, - это вызвать windowManager.addView(hudView, lp); в методе onResume() каждого действия. Не уверен, что подразумевается при использовании памяти (т. Е. Отображение удаляется, когда оконный менеджер удаляет его с экрана при переключении активности), но по крайней мере он будет поддерживать HUD во всем приложении.

+0

Я не видел вашего ответа, и с тех пор я перестал работать на Android. Это не идеально для моих целей, так как теперь каждый вид деятельности должен быть осведомлен о HUD. Тем не менее, это похоже на разумный ответ, который, вероятно, будет работать. Я согласен! – acoward

0

Я читал, что вы перестали работать с Android, но, возможно, для дальнейших читателей:

Вы пропустили флаг WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,. Лучше всего реализовать в качестве завышенной услуги. Не называть его в каждой операции в onResume.

Смежные вопросы