2012년 4월 3일 화요일

[안드로이드] 테마 적용 + 배경이 투명한 액티비티 만들기

안드로이드 ICS가 출시 되면서 Holo.Light 테마가 생겨 났다.
그러한 테마를 적용 하면서 투명 액티비티를 띄우면 투명 액티비티만 테마가 후리다;;;

인터넷에서 찾아 보면 투명 액티비티를 만드는 테마는 다음과 같다.
<activity android:name="Test" android:theme="@android:style/Theme.Translucent">
물론 잘 동작 한다.
하지만 위에서 적었듯이 투명 액티비티에서 보여지는 위젯들은 테마가 적용이 않된 후린 기본 스타일로 보여지게 된다.

내 경우 다이얼로그를 띄워야 하는데 다른 다이얼로그는 테마가 적용 됬는데 투명액티비티에서 띄우는 녀석만 미운오리새끼 같다.

그럼 어떻게 해야 하는가!!

일단 테마를 만듭니다.
project/res/values/themes.xml 을 추가 하면 된다.
다음과 같이 themes.xml파일의 내용을 체운다.
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="Translucent_Dialog" parent="@android:style/Theme.Holo.Light.Dialog.NoActionBar">
        <item name="android:windowBackground">@android:color/transparent</item>        
    </style>

</resources>
이미 themes.xml 파일이 있다면 style 항목만 추가 하면 되겠죠?

style 에서 "parent" 부분이 상속받을 스타일이고 "item" 으로 배경을 투명하게 지정 한것이다.
사실 "@android:style/Theme.Holo.Light.Dialog.NoActionBar" 테마는 투명액티비티에 필요한 "NoActionBar"라던가 "Dialog"라던가 하는 스타일이 거의 지정 되어 있다.
현재 사용하는 테마 스타일이 다른것이라면 아래와 같은 속성을 추가해 타이틀과 액션바를 없애줘야 할 것 이다.
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
테마가 적용된 투명한 새로운 테마를 생성하였으면 이를 액티비티에 적용해 줘야 한다.
"AndroidManifest.xml" 파일을 열어 투명효과를 적용할 액티비티에 다음과 같이 테마를 지정해 준다.
<activity
    android:name=".TrasparentTestActivity"
    android:label="@string/app_name"
    android:theme="@style/Translucent_Dialog" >
이렇게 하면 투명한 액티비티 생성 완료~

댓글 없음:

댓글 쓰기