Как жить в Imageview SR c? - PullRequest
       10

Как жить в Imageview SR c?

1 голос
/ 23 марта 2020

Моя viewmodel:

init{
  updateWallPaper()
}

private var _wallpaper = MutableLiveData<Bitmap>()
    val wallpaper: LiveData<Bitmap>
        get() = _wallpaper
fun updateWallPaper() {
        val file = appCtx.getWallpaperFile()
        if(file.exists()) {
            _wallpaper.value = BitmapFactory.decodeFile(file.absolutePath)
        }
    }

и мой дом Activity.xml:

<ImageView
            android:id="@+id/imageview_main_home_img"
            android:layout_width="match_parent"
            android:layout_height="324dp"
            android:scaleType="fitXY"
            android:src="@drawable/sample_image"
            app:layout_constraintTop_toTopOf="parent"
            app:load="@{homeViewModel.wallpaper }" />

Все, что я хочу сделать, это изменить это изображение где-нибудь еще, и изображение sr c Изменения в реальном времени.

Я пробовал много способов, но не смог, и мне интересно, как применить действующие данные к sr c.

Это нормально работать на резюме, но каждый раз, когда я возвращаюсь к дома, этот метод работает, так что я думаю, что это пустая трата памяти, поэтому я собираюсь изменить его на привязку живых данных.

1 Ответ

0 голосов
/ 23 марта 2020

Используйте LiveData<Drawable> вместо:

    private var _wallpaper = MutableLiveData<Drawable>()
    val wallpaper: LiveData<Drawable>
        get() = _wallpaper

    fun updateWallPaper() {
        val file = appCtx.getWallpaperFile()
        if(file.exists()) {
            _wallpaper.value = BitmapDrawable(resources, BitmapFactory.decodeFile(file.absolutePath))
        }
    }

, затем вы можете использовать ImageView.setImageDrawable(Drawable) из привязки данных XML (используя синтаксис app:imageDrawable):

<ImageView
            android:id="@+id/imageview_main_home_img"
            android:layout_width="match_parent"
            android:layout_height="324dp"
            android:scaleType="fitXY"
            android:src="@drawable/sample_image"
            app:layout_constraintTop_toTopOf="parent"
            app:imageDrawable="@{homeViewModel.wallpaper }" />
...