마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

바탕화면에만 떠있는 이미지를 만드려면..(항상 X)

0 추천

항상 화면에 떠 있는 이미지 만들기를 참고해서

서비스와 윈도우매니저로 만드는건 성공 했습니다.

레이아웃 파람 값은 아래처럼 넣었고요.

mImageParams = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSLUCENT
                );

터치 이벤트도 추가해서 이미지 이동, 클릭 시 앱 실행도 성공했습니다.

 

문제는 이렇게 만든 이미지는 앱을 실행해도 화면 위에 떠있고, 위치값을 - 로 넣어도 화면 안에서 나가지 않는데요.

 

제가 원하는 기능은

앱이 실행되면 이미지가 사라지고,

앱을 종료하거나, 바탕화면으로 나오면 이미지가 나오는겁니다.

 

둘중 한가지 방법으로 구현하면 될것 같은데요.

1. 실행중인 앱 > 이미지 > 바탕화면으로 보여져서

앱이 샐행되면 이미지가 앱에 가려지고, 바탕화면으로 나오면 앱이 보이는거고요.

 

2. 앱이 실행되는것과 바탱화면이 나오는걸 감지해서

앱이 실행되면 이미지를 안보이는쪽으로 이동시키거나, 이미지를 제거하고,

바탕화면으로 나오면 이미지를 화면 안에 이동시키거나 생성하는식으로 만들면 될것 같은데요.

 

1번은 파람 값을 바꾸면 어찌 되지 않을까 싶어서 TYPE_PHONE 부분을 다른 값들로 바꿔봤는데 그냥 오류나고요.

2번은 앱의 실행과 종료를 어떻게 감지해야 될지 모르겠네요..

이미지를 화면 밖으로 이동 시키는것도 어떻게 해야될지 모르겠고요.

 

앱은 제가 만든 이미지를 띄우기 위해서 실행하는 앱 외에 제가 만들지 않은 다른 앱들도 포함됩니다.

사시 (340 포인트) 님이 2016년 9월 29일 질문

1개의 답변

+1 추천
 
채택된 답변
윈도우 매니저를 통해서 addView를 하셨을텐데 반대로 removeView 하시면 add했던 View가 사라집니다.

앱을 실행하면 윈도우 매니저에 add된 View를 remove 해주시면 되고 반대로 앱이 종료되면 finish 또는 pause 되면 그때 다시 addView 시켜주시면 될겁니다.
Development Guy (70,570 포인트) 님이 2016년 9월 30일 답변
사시님이 2016년 9월 30일 채택됨
감사합니다.

addView 와 removeView 를 하는 조건은 어떻게 설정하는게 좋을까요?
앱이 실행 되거나 런처가 활성화 되는걸 콜백 등으로 받아 올 수 있으면 좋겠는데..
서비스에서 앱실행을 감지하는게 가능할까요?
윈도우 매니저를 서비스에서 사용 하시는군요
서비스에 BroadcastReceiver를 달아놓고 Activity onResume과 onPause에서 구분해서 액션을 날려주시면 될거 같습니다.
서비스에 브로드캐스트 달아서 처리하는걸 응용하면 어떻게든 될것 같네요.
Activity 에서 액션을 날려줄수 없는게 모든 앱이 실행 될때 숨겨지는걸 만들거라서요..
방향은 알았으니까 나머지는 검색하고 찾아봐야죠 ㅎㅎ
도움 주셔서 감사합니다.
...