Невозможно создать анимацию перехода между элементом просмотра переработчика и деталями фрагмента. Джетпак НавигацияAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно создать анимацию перехода между элементом просмотра переработчика и деталями фрагмента. Джетпак Навигация

Сообщение Anonymous »

Я пытаюсь создать анимацию перехода между ImageView элемента RecyclerView и ImageView во фрагменте сведений. Я попробовал это с другим представлением из первого фрагмента, за пределами RecyclerView, и со вторым фрагментом, и все работает нормально. но если я попытаюсь сделать это из элемента представления переработчика, это не сработает.
Вот метод привязки данных из ViewHolder
fun bind(property: Property) {
with(binding) {
ViewCompat.setTransitionName(ivProperty, property.propertyId)
setPropertyImage(property)
setBrandingLogoData(property.branding?.first())

tvPropertyAddress.text = property.getName()
tvPropertyPrice.text = property.listPrice?.toString()

tvPropertyBeds.showText(property.description?.beds?.toString())
tvProperyBaths.showText(property.description?.baths?.toString())
tvPropertySqft.showText(property.description?.sqft?.toString())

root.onClick { onItemClick(property, ivProperty) }
}
}

Метод onItemClick из фрагмента с RecyclerView
fun openPropertyDetails(property: Property, view: ImageView) {
val extras = FragmentNavigatorExtras(
view to view.transitionName
)
SearchFragmentDirections.openPropertyDetails(property, view.transitionName).navigate(extras)
}

Код сведений о фрагменте
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
sharedElementEnterTransition =
TransitionInflater.from(context).inflateTransition(android.R.transition.explode)
}

override fun initViews() {
with(binding) {
postponeEnterTransition()
ivProperty.transitionName = args.transitionName
glideImage(args.property.primaryPhoto.url, ivProperty)
setPropertyDescriptionFilters(args.property.description)
setBrandingInfo(args.property.branding?.first())
tvPropertyAddress.text = args.property.getName()
tvPropertyPrice.text =
getString(R.string.view_sale_property_description_price, args.property.listPrice)
if (args.property.lastUpdateDate != null) {
tvSalePropertyTime.text = getString(
R.string.screen_sale_property_details_property_description_last_update_title,
args.property.lastUpdateDate.toUiTime(
SERVER_YEAR_MONTH_DAY_TIME_PATTERN,
UI_DATE_PATTERN_WITH_TIME_AND_SPACE
)
)
tvSalePropertyTime.show()
}
}
}

Метод glideImage
fun Fragment.glideImage(url: String?, view: ImageView) = Glide.with(view)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.skipMemoryCache(false)
.apply(
RequestOptions().dontTransform() // this line
)
.addListener(object : RequestListener {
override fun onLoadFailed(
p0: GlideException?,
p1: Any?,
p2: Target?,
p3: Boolean
): Boolean {
Timber.i("startPostponedEnterTransition error")
startPostponedEnterTransition()
return false
}

override fun onResourceReady(
p0: Drawable?,
p1: Any?,
p2: Target?,
p3: DataSource?,
p4: Boolean
): Boolean {
Timber.i("startPostponedEnterTransition success")
startPostponedEnterTransition()
return false
}
})
.into(view)


Подробнее здесь: https://stackoverflow.com/questions/784 ... ent-detail
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»