Как получить изображение из SimpleDraweeView от Fresco? - PullRequest
0 голосов
/ 12 сентября 2018

Я хочу проверить, загружено изображение или нет.Итак, я сравниваю изображение-заполнитель и загруженное изображение как растровое изображение.Но я не могу добраться до загруженного изображения. Как я могу получить?

Тест

onView(withId(R.id.sdv_profile_image)).check(matches(CustomMatchers.hasSameImage(R.drawable.ic_lock_white_24_dp)))

CustomMatchers.class

fun hasSameImage(expectedId: Int): Matcher<View> {
        return object : TypeSafeMatcher<View>(SimpleDraweeView::class.java) {
            override fun describeTo(description: Description) {
            }

            override fun matchesSafely(target: View?): Boolean {
                val image = target as SimpleDraweeView
                val resources = target.context.resources
                val expectedDrawable = resources.getDrawable(expectedId)

                if (expectedDrawable == null) return false

                val bitmap = getBitmap(image.background)
                val otherBitmap = getBitmap(expectedDrawable)
                return bitmap.sameAs(otherBitmap)
            }
        }}
 private fun getBitmap(drawable: Drawable): Bitmap {
        val bitmap = Bitmap.createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888)
        val canvas = Canvas(bitmap)
        drawable.setBounds(0, 0, canvas.width, canvas.height)
        drawable.draw(canvas)
        return bitmap
    }

Ошибка

java.lang.IllegalStateException: image.background must not be null
...