programing

XML로 표시된 Android 비트맵 이미지 크기

starjava 2023. 9. 24. 12:18
반응형

XML로 표시된 Android 비트맵 이미지 크기

XML 파일에서 비트맵을 다음과 같이 사용합니다.

<bitmap
    android:src="@drawable/Icon"
    android:gravity="center"/>

여기서 아이콘의 이미지 너비가 화면을 초과합니다.

안드로이드:width="100dp" 등을 사용해 보았습니다.하지만 작동이 안 돼요.

전체 XML 파일:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
      <shape android:shape="rectangle">
            <stroke android:width="3dp" android:color="@color/black" />
            <solid android:color="@color/bg_green" />
        </shape>
   </item>
   <item>
    <bitmap
        android:src="@drawable/Icon"
        android:gravity="center"/>
    </item>
</layer-list>

위 비트맵의 너비와 높이를 줄이려면 어떻게 해야 합니까?

API 23 이상만 해당

그냥 사용.

<item
    android:width="200dp"
    android:height="200dp"
    android:drawable="@drawable/splash_background"
    android:gravity="center" />

대신

<item
    android:left="200dp"
    android:right="200dp">

    <bitmap
        android:src="@drawable/splash_background"
        android:gravity="center" />

</item>

비트맵에 대한 너비 및 높이 매개 변수는 없지만 중력 및 항목 너비/높이를 사용하여 비트맵 크기를 설정할 수 있습니다.

<item
    android:width="230dp"
    android:height="70dp">
    <bitmap
        android:gravity="fill_horizontal|fill_vertical"
        android:src="@drawable/screen" />
</item>

항목의 너비와 높이를 설정하고 중력을 이용하여 항목 내부의 비트맵을 조정할 수 있습니다.

이것이 오래된 질문이라는 것을 알고 있지만 아마도 누군가가 유용하다고 생각할 것입니다.

경고:

이미 코멘트에 언급되어 있듯이, 이 방법은 API 레벨 23 (Android 6.0) 이상에서만 동작합니다.

화면에 맞게 가로, 세로를 줄이고 정확한 치수를 설정할 필요가 없다면 간단하게 설정할 수 있습니다.left그리고.right상위 항목에 대해이렇게 하면 기본적으로 이미지 주변에 여백이 추가되어 공간을 덜 차지하게 됩니다.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:left="20dp"
        android:right="20dp">

        <bitmap
            android:src="@drawable/Icon"
            android:gravity="center" />

    </item>

</layer-list>

그러나 화면 해상도별로 다른 크기의 이미지를 업로드하는 것이 이상적입니다(예:hdpi,xxhdpi이 경우 프로그래밍 방식으로 크기를 설정할 필요가 전혀 없습니다.전체 목록은 여기서 보실 수 있습니다.

내 밉맵 크기를 내 실행 화면으로 조정하기 위해 사용하는 것입니다.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
    <item android:drawable="@color/colorPrimary"/>
    <item
        android:width="200dp"
        android:height="200dp"
        android:gravity="center">
        <bitmap
            android:gravity="fill"
            android:src="@mipmap/ic_launcher"
            android:mipMap="true"/>
    </item>
</layer-list>

이런 식으로 해봐요, 전 효과가 있었어요.

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

  <item
    android:width="30dp"
    android:height="30dp"
    android:gravity="center"
  >
        <bitmap
       android:src="@drawable/screen"/>
  </item>

</layer-list>

Android Developers로부터 비트맵 XML에 크기를 변경할 수 있는 태그가 없다는 것을 알았습니다.GIMP와 같은 일부 그래픽 애플리케이션을 통해 이 작업을 수행해야 합니다. @Kevin Cooper가 이미 말했듯이, 이상적으로 다양한 화면 유형에 대해 다양한 리소스 세트(크기가 다른)를 생성해야 합니다.

그러나 여전히 의 너비 및 높이 특성을 사용하여 크기를 조정할 수 있습니다.ImageView, 크기가 다른 비트맵을 만드는 대신:

<ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:scaleType="center"
    android:src="@drawable/Icon" />

이 이미지를 다른 곳에서 재사용하려면 별도의 스타일을 만들어 재사용할 수 있습니다.

// in styles.xml
<style name="Icon24x24">
    <item name="android:src">@drawable/Icon</item>
    <item name="android:gravity">center</item>
    <item name="android:layout_width">24dp</item>
    <item name="android:layout_height">24dp</item>
</style>

// in layout.xml
<ImageView style="@style/Icon24x24"/>

재사용의 또 다른 방법은 하나에 대해 별도의 레이아웃 파일을 만드는 것일 수 있습니다.ImageView다른 레이아웃에 포함시킬 수 있습니다.

이걸 사용하고 싶으시면bitmap레이어 목록 안에, @케빈 쿠퍼의 답변을 보세요. 그가 패딩을 추가하는 것이 가능하다고 제안했기 때문입니다.layer list item:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:left="20dp"
        android:right="20dp">
        <bitmap
            android:src="@drawable/Icon"
            android:gravity="center" />
    </item>
</layer-list>

그리고 @Nicolo도 지적했듯이, API 23의 형태로 설정하는 것이 가능합니다.android:width그리고.android:height"

그래서 타이핑으로 고쳤습니다.

<item
  android:height= "250dp"
  android:width= "250dp"
  android:gravity="center">
   <bitmap
    android:gravity="fill_horizontal|fill_vertical"
    android:src="@mipmap/ic_launcher"/>
</item>

Complete 솔루션은 이미지 경로를 복사하고 변경하기만 하면 됩니다.

  <?xml version="1.0" encoding="utf-8"?>

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">

 <item
    android:gravity="center"
    android:width="286dp"
    android:height="176dp">

    <bitmap
        android:src="@drawable/logo"
        android:gravity="fill_horizontal|fill_vertical" />
   </item>
 </layer-list>

이미지의 크기를 수동으로 조정한 다음 작업이 가능합니다.

: 1. 1 : android:background=AppCompat Spinner/AppCompat에 합니다.

 <androidx.appcompat.widget.AppCompatSpinner
            android:id="@+id/spinner"
            android:layout_width="match_parent"
            android:layout_height="@dimen/input_height"
            android:background="@drawable/shape_drop_down_normal"
            />
  1. 만들기shape_drop_down_normal.xml인에/drawable

2A) Spinner 비트맵에 ic_spinner_dropdown.png 그리기 가능한 리소스가 있는 경우

shape_drop_down_normal.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:width="20dp"
        android:height="13dp"
        android:gravity="end|center_vertical">
        <bitmap
            android:src="@drawable/ic_spinner_dropdown"
            android:gravity="fill"
            android:mipMap="true"/>
    </item>
</layer-list>

2B) 스피너 비트맵에 대한 ic_spinner_dropdown_vector.xml 벡터 그리기 가능 리소스가 있는 경우

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:width="20dp"
        android:height="13dp"
        android:gravity="end|center_vertical"
        android:drawable="@drawable/ic_spinner_dropdown_vector">
    </item>
</layer-list>
  1. 경고!

    안드로이드:width="20dp" 안드로이드:height="13dp"

계층 목록에서 API 23+가 필요합니다.

android:left="20dp"
android:right="13dp" 

낮은 API 레벨의 경우 또는 단순히 너비 및 높이 제약 조건을 생략하고 벡터 드로잉 가능한 dp를 직접 설정합니다(모든 API 레벨에 대해 완벽하게 작동합니다).

언급URL : https://stackoverflow.com/questions/23079355/android-bitmap-image-size-in-xml

반응형