Фреска: Как получить соотношение сторон изображения перед загрузкой? - PullRequest
0 голосов
/ 03 октября 2018

Я использую библиотеку загрузчика изображений fresco в своем приложении.Но так как просмотр на фреске не поддерживает перенос содержимого или настройку просмотра.Я просто хочу получить соотношение сторон изображения и программно установить его для просмотра.Как я могу это сделать?

1 Ответ

0 голосов
/ 13 августа 2019

Здесь код для получения соотношения сторон с использованием Fresco.Вы должны использовать BaseControllerListener, чтобы получить ширину и высоту изображения, а затем вычислить соотношение сторон = ширина / высота

    val listener = object : BaseControllerListener<ImageInfo>() {

            override fun onFinalImageSet(id: String?, @Nullable imageInfo: ImageInfo?, @Nullable animatable: Animatable?) {
                //Action on final image load
                if (imageInfo != null) {
                    listHolder.mPic.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT
                    listHolder.mPic.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT
                    listHolder.mPic.setAspectRatio(imageInfo.width.toFloat() / imageInfo.height)
                }
            }

            override fun onFailure(id: String?, throwable: Throwable?) {
                //Action on failure
            }

        }
        val request = ImageRequest.fromUri(urlImg)
        val controller: DraweeController = Fresco.newDraweeControllerBuilder()
            .setUri(urlImg)
            .setControllerListener(listener)
            .build()
        listHolder.mPic.controller = controller
...