안규 공부방

Android > styles & Themes

등록일 : 2017-07-05 18:13 조회수 : 93,781

스타일이나 테마는 폰트 종류&크기&색, 배경색 같은 것들을 미리 정의해 놓고 여러 UI 요소들에서 공유해서 사용하는 기법이다.

이 둘의 차이점은 다음과 같다.

- 스타일 : 하나의 엘리멘트 단위로 적용할 수 있는 하나 또는 그 이상의 포맷팅 애트리뷰트의 집합

- 테마 : 액티비티 단위로 적용할 수 있는 하나 또는 그 이상의 포맷팅 애트리뷰트의 집합

자세한 내용은 다음 장에서 설명하기로 하고 그럼 이런 테마를 쓰게 되면 어떤 장점이 있을까?

1.어플레케이션 용량 저하 : 이미지가 아닌 스타일 & 테마로 App을 만들게 되면 2MB 정도로 왠만한 앱을 만들 수 있다고 한다.

2.스타일의 재사용 : 잘 정의된 스타일&테마의 경우 재사용성이 높아서 앱의 Look & Feel 만 유사하다면 그대로 사용이 가능하다.

3.수정의 용의성 : 한 곳에서 수정을 하면 전체 App의 모습이 변하므로 수정이 쉽다.

1. 스타일 (Styles)

앞에서 엘리먼트 단위로 지정하는 것이 Style이라고 이야기 했다. 즉, View 당 지정할 수 있다고 생각하면 된다.

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진수 색상값, 다른 리소스 참조 등이 가능하다.


적용하기

 
	<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">

 
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.