Android 레이아웃 XML에서 background, backgroundTint, backgroundTintMode 속성의 차이점은 무엇입니까?


112

안드로이드 레이아웃 xml로 작업하는 동안 backgroundTintattribute를 발견했습니다. 나는 그것이 무엇인지 이해하지 못한다.

또한 무엇 backgroundTintMode입니까 ??

답변:


90

android:background, android:backgroundTint및 의 다양한 조합을 테스트했습니다 android:backgroundTintMode.

android:backgroundTintandroid:background와 함께 사용할 때 의 리소스에 색상 필터를 적용합니다 android:backgroundTintMode.

결과는 다음과 같습니다.

색조 확인

추가로 실험하려는 경우 코드는 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="32dp"
        android:textSize="45sp"
        android:background="#37AEE4"
        android:text="Background" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="32dp"
        android:textSize="45sp"
        android:backgroundTint="#FEFBDE"
        android:text="Background tint" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="32dp"
        android:textSize="45sp"
        android:background="#37AEE4"
        android:backgroundTint="#FEFBDE"
        android:text="Both together" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="32dp"
        android:textSize="45sp"
        android:background="#37AEE4"
        android:backgroundTint="#FEFBDE"
        android:backgroundTintMode="multiply"
        android:text="With tint mode" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="32dp"
        android:textSize="45sp"
        android:text="Without any" />
</LinearLayout>

두 번째 TextView 예제에서를 사용 android:backgroundTint하지 않고 사용할 android:background때이 두 번째 TextView는 아무것도 변경하지 않습니다. 하지만 android:backgroundTintButton에서 시도해 보면 버튼의 색상이 제가 설정 한 backgroundTint와 같은 색상으로 보입니다. 이러한 경우를 설명해 주시겠습니까?
빈 구엔

@VinhNguyen, android:background(가)에 대한 속성을 설정해야합니다 android:backgroundTint에 볼 수 있도록 TextView. 의 경우 Button이미 프레임 워크에 의해 설정된 일종의 배경 / 색상이 있다고 생각합니다.
Yogesh Umesh Vaity 2011

13

backgroundTint속성은 배경에 색조 (음영)를 추가하는 데 도움이됩니다. 동일한 색상 값을 다음 형식으로 제공 할 수 있습니다."#rgb", "#argb", "#rrggbb", or "#aarrggbb".

반면 backgroundTintMode에 배경 색조를 적용하는 데 도움이됩니다. src_over, src_in, src_atop,etc 와 같은 상수 값이 있어야합니다 .

사용할 수있는 상수 값에 대한 명확한 아이디어를 얻으려면 이것을 참조하십시오 . backgroundTint다양한 속성과 함께 속성 및 설명을 검색 할 수 있습니다.


링크가 끊어졌습니다.
mallaudin 2016

1
아니, 그렇지 않습니다. 다시 확인할 수 있습니까?
Samridhi

7

이미 다뤄 졌기 때문에 차이점에 대해 많이 강조하지는 않겠지 만 아래 사항에 유의하십시오.

  • android:backgroundTint android:backgroundTintMode API 21에서만 사용할 수 있습니다.
  • 로 설정된 png / 벡터 드로어 블 배경이있는 위젯이 있고 android:background기본 색상을 변경하려는 경우을 사용 android:backgroundTint하여 음영을 추가 할 수 있습니다 .

<Button
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:background="@android:drawable/ic_dialog_email" />

여기에 이미지 설명 입력

<Button
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:background="@android:drawable/ic_dialog_email"
    android:backgroundTint="@color/colorAccent" />

여기에 이미지 설명 입력

다른 예시

당신의 악센트 색상을 변경하려고하면 FloatingActionButton사용 android:background이 이미 활용 있기 때문에 인 변화를 통지하지 않습니다 당신을 app:srcCompat이렇게하려면 위해서는, 당신은 사용할 수있는 android:backgroundTint대신


4

BackgroundTint는 컬러 필터로 작동합니다.

색조로 FEFBDE

배경으로 37AEE4

주석 색조 / 배경별로 차이를 확인하고 둘 다 설정되면 출력을 확인하십시오.


4

android : backgroundTintMode

배경 색조를 적용하는 데 사용되는 혼합 모드입니다.

android : backgroundTint

배경에 적용 할 색조입니다. 형태, 색상 값이어야의 #rgb, #argb, #rrggbb, 또는#aarrggbb .

이 유형의 값을 포함하는 리소스 ( "@ [package :] type : name"형식) 또는 테마 속성 ( "? [package :] [type :] name"형식)에 대한 참조 일 수도 있습니다. .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.