Я пытаюсь масштабировать изображение, используя следующий код, который работает нормально

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true" >
    <scale
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="6000"
        android:fromXScale="1"
        android:fromYScale="1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.2"
        android:toYScale="1.2"
        >
    </scale>
</set>
 <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:scaleType="fitXY"
        tools:src="@drawable/image"
        app:layout_constraintDimensionRatio="H,16:9"
        app:layout_constraintTop_toTopOf="parent"/>

Но он также масштабирует высоту и ширину изображения. Есть ли способ масштабировать изображение, не увеличивая его?

0
Abhi 12 Апр 2019 в 21:27

2 ответа

Лучший ответ

Это не будет работать, потому что само ImageView масштабируется. Таким образом, независимо от того, что scaleType или adjustViewBounds, ImageView все равно масштабируется. Изображение не может быть масштабировано отдельно от вида, вместо этого вы можете анимировать отступ ImageView

Я бы предложил добавить ImageView в другое представление, например RelativeLayout, установить для RelativeLayout желаемый размер, а затем масштабировать ImageView.

При этом RelativeLayout останется того же размера и может быть использован для выполнения того, что вы хотели сделать, в то время как ImageView масштабируется.

1
HB. 12 Апр 2019 в 19:59

Вы можете настроить автоматическое изменение размера изображения, чтобы оно соответствовало изображению.

<ImageView
   android:id="@id/img_id"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:adjustViewBounds="true"
   android:scaleType="fitCenter"/>

adjustViewBounds - это ключ для изменения масштаба изображения для заполнения imageView

0
Amine 12 Апр 2019 в 18:32