안드로이드 Always on Top View 만들기 (항상 위에오는 뷰 만들기)
(이런 식)
모든 화면을 무시하고(심지어 잠금화면도)
항상 위에 오는 뷰를 만드는 법을 적는다.
안드로이드 3.0 이상의 환경에서 작동한다
진저브레드에선 작동을 보장하지 않는다.
젤리빈은 작동은 되나
이 소스는 아이스크림 샌드위치 API를 사용했다.
젤리빈 API를 사용하면 소스를 조금 다르게 작성해야 한다.
언제나 최상단에 오는 뷰를 만드는 단계는
1. 서비스 만들기
2. 서비스에 뷰 객체를 만들기
3. 서비스에 레이아웃 파라미터를 만들기
4. 윈도우 매니저에 넣어서 등록하기
5. 사용을 안할 땐 등록한 뷰를 제거하기
가 되겠다.
매니페스트에 android.permission.SYSTEM_ALERT_WINDOW 퍼미션을 추가해야한다.
본문 시작
1. 서비스 만들기
서비스 하나와 액티비티 하나
Service를 상속받은 클래스를 하나 추가한다.
2. 서비스에 뷰 객체를 만들기
서비스의 onCreate() 부분에 작성한다
필자는 이미지 뷰를 사용했다.
//이미지 뷰 객체를 만들고
//그림을 정해주고
//투명도를 설정(0~255사이의 값)
//크기에 따라서 알아서 이미지 크기를 맞추도록
3. 서비스에 레이아웃 파라미터를 만들기
레이아웃 xml파일을 손으로 만든다고 생각하면 된다.
(필자는 어느 환경에서도 비율로 작동하게 스마트폰의 기본 해상도를 감지하게 한 후 mPoint에 저장했다.)
(아래의 풀 소스를 보면 해상도 값을 감지하고 mPoint에 저장한 부분이 서비스의 onCreate()부분에 있다.)
//파라미터 객체를 생성하고
//x크기를 정하고
//y크기를 정하고
//TYPE_SYSTEM_OVERLAY로 최상단에 오게 레이아웃을 설정하고
//터치 이벤트가 제대로 작동되게 설정하고
//알파값을 가지는 픽셀 포멧으로 설정한다
//그라비티를 사용해 왼쪽 상단에 위치하게 하고
//수직 여백을 10%만큼 준다
//수평 여백을 10%만큼 준다
4. 윈도우 매니저에 넣어서 등록하기
addView함수에 (뷰 객체, 레이아웃 파라미터) 를 넣어 등록하면 작동이 시작된다.
5. 사용을 안할 땐 등록한 뷰를 제거하기
서비스의 onDestroy()에서 제거하는 것을 잊지 말것.
'Android > Application' 카테고리의 다른 글
안드로이드 Sensor (안드로이드 센서 사용하기) (2) | 2013.02.15 |
---|---|
SensorEvent의 values[]의 값들 (0) | 2013.02.15 |
안드로이드 버튼 눌렸을 때 변화주기 예제 (0) | 2013.02.04 |
안드로이드 버튼 눌렸을 때 이미지 변화주기 (0) | 2013.02.04 |
안드로이드 Preference 예제 (0) | 2013.02.02 |