1. 리소스 외부화
ⓐ 문자열(string.xml)
- <b><i><u> HTML 태그를 이용하여 굵은 글꼴, 기울임 글꼴 밑줄을 적용할 수 있다
<string name="app_name"><b>할 일 목록</b></string>
- String.format은 위의 텍스트 스타일링을 지원하지 않는다. 포맷 문자열에 스타일링을 적용하려면, 리소스를 생성할때 아래와
같이 HTML 태그를 이스케이프 해야한다
<string name="app_name"><b>할 일 목록</b>. %1$s</string>
String rString = getString(R.string.stop_message);
String fString = String.format(rString, "Collaborate and listen.");
CharSequence styledString = Html.fromHtml(fString);
ⓑ 색상
<color> 태그
<color name="opaque_blue">#00F</color>
<color name="transparent_green">#7700FF00</color>
ⓒ치수
dp(160-dpi 화면에 상대적인 밀도 독립 픽셀)
sp(글꼴)
<dimen name="standard_border">5dp</dimen>
<dimen name="large_font">16sp</dimen>
ⓓ스타일/테마
<resources>
<style name="BaseText">
ⓐ 문자열(string.xml)
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">할 일 목록</string> <string name="add_new">추가</string> <string name="remove">삭제</string> <string name="cancel">취소</string> </resources> |
- <b><i><u> HTML 태그를 이용하여 굵은 글꼴, 기울임 글꼴 밑줄을 적용할 수 있다
<string name="app_name"><b>할 일 목록</b></string>
- String.format은 위의 텍스트 스타일링을 지원하지 않는다. 포맷 문자열에 스타일링을 적용하려면, 리소스를 생성할때 아래와
같이 HTML 태그를 이스케이프 해야한다
<string name="app_name"><b>할 일 목록</b>. %1$s</string>
String rString = getString(R.string.stop_message);
String fString = String.format(rString, "Collaborate and listen.");
CharSequence styledString = Html.fromHtml(fString);
ⓑ 색상
<color> 태그
<color name="opaque_blue">#00F</color>
<color name="transparent_green">#7700FF00</color>
ⓒ치수
dp(160-dpi 화면에 상대적인 밀도 독립 픽셀)
sp(글꼴)
<dimen name="standard_border">5dp</dimen>
<dimen name="large_font">16sp</dimen>
ⓓ스타일/테마
<resources>
<style name="BaseText">
<item name="andorid:textSize">14sp</item>
<item name="android:textColor">#111</item>
<item name="android:textColor">#111</item>
</stryle>
<style name="SmallText" parent="BaseText">
<style name="SmallText" parent="BaseText">
<tem name="android:textSize">8sp</item>
</stryle>
<style name="ToDoTheme" parent="@android:style/Theme.Black">
<item name="android:textSize">12sp</item>
</style>
</resources>
[추가 내용은 책 3장 참고]
2. 리소스 사용하기
ⓐ R.에 있는 변수값들은 리소스 테이블 안에서 자신에 대응하는 리소스의 위치에 대한 참조일뿐 인스턴스가 아니다
setContentView(R.layout.main);
Toast.makeText(this, R.string.app_err,Toast.L.....).show()
ⓑ 리소스 인스턴스 접근하기
- 리소스 테이블은 Resources클래스의 인스턴스로 표현됨
- 리소스 테이블에 대해 조회를 수행기 때문에 static이 될수없고 리소스 인스턴스에 접근하려면 아래와같다
Resources mr = getResources();
CharSequence st = mr.getText(R.string.stop_message);
Drawable icon = mr.getDrawable(R.drawable.app_icon);
int b = mr.getColor(R.color.blue);
float borderWidth = mr.getDimension(R.dimen.standard_border);
Animation tranOut = AnimationUtils.loadAnimation(this, R.anim.spin)
String[] sr = mr.getStringArray(R.array.string_array);
int[] ia = mr.getIntArray(R.array.integer_array);
프레임별 애니메이션이 적용된 리소스
AnimationDrawable rocket = (AnimationDrawable)mr.getDrawable(R.drawable.frame_by_frame);
3. 리소스에서 다른 리소스 참조하기
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="@dimen/standard_border">
<EditText
android:id="@+id/myEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/stop_message"
android:textColor="@color/opaque_blue"
/>
</LinearLayout>
4. 시스템 리소스 사용하기
CharSequence httpErr = getString(android.R.string.httpErrorBadUrl);
<EditText
android:id="@+id/myEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@android:string/httpErrorBadUrl"
/>
5. 현재 테마에서 스타일 참조하기
- 현재 테마의 텍스트 색상을 이용
<EditText
android:id="@+id/myEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="?android:textColor"
/>
</stryle>
<style name="ToDoTheme" parent="@android:style/Theme.Black">
<item name="android:textSize">12sp</item>
</style>
</resources>
[추가 내용은 책 3장 참고]
2. 리소스 사용하기
ⓐ R.에 있는 변수값들은 리소스 테이블 안에서 자신에 대응하는 리소스의 위치에 대한 참조일뿐 인스턴스가 아니다
setContentView(R.layout.main);
Toast.makeText(this, R.string.app_err,Toast.L.....).show()
ⓑ 리소스 인스턴스 접근하기
- 리소스 테이블은 Resources클래스의 인스턴스로 표현됨
- 리소스 테이블에 대해 조회를 수행기 때문에 static이 될수없고 리소스 인스턴스에 접근하려면 아래와같다
Resources mr = getResources();
CharSequence st = mr.getText(R.string.stop_message);
Drawable icon = mr.getDrawable(R.drawable.app_icon);
int b = mr.getColor(R.color.blue);
float borderWidth = mr.getDimension(R.dimen.standard_border);
Animation tranOut = AnimationUtils.loadAnimation(this, R.anim.spin)
String[] sr = mr.getStringArray(R.array.string_array);
int[] ia = mr.getIntArray(R.array.integer_array);
프레임별 애니메이션이 적용된 리소스
AnimationDrawable rocket = (AnimationDrawable)mr.getDrawable(R.drawable.frame_by_frame);
3. 리소스에서 다른 리소스 참조하기
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="@dimen/standard_border">
<EditText
android:id="@+id/myEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/stop_message"
android:textColor="@color/opaque_blue"
/>
</LinearLayout>
4. 시스템 리소스 사용하기
CharSequence httpErr = getString(android.R.string.httpErrorBadUrl);
<EditText
android:id="@+id/myEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@android:string/httpErrorBadUrl"
/>
5. 현재 테마에서 스타일 참조하기
- 현재 테마의 텍스트 색상을 이용
<EditText
android:id="@+id/myEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="?android:textColor"
/>
'안드로이드 > 고급' 카테고리의 다른 글
[PAAD] 4장 메뉴 (0) | 2011.08.17 |
---|---|
[PAAD] 4장 커스텀 뷰 만들기 (2) | 2011.08.14 |
[PAAD] 4장 리소스 드로어블 (링크_참고자료) (0) | 2011.08.14 |
[PAAD] 3장 리소스 런타임구성, 애플리케이션확장, 액티비티생명주기 (0) | 2011.08.14 |
[PAAD] 2장 시작하기 정리 (0) | 2011.08.12 |