목 차
1. 스타일? 테마?
2. 스타일 (Styles)
A. 생성하기
B. 적용하기
3. 테마 (Themes)
A. 생성하기
B. 적용하기
4. 참조
1. 스타일? 테마?
스타일이나 테마는 폰트 종류&크기&색, 배경색 같은 것들을 미리 정의해 놓고 여러 UI 요소들에서 공유해서 사용하는 기법이다. 이 둘의 차이점은 다음과 같다.
스타일 : 하나의 엘리멘트 단위로 적용할 수 있는 하나 또는 그 이상의 포맷팅 애트리뷰트의 집합
테마 : 액티비티 단위로 적용할 수 있는 하나 또는 그 이상의 포맷팅 애트리뷰트의 집합
자세한 내용은 다음 장에서 설명하기로 하고 그럼 이런 테마를 쓰게 되면 어떤 장점이 있을까?
어플레케이션 용량 저하 : 이미지가 아닌 스타일 & 테마로 App을 만들게 되면 2MB 정도로 왠만한 앱을 만들 수 있다고 한다.
스타일의 재사용 : 잘 정의된 스타일&테마의 경우 재사용성이 높아서 앱의 Look & Feel 만 유사하다면 그대로 사용이 가능하다.
수정의 용의성 : 한 곳에서 수정을 하면 전체 App의 모습이 변하므로 수정이 쉽다.
2. 스타일 (Styles)
앞에서 엘리먼트 단위로 지정하는 것이 Style이라고 이야기 했다. 즉, View 당 지정할 수 있다고 생각하면 된다.
A. 생성하기
res/value/styles.xml 파일에 설정된다.
<?xml version=”1.0” encoding=”utf-8”?> <resources> <style name="SpecialText" parent="@style/Text"> <item name="android:textSize">18sp</item> <item name="android:textColor">#008</item> </style> </resources> |
parent : 전체 스타일을 지정하지 않고 기존의 스타일을 약간만 바꿀 경우에 부모 Style을 지정하는 필드
item에는 문자열, 16진수 색상값, 다른 리소스 참조 등이 가능하다.
B. 적용하기
<EditText id="@+id/text1" style="@style/SpecialText" android:layout_width=”fill_parent” android:layout_height=”wrap_content” android:text=”Hello, World!” /> |
style Attribute를 통해서 스타일을 지정할 수 있다.
3. 테마 (Themes)
A. 생성하기
res/value/themes.xml 파일에 저장한다. (디폴트로 존재하는 파일이 아니다!)
<?xml version=”1.0” encoding=”utf-8”?> <resources> <style name="CustomTheme"> <item name="android:windowNoTitle">true</item> <item name="windowFrame">@drawable/screen_frame</item> <item name="panelForegroundColor">#FF000000</item> <item name="panelTextColor">?panelForegroundColor</item> <item name="panelTextSize">14</item> <item name="menuItemTextColor">?panelTextColor</item> <item name="menuItemTextSize">?panelTextSize</item> </style> </resources> |
B. 적용하기
App 전체에 적용을 하거나 Activity 단위로 적용이 가능하기 때문에 결국 AndroidMenifest.xml 파일을 수정해야 한다. 아래는 App 전체에 지정하는 방법이다.
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/CustomTheme" > |
아래는 하나의 Activity에 적용하는 방법이다.
<activity android:name=".OptionMenuMainActivity" android:label="kkangeva.tistory.com" android:theme="@style/CustomTheme"> |
4. 참조
'소프트웨어 > 안드로이드앱' 카테고리의 다른 글
minSdkVersion와 targetSdkVersion 정확하게 사용하기 (1) | 2015.07.26 |
---|---|
안드로이드 머티리얼 디자인에 대해서 (Material Design) (0) | 2015.07.14 |
[안드로이드 기초#7-2] UI 클래스들 (0) | 2015.07.06 |
[안드로이드 기초#7-1] UI 클래스들 (0) | 2015.07.05 |
[안드로이드 기초#6] 프래그먼트 (Fragment) (1) | 2015.07.04 |