Я вернулся, теперь во второй части я хочу поговорить о векторе и использовать для него привязку данных. Если вы, ребята, не читали первую часть, вот ссылка ..

Если вы, ребята, когда-либо имели дело с множественной плотностью экрана, то вы должны знать, как сложно иметь 5 одинаковых изображений для вашего изображения. Это не только пустая трата времени (к счастью, есть этот сайт), но и увеличение размера APK. Вектор действительно мал по размеру, но вы можете масштабировать его до размера футбольного мяча, потому что он сохраняет только координаты изображения. Android наконец-то поддерживает Vector в Библиотеке поддержки Android 23.2, вот более подробная информация об Android Vector.

Во-первых, давайте импортируем SVG в студию Android. Щелкните правой кнопкой мыши файл res - ›новый -› Vector Asset.

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

Включение флага

Если вы используете плагин Gradle версии 2.0 или выше, в своем приложении gradle.

android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

Есть способы использовать вектор: вы можете расширить его из своего макета или расширить его в своем java-файле, в любом случае работают.

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/ic_android"/>
or
iv.setImageResource(R.drawable.ic_android);

Но вы, ребята, пришли сюда не для этого, так как вы могли уже найти эти ресурсы где-то еще: D. Давайте соберем их вместе !!

DataBinding и вектор

Наконец, теперь создайте класс BindingAdapters.java, этот класс будет содержать метод привязки для вектора.

public class BindingAdapters {

    @BindingAdapter("app:srcVector")
    public static void setSrcVector(ImageView view, @DrawableRes int drawable) {
        view.setImageResource(drawable);
    }

}

Метод адаптера статической привязки с аннотацией BindingAdapter позволяет разработчику настроить способ вызова установщика для атрибута. Добавьте их в свой xml-макет.

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcVector="@{viewModel.image}"/>
@Bindable
public int getImage() {
    return R.drawable.ic_android;
}

Теперь вы можете установить изображение так же, как мы установили текст, и вуаля !!!

Вот и все, ребята, BindingAdapter настолько мощный, что вы также можете использовать Glide / Picasso для отображения своего изображения, вы даже можете иметь несколько параметров в статические функции.

Вот ссылка на проект

Если у вас есть вопросы, дайте мне знать!