수색…


문자열 번역

문자열은 지원하는 각 언어에 대해 서로 다른 strings.xml을 정의하여 국제화 할 수 있습니다.

ISO 언어 코드를 접미사로 사용하여 새 값 디렉토리를 만들어 새 언어를 추가합니다. 예를 들어 독일어 세트를 추가하면 구조가 다음과 같이 보일 수 있습니다.

여기에 이미지 설명을 입력하십시오.

시스템은 요청 된 문자열을 찾으면 언어 별 xml을 먼저 검사하고 발견되지 않으면 기본 strings.xml 파일의 값이 반환됩니다. 키는 각 언어에 대해 동일하게 유지되며 값만 변경됩니다.

내용 예 :

/res/values/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">HelloWorld</string>
    <string name="hello_world">Hello World!</string>
</resources>

/res/values-fr/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello_world">Bonjour tout le monde !!!</string>
</resources>

문자열 정의

문자열은 일반적으로 리소스 파일 인 strings.xml 저장됩니다. 이들은 <string> XML 요소를 사용하여 정의됩니다.

strings.xml의 목적은 국제화를 허용하는 것입니다. 각 언어 iso 코드에 대해 strings.xml을 정의 할 수 있습니다. 따라서 시스템이 'app_name'문자열을 찾으면 현재 언어에 해당하는 xml 파일을 먼저 확인하고 발견되지 않으면 기본 strings.xml 파일에서 해당 항목을 찾습니다. 즉, 일부 문자열 만 지역화하고 다른 문자열은 지역화하지 않도록 선택할 수 있습니다.

/res/values/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Hello World App</string>
    <string name="hello_world">Hello World!</string>
</resources>

문자열이 XML 리소스 파일에 정의되면 앱의 다른 부분에서 사용할 수 있습니다.

앱의 XML 프로젝트 파일은 @string/string_name 을 참조하여 <string> 요소를 사용할 수 있습니다. 예를 들어 앱의 매니페스트 (/manifests/AndroidManifest.xml) 파일에는 기본적으로 Android Studio에 다음 줄이 포함되어 있습니다.

android:label="@string/app_name"

이것은 실행 파일에 설치되거나 표시 될 때 app의 이름으로 사용할 "app_name"이라는 <string> 리소스를 찾기 위해 android에 알립니다.

안드로이드에서 XML 파일의 <string> 리소스를 사용할 다른 시간은 레이아웃 파일에 포함됩니다. 예를 들어, 다음은 앞에서 정의한 hello_world 문자열을 표시하는 TextView를 나타냅니다.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world"/>

또한 앱의 자바 부분에서 <string> 리소스에 액세스 할 수 있습니다. Activity 클래스 내에서 위에서와 같은 hello_world 문자열을 호출하려면 다음을 사용하십시오.

String helloWorld = getString(R.string.hello_world);

문자열 배열 정의

리소스 파일에 문자열 배열 쓰기를 정의하려면

res / values ​​/ filename.xml

<string-array name="string_array_name">
    <item>text_string</item>
    <item>@string/string_id</item>
</string-array>

예를 들면

res / values ​​/ arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="string_array_example">
        <item>@string/app_name</item>
        <item>@string/hello_world</item>
    </string-array>
</resources>

와 같은 자바에서 사용

String[] strings = getResources().getStringArray(R.array.string_array_example;
Log.i("TAG",Arrays.toString(strings)));

산출

I/TAG: [HelloWorld, Hello World!]

측정 기준 정의

치수는 일반적으로 이름이 dimens.xml 자원 파일에 저장됩니다. 이들은 <dimen> 요소를 사용하여 정의됩니다.

res / values ​​/ dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="small_padding">5dp</dimen>
    <dimen name="medium_padding">10dp</dimen>
    <dimen name="large_padding">20dp</dimen>

    <dimen name="small_font">14sp</dimen>
    <dimen name="medium_font">16sp</dimen>
    <dimen name="large_font">20sp</dimen>
</resources> 

다른 단위를 사용할 수 있습니다.

  • sp : 크기에 독립적 인 픽셀. 글꼴의 경우.
  • dp : 밀도와 무관 한 픽셀. 그 밖의 모든 것.
  • pt : 포인트
  • 픽셀 : 픽셀
  • mm : 밀리미터
  • 메신저 : 인치

치수는 이제 @dimen/name_of_the_dimension 구문으로 XML에서 참조 할 수 있습니다.

예 :

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/large_padding">
</RelativeLayout>

정수 정의

정수는 일반적으로 integers.xml 이라는 리소스 파일에 저장되지만 파일 이름은 임의로 선택할 수 있습니다. 각 정수는 다음 파일과 같이 <integer> 요소를 사용하여 정의됩니다.

res / values ​​/ integers.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="max">100</integer>
</resources> 

다음 예제와 같이 @integer/name_of_the_integer 구문으로 XML에서 참조 할 수 있습니다.

<ProgressBar
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:max="@integer/max"/>

정수 배열 정의

리소스 파일에 정수 배열 쓰기를 정의하려면

res / values ​​/ filename.xml

<integer-array name="integer_array_name">
    <item>integer_value</item>
    <item>@integer/integer_id</item>
</integer-array>

예를 들면

res / values ​​/ arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array name="fibo">
        <item>@integer/zero</item>
        <item>@integer/one</item>
        <item>@integer/one</item>
        <item>@integer/two</item>
        <item>@integer/three</item>
        <item>@integer/five</item>
    </integer-array>
</resources>

와 같은 자바에서 사용

int[] values = getResources().getIntArray(R.array.fibo);
Log.i("TAG",Arrays.toString(values)));

산출

I/TAG: [0, 1, 1, 2, 3, 5]

색상 정의

색상은 대개 /res/values/ 폴더의 colors.xml 이라는 자원 파일에 저장됩니다.

그들은 <color> 요소에 의해 정의됩니다 :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>

    <color name="blackOverlay">#66000000</color>
</resources>

색상은 각 색상 채널 (0 - FF) 에 대해 다음 형식 중 하나의 16 진수 색상 값으로 나타냅니다.

  • #RGB
  • #ARGB
  • #RRGGBB
  • #AARRGGBB

전설

  • A - 알파 채널 - 0 값이 완전히 투명하고 FF 값이 불투명합니다.
  • R - 적색 채널
  • G - 녹색 채널
  • B - 파란색 채널

정의 된 색상은 XML에서 @color/name_of_the_color 구문을 사용하여 사용할 수 있습니다.

예 :

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/blackOverlay">

코드에서 색상 사용하기

이 예에서는 this 활동 참조라고 가정 this . 문맥 참조도 그 자리에서 사용할 수 있습니다.

1.6
int color = ContextCompat.getColor(this, R.color.black_overlay);
view.setBackgroundColor(color);
6.0
int color = this.getResources().getColor(this, R.color.black_overlay);
view.setBackgroundColor(color);

위의 선언에서 colorPrimary , colorPrimaryDarkcolorAccentstyles.xml 에서 사용자 정의 Android 테마를 정의 할 때 사용할 재료 디자인 색상을 정의하는 데 사용됩니다. Android Studio로 새 프로젝트를 만들면 자동으로 추가됩니다.

"비추천"경고없이 자원 얻기

Android API 23 이상을 사용하면 다음과 같은 상황이 발생할 수 있습니다.

여기에 이미지 설명을 입력하십시오.

이 상황은 리소스를 가져 오는 것과 관련하여 Android API의 구조적 변경으로 인해 발생합니다.
이제 함수 :

public int getColor(@ColorRes int id, @Nullable Theme theme) throws NotFoundException    

사용되어야한다. 그러나 android.support.v4 라이브러리에는 또 다른 해결책이 있습니다.

build.gradle 파일에 다음 종속성을 추가하십시오.

com.android.support:support-v4:24.0.0

그런 다음 지원 라이브러리의 모든 메소드를 사용할 수 있습니다.

ContextCompat.getColor(context, R.color.colorPrimaryDark);
ContextCompat.getDrawable(context, R.drawable.btn_check);
ContextCompat.getColorStateList(context, R.color.colorPrimary);
DrawableCompat.setTint(drawable);
ContextCompat.getColor(context,R.color.colorPrimaryDark));

또한 지원 라이브러리에서 더 많은 메소드를 사용할 수 있습니다.

ViewCompat.setElevation(textView, 1F);
ViewCompat.animate(textView);
TextViewCompat.setTextAppearance(textView, R.style.AppThemeTextStyle);
...

메뉴 리소스를 정의하고 Activity / Fragment 내부에서 사용합니다.

res / menu에 메뉴 정의하기

<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/first_item_id"
        android:orderInCategory="100"
        android:title="@string/first_item_string"
        android:icon="@drawable/first_item_icon"
        app:showAsAction="ifRoom"/>

    <item
        android:id="@+id/second_item_id"
        android:orderInCategory="110"
        android:title="@string/second_item_string"
        android:icon="@drawable/second_item_icon"
        app:showAsAction="ifRoom"/>

</menu>

구성에 대한 추가 옵션은 메뉴 리소스를 참조하십시오.

내부 Activity :

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    ///Override defining menu resource
    inflater.inflate(R.menu.menu_resource_id, menu);
    super.onCreateOptionsMenu(menu, inflater);
}

@Override
public void onPrepareOptionsMenu(Menu menu) {
    //Override for preparing items (setting visibility, change text, change icon...)
    super.onPrepareOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    //Override it for handling items
    int menuItemId = item.getItemId();
    switch (menuItemId) {
        case: R.id.first_item_id
             return true; //return true, if is handled
    }
    return super.onOptionsItemSelected(item);
}

뷰를 표시하는 동안 위의 메서드를 호출하려면 getActivity().invalidateOptionsMenu(); 호출 getActivity().invalidateOptionsMenu();

내부 Fragment 추가 호출이 필요합니다.

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    setHasOptionsMenu(true);
    super.onCreateView(inflater, container, savedInstanceState);
}

strings.xml의 문자열 서식 지정

strings.xml 파일에 문자열을 정의하면 문자열 형식을 지정할 수도 있습니다. 유일한주의 사항은 문자열을 단순히 레이아웃에 연결하는 것보다 아래 코드와 같이 처리해야한다는 것입니다.

<string name="welcome_trainer">Hello Pokémon Trainer, %1$s! You have caught %2$d Pokémon.</string>
String welcomePokemonTrainerText = getString(R.string.welcome_trainer, tranerName, pokemonCount);

위의 예에서,
% 1 $ s
'%'는 일반 문자와 구분되며,
'1'은 첫 번째 매개 변수를 나타내며,
'$'는 매개 변수 번호와 유형 사이의 구분 기호로 사용되고,
's'는 문자열 유형을 나타냅니다 ( 'd'는 정수로 사용됨).

getString()Context 또는 Resources 의 메소드입니다. 즉, Activity 인스턴스 내에서 직접 사용할 수 있습니다. 그렇지 않으면 getActivity().getString() 또는 getContext().getString() 각각 사용할 수 있습니다.

색상 상태 목록 정의

색상 상태 목록은 색상으로 사용할 수 있지만 사용되는보기의 상태에 따라 변경됩니다.

하나를 정의하려면 res/color/foo.xml 에 리소스 파일을 만듭니다.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#888888" android:state_enabled="false"/>
    <item android:color="@color/lightGray" android:state_selected="false"/>
    <item android:color="@android:color/white" />
</selector>

항목은 정의 된 순서대로 평가되고 지정된 상태가보기의 현재 상태와 일치하는 첫 번째 항목이 사용됩니다. 따라서 상태 선택자를 지정하지 않고 끝에 catch-all을 지정하는 것이 좋습니다.

각 항목은 색상 리터럴을 사용하거나 다른 곳에 정의 된 색상을 참조 할 수 있습니다.

String Plurals 정의

복수 문자열과 단일 문자열을 구별하기 위해 strings.xml 파일에 복수형을 정의하고 아래 예와 같이 여러 수량을 나열 할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<resources>  
    <plurals name="hello_people">
        <item quantity="one">Hello to %d person</item>
        <item quantity="other">Hello to %d people</item>
    </plurals>
</resources>

이 정의는 다음 예제와 같이 Resources 클래스의 getQuantityString() 메소드를 사용하여 Java 코드에서 액세스 할 수 있습니다.

getResources().getQuantityString(R.plurals.hello_people, 3, 3);

여기서 첫 번째 매개 변수 인 R.plurals.hello_people 은 자원 이름입니다. 두 번째 매개 변수 (이 예제에서는 3 )는 올바른 quantity 문자열을 선택하는 데 사용됩니다. 세 번째 매개 변수 (이 예제에서는 3 )는 형식 지정자 %d 를) 대체하는 데 사용할 형식 인수입니다.

가능한 수량 값 (알파벳 순서로 나열)은 다음과 같습니다.

few
many
one
other
two
zero

모든 로케일이 모든 quantityquantity 지원하는 것은 아닙니다. 예를 들어, 중국어에는 one 항목에 대한 개념이 없습니다. 영어는없는 zero 는 문법과 동일로, 항목을 other . 지원되지 않는 quantity 인스턴스는 IDE에서 Lint 경고로 플래그 지정되지만 사용되는 경우 복잡한 오류는 발생하지 않습니다.

리소스에 정의 된 객체의 배열 가져 오기

응용 프로그램의 리소스에서 사용자 지정 개체를 만들고 정의해야하는 경우가 있습니다. 이러한 객체는 Java 단순 유형 (예 : Integer , Float , String 으로 구성 될 수 있습니다.

다음은 애플리케이션 리소스에 정의 된 객체를 가져 오는 방법의 예입니다. 객체 Category 는 범주의 3 가지 속성을 유지합니다.

  • 신분증
  • 색깔
  • 이름

POJOcategories.xml 파일에서 동일하다. 각 배열은 각 카테고리에 대해 정의 된 동일한 속성을 가진다.

  1. 당신을위한 모델 만들기 :
public class Category {
    private Type id;
    private @ColorRes int color;
    private @StringRes String name;

    public Category getId() {
        return id;
    }

    public void setId(Category id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getColor() {
        return color;
    }

    public void setColor(int color) {
        this.color = color;
    }

    public enum Type{
        REGISTRATION,
        TO_ACCEPT,
        TO_COMPLETE,
        TO_VERIFY,
        CLOSED
    }
}
  1. res/values 폴더에 파일을 만듭니다.

categories.xml

  1. 자원으로 구성된 각 모델 작성 :
<array name="no_action">
    <item>0</item>
    <item>@android:color/transparent</item>
    <item>@string/statusRegistration</item>
</array>
<array name="to_accept">
    <item>1</item>
    <item>@color/light_gray</item>
    <item>@string/acceptance</item>
</array>
<array name="opened">
    <item>2</item>
    <item>@color/material_green_500</item>
    <item>@string/open</item>
</array>
<array name="to_verify">
    <item>3</item>
    <item>@color/material_gray_800</item>
    <item>@string/verification</item>
</array>
<array name="to_close">
    <item>4</item>
    <item>@android:color/black</item>
    <item>@string/closed</item>
</array>
  1. 자원 파일에 배열을 정의하십시오.

    <array name="categories">
        <item>@array/no_action</item>
        <item>@array/to_accept</item>
        <item>@array/opened</item>
        <item>@array/to_verify</item>
        <item>@array/to_close</item>
    </array>
    
  2. 가져 오기 할 함수를 만듭니다.

    @NonNull
    public List<Category> getCategories(@NonNull Context context) {
    final int DEFAULT_VALUE = 0;
    final int ID_INDEX = 0;
    final int COLOR_INDEX = 1;
    final int LABEL_INDEX = 2;
    
    if (context == null) {
        return Collections.emptyList();
    }
    // Get the array of objects from the `tasks_categories` array
    TypedArray statuses = context.getResources().obtainTypedArray(R.array.categories);
    if (statuses == null) {
        return Collections.emptyList();
    }
    List<Category> categoryList = new ArrayList<>();
    for (int i = 0; i < statuses.length(); i++) {
        int statusId = statuses.getResourceId(i, DEFAULT_VALUE);
        // Get the properties of one object
        TypedArray rawStatus = context.getResources().obtainTypedArray(statusId);
    
        Category category = new Category();
    
        int id = rawStatus.getInteger(ID_INDEX, DEFAULT_VALUE);
        Category.Type categoryId;
        //The ID's should maintain the order with `Category.Type`
        switch (id) { 
            case 0:
                categoryId = Category.Type.REGISTRATION;
                break;
            case 1:
                categoryId = Category.Type.TO_ACCEPT;
                break;
            case 2:
                categoryId = Category.Type.TO_COMPLETE;
                break;
            case 3:
                categoryId = Category.Type.TO_VERIFY;
                break;
            case 4:
                categoryId  = Category.Type.CLOSED;
                break;
            default:
                categoryId = Category.Type.REGISTRATION;
                break;
        }
        category.setId(categoryId);
    
        category.setColor(rawStatus.getResourceId(COLOR_INDEX, DEFAULT_VALUE));
    
        int labelId = rawStatus.getResourceId(LABEL_INDEX, DEFAULT_VALUE);
        category.setName(getString(context.getResources(), labelId));
    
        categoryList.add(taskCategory);
    }
    return taskCategoryList;
    }
    

9 패치

9 패치는 늘릴 수있는 영역이 투명 테두리에 검은 색 마커로 정의되는 신축성있는 이미지입니다.

여기에 훌륭한 자습서가 있습니다 .
너무 오래되었지만 여전히 가치가 있으며 많은 사람들이 9 패치 도구를 깊이 이해하는 데 도움이되었습니다.

불행히도, 최근에이 페이지는 잠시 동안 보류되었습니다 (현재 다시 보급 중입니다).

따라서 신뢰할 수있는 서버에서 안드로이드 개발자를 위해 해당 페이지의 물리적 사본을 가져야합니다.

여기있어.

Android 용 9- 패치 UI에 대한 간단한 가이드 2011 년 5 월 18 일

첫 번째 Android 앱을 개발하는 동안 9- 패치 (일명 9.png)가 혼란스럽고 제대로 문서화되지 않았 음을 발견했습니다. 잠시 후 마침내 어떻게 작동 하는지를 확인하고 다른 사람들이 알아낼 수 있도록 무언가를 모으기로 결정했습니다.

기본적으로 9- 패치는 png 투명도를 사용하여 9- 슬라이스 또는 scale9의 고급 형식을 수행합니다. 가이드는 이미지의 가장자리에 1 픽셀 검정 선을 그어 이미지의 크기와 채우기를 정의하는 직선입니다. 이미지 파일 name.9.png의 이름을 지정하면 Android가 9.png 형식을 인식하고 검은 색 가이드를 사용하여 비트 맵을 축척하고 채 웁니다.

다음은 기본 가이드 맵입니다.

여기에 이미지 설명을 입력하십시오.

보시다시피 이미지의 각면에 가이드가 있습니다. TOP 및 LEFT 가이드는 이미지 스케일링 (예 : 9- 슬라이스), RIGHT 및 BOTTOM 가이드는 채우기 영역 정의를위한 것입니다.

검정 가이드 라인은 이미지에서 잘라내거나 제거되며 앱에 표시되지 않습니다. 안내선은 1 픽셀 너비 여야 만합니다. 따라서 48x48 버튼을 원하면 실제로 50x50이됩니다. 한 픽셀보다 두꺼운 것은 이미지의 일부로 남습니다. (예제에는 가시성을 높이기 위해 4 픽셀 너비 가이드가 있으며 실제로는 1 픽셀 만 사용해야합니다.)

가이드가 검정색이어야합니다 (# 000000). 색상 (# 000001)이나 알파의 약간의 차이라도 정상적으로 실패하고 늘어납니다. 이 실패는 분명하지 않을 것입니다 *, 그것은 자동으로 실패합니다! 예. 정말. 이제 알았어.

또한 1 픽셀 외곽선의 나머지 영역은 완전히 투명해야합니다. 여기에는 이미지의 네 구석이 포함됩니다. 항상 명확해야합니다. 이것은 당신이 깨닫는 것보다 더 큰 문제 일 수 있습니다. 예를 들어 Photoshop에서 이미지의 크기를 조절하면 거의 보이지 않는 픽셀을 포함 할 수있는 앤티 앨리어스가 적용된 픽셀이 추가되어 실패 할 수도 있습니다 *. Photoshop에서 크기를 조절해야하는 경우 이미지 크기 팝업 메뉴의 하단에있는 이미지 샘플 다시 풀다운 메뉴의 가장 가까운 이웃 설정을 사용하여 가이드에 날카로운 가장자리를 유지하십시오.

* (updated 1/2012) 이것은 실제로 최신 개발 키트의 "수정"입니다. 이전에는 실제로 깨진 9 패치 이미지가 아닌 다른 모든 이미지와 리소스가 갑자기 깨져서 나타납니다.

여기에 이미지 설명을 입력하십시오.

TOP 및 LEFT 가이드는 이미지의 확장 가능한 부분을 정의하는 데 사용됩니다. LEFT는 배율 높이, TOP은 배율 조정 폭을 나타냅니다. 예를 들어 버튼 이미지를 사용하면 단추가 검은 색 부분 내에서 가로 및 세로로 늘어날 수 있고 모서리와 같은 모든 요소는 같은 크기로 유지됩니다. 이 버튼을 사용하면 어떤 크기로도 확장 할 수 있고 균일 한 모양을 유지할 수있는 버튼을 사용할 수 있습니다.

9 패치 이미지는 축소되지 않으며 크기가 커질뿐입니다. 따라서 가능한 한 작게 시작하는 것이 가장 좋습니다.

또한 눈금 선의 중간 부분을 생략 할 수 있습니다. 예를 들어 가운데에 날카로운 광택 가장자리가있는 버튼이있는 경우 왼쪽 가이드의 중간에 몇 픽셀을 남겨 둘 수 있습니다. 이미지의 가운데 수평 축은 축척이되지 않고 위와 아래의 부분 만이므로 선명한 광택이 앤티 앨리어싱이나 퍼지가되지 않습니다.

채우기 영역

채우기 영역 안내선은 선택 사항이며 텍스트 레이블과 같은 항목의 영역을 정의하는 방법을 제공합니다. 채우기는 텍스트, 아이콘 또는 다른 것들을 배치 할 이미지의 공간을 결정합니다. 9 패치는 버튼을위한 것이 아니라 백그라운드 이미지 용으로도 사용됩니다.

위의 버튼 및 레이블 예제는 단순히 채우기 개념을 설명하기 위해 과장되어있어 레이블이 완전히 정확하지는 않습니다. 솔직히 버튼 라벨이 보통 한 줄의 텍스트이기 때문에 안드로이드가 여러 줄 레이블을 어떻게 사용하는지 경험하지 못했습니다.

마지막으로 LinearLayout과 같은 배경 이미지 및 완전히 둥근면과 같이 축척 및 채우기 가이드가 어떻게 달라질 수 있는지에 대한 좋은 데모가 있습니다.

여기에 이미지 설명을 입력하십시오.

이 예에서는 LEFT 가이드가 사용되지 않지만 가이드가 필요합니다. 배경 이미지는 수직으로 축척되지 않습니다. 그것은 단지 수평으로 (TOP 가이드를 기반으로) 비례합니다. 채우기 안내선을 보면서, 오른쪽 및 아래쪽 안내선은 이미지의 곡선 가장자리를 만나는 곳을 넘어 확장됩니다. 이렇게하면 배경의 가장자리 가까이에 둥근 버튼을 배치하여 꽉 끼는 모양을 만들 수 있습니다.

그게 전부입니다. 일단 당신이 그것을 얻으면, 9 패치는 매우 쉽습니다. 스케일링을 수행하는 완벽한 방법은 아니지만, 채우기 영역 및 멀티 라인 스케일 가이드는 기존의 9 슬라이스 및 스케일 9보다 유연성을 제공합니다. 시도 해보면 빨리 알아낼 수 있습니다.

색상 투명도 (알파) 수준

16 진수 불투명도 값

    ------------------------------
   |   Alpha(%)  |   Hex Value    |
    ------------------------------
   |    100%     |      FF        |
   |     95%     |      F2        |
   |     90%     |      E6        |
   |     85%     |      D9        |
   |     80%     |      CC        |
   |     75%     |      BF        |
   |     70%     |      B3        |
   |     65%     |      A6        |
   |     60%     |      99        |
   |     55%     |      8C        |
   |     50%     |      80        |
   |     45%     |      73        |
   |     40%     |      66        |
   |     35%     |      59        |
   |     30%     |      4D        |
   |     25%     |      40        |
   |     20%     |      33        |
   |     15%     |      26        |
   |     10%     |      1A        |
   |      5%     |      0D        |
   |      0%     |      00        |
    ------------------------------   

붉은 색으로 45 %를 설정하고 싶다면.

<color name="red_with_alpha_45">#73FF0000</color> 

빨간색의 16 진수 값 - # FF0000

접두어 - 73FF0000에 45 % 불투명도 73을 추가 할 수 있습니다.

strings.xml 파일 작업

문자열 리소스는 선택적 텍스트 스타일 및 서식 지정을 사용하여 응용 프로그램의 텍스트 문자열을 제공합니다. 응용 프로그램에 문자열을 제공 할 수있는 세 가지 유형의 자원이 있습니다.

XML resource that provides a single string.

통사론:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="string_name">text_string</string>
</resources>

레이아웃에서이 문자열을 사용하려면 다음을 수행하십시오.

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/string_name" />

문자열 배열

XML resource that provides an array of strings.

통사론:

    <resources>
<string-array name="planets_array">
    <item>Mercury</item>
    <item>Venus</item>
    <item>Earth</item>
    <item>Mars</item>
</string-array>

용법

Resources res = getResources();
String[] planets = res.getStringArray(R.array.planets_array);

수량 문자열 (복수형)

XML resource that carries different strings for pluralization. 

통사론:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <plurals
        name="plural_name">
        <item
            quantity=["zero" | "one" | "two" | "few" | "many" | "other"]
            >text_string</item>
    </plurals>
</resources>

용법:

int count = getNumberOfsongsAvailable();
Resources res = getResources();
String songsFound = res.getQuantityString(R.plurals.plural_name, count, count);


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow