Я вернулся, теперь во второй части я хочу поговорить о векторе и использовать для него привязку данных. Если вы, ребята, не читали первую часть, вот ссылка ..
Если вы, ребята, когда-либо имели дело с множественной плотностью экрана, то вы должны знать, как сложно иметь 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 для отображения своего изображения, вы даже можете иметь несколько параметров в статические функции.
Вот ссылка на проект
Если у вас есть вопросы, дайте мне знать!