How to implement a Floating Activity in an Android App. |
출처 : http://cases.azoft.com/android-tutorial-floating-activity/
만들고자 하는것.
- Floating Activity ( Transparent )
- 단말의 orientation 에 상관없이 화면의 약 2/3 를 차지하며, center 에 위치하는 것.
만드는 과정
- Activity size 와 location 계산하기.
- Activity 를 transparent 하게 만들기.
- Background 가 touch 를 받지 않도록 하기.
1. Activity size 계산하기
ActionBar 를 사용하는 경우에 ActionBar 는 항상 동일한 위치에 존재하기 때문에
Activity resize 를 시도하면 실패한다.
그래서 ActionBar 를 그리기 전에 무언가 조치를 취해야 한다.
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
final View view = getWindow().getDecorView();
final WindowManager.LayoutParams lp = (WindowManager.LayoutParams) view.getLayoutParams();
lp.gravity = Gravity.CENTER;
lp.width = mActivityWindowWidth;
lp.height = mActivityWindowHeight;
getWindowManager().updateViewLayout(view, lp);
}
위의 경우를 Compat ActionBar 와 함께 실행시키면..
ActionBarView can only be used with android:layout_width="match_parent" (or fill_parent).
와 같은 에러와 마딱뜨리게 된다.
이 경우 ActionBarSherlock 과 연계해서 ActionBarView 의 onMeasure 에서 위의 에러를 던지는 부분을 주석처리해줘야 한다.
만약 ActionBar 때문에 문제가 된다면, 기본 ActionBar 를 사용하지 않고 View 로 대신하는 것도 한 방법이겠다.
( 이 부분은 테스트가 되지 않았다. )
2. Transparency 더하기.
<item name="android:windowIsTranslucent">true</item>
위의 theme 을 더해준다.
문제는 4.3 버전의 Nexus 7 에서는 위와 같은 코드가 다 작동했지만,
4.4.2 버전의 Nexus 7 에서는 Transparent 를 통해 아래 깔린 Activity 가 보이지 않는다.
Kitkat optimization 부터는 새로운 optimization algorithm 이 추가되어 상관없지만,
그 이전버전에서는 Activity 는 WindowManager 의 변화와 상관없이 full-screen mode 로 작동하기 때문에
아래 깔린 Activity 를 잉여 Activity 로 여기고 그리지 않는 것이다.
따라서 translucent 하나의 속성으로 되는 것이 아니라, 아래의 theme 들도 추가되어야 한다.
<item name="android:windowIsFloating">true</item>
<item name="android:windowCloseOnTouchOutside">false</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:backgroundDimEnabled">true</item>
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] 일반적이지 않은 사진(이미지) 모양 만들기 #1 - 모서리가 둥근 사각형 (0) | 2015.04.11 |
---|---|
No repository found error in Installing ADT in eclipse (0) | 2015.03.28 |
android language code ( extension of values folders ) (0) | 2015.02.27 |
[android] 전 세계 안드로이드 앱 스토어 infographics (0) | 2015.02.26 |
[android] how to make dialog transparent. (0) | 2015.02.25 |
댓글