InsetDrawable

6742 단어 Android

InsetDrawable


업무 조사를 통과할 기회가 생겨서 InsetDrawable의 비망록입니다.
뷰의 Background에 표시되는 배경 이미지가 실제 뷰보다 작은 경우 유효합니다.뷰에 설정된 이미지는 작지만 터치 영역을 크게 찍고 싶습니다.그리고 나는 그 그림을 왼쪽으로 정렬해서 표시하고 싶다.디자이너에게 이런 이미지를 디자인해달라고 일부러 부탁하는 문제가 있어서 조사해 봤는데 어떻게 써야 할지 모르겠어요...

Drawable 리소스 정의


XML을 사용하여 InsetDrawable을 정의합니다.android: inset ~ 에서 View의 boundary 설정 값을 정의합니다.
inset_logo.xml
<?xml version="1.0" encoding="utf-8"?>

<inset
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/ic_launcher"
    android:insetRight="72px"
    android:insetLeft="-72px"/>
hdpi는 72px의 그림을 사용하기 때문입니다.insetRight에서 양의 값을 지정하면 원래의 이미지가 파괴된 표시가 된다.오른쪽에 설정값을 삽입해서 왼쪽에 표시하려면 insetLeft에서 같은 절대값의 음수를 지정해야 합니다.

Layout에서 Drawable 지정


activity_main.xml
    <ImageView
        android:layout_width="216px"
        android:layout_height="wrap_content"
        android:src="@drawable/inset_logo"
        android:background="#000000"/>
이 지정은 다음과 같이 아이콘을 왼쪽으로 정렬합니다.
InsetDrawable

기타


다만, 뷰의 하이라이트를 사용한 이미지보다 크면 잘 보이지 않아요...ImageView의 scaleType에서 fitStart를 지정한 내용을 비교하여 실제 설치한 결과를 위에 업로드합니다.
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.example.insetdrawable.app.MainActivity">

    <TextView
        android:text="View width 216px height 72px\nInsetDrawableを使用"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ImageView
        android:layout_width="216px"
        android:layout_height="wrap_content"
        android:src="@drawable/inset_logo"
        android:background="#000000"/>

    <TextView
        android:text="scaleType(fitStart)を使用"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ImageView
        android:layout_width="216px"
        android:layout_height="wrap_content"
        android:scaleType="fitStart"
        android:src="@drawable/ic_launcher"
        android:background="#000000"/>

    <TextView
        android:text="View width 216px height 216px\nInsetDrawableを使用"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ImageView
        android:layout_width="216px"
        android:layout_height="216px"
        android:src="@drawable/inset_logo"
        android:background="#000000"/>

    <TextView
        android:text="scaleTypeを使用"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ImageView
        android:layout_width="216px"
        android:layout_height="216px"
        android:scaleType="fitStart"
        android:src="@drawable/ic_launcher"
        android:background="#000000"/>

</LinearLayout>

응, 잘 모르겠어.

좋은 웹페이지 즐겨찾기