Skip to content

Commit 975a80e

Browse files
Shared element transition for BannerFragment.kt and ArticleDetailFragment
1 parent 9295530 commit 975a80e

File tree

4 files changed

+20
-6
lines changed

4 files changed

+20
-6
lines changed

app/src/main/java/com/developerbreach/developerbreach/view/banner/BannerFragment.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.developerbreach.developerbreach.view.banner
22

3+
import android.graphics.Color
34
import android.os.Bundle
45
import android.view.LayoutInflater
56
import android.view.View
@@ -8,6 +9,7 @@ import androidx.fragment.app.Fragment
89
import androidx.lifecycle.ViewModelProvider
910
import androidx.navigation.fragment.findNavController
1011
import com.developerbreach.developerbreach.databinding.FragmentBannerBinding
12+
import com.google.android.material.transition.MaterialContainerTransform
1113

1214

1315
class BannerFragment : Fragment() {
@@ -19,6 +21,11 @@ class BannerFragment : Fragment() {
1921
val bannerUrlLink = BannerFragmentArgs.fromBundle(requireArguments()).bannerUrlLink
2022
val factory = BannerViewModelFactory(requireActivity().application, bannerUrlLink)
2123
viewModel = ViewModelProvider(this, factory)[BannerViewModel::class.java]
24+
25+
sharedElementEnterTransition = MaterialContainerTransform().apply {
26+
this.duration = 300L
27+
this.containerColor = Color.BLACK
28+
}
2229
}
2330

2431
override fun onCreateView(

app/src/main/java/com/developerbreach/developerbreach/view/detail/ArticleDetailBindingAdapter.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package com.developerbreach.developerbreach.view.detail
22

3+
import android.view.ViewGroup
34
import android.widget.Button
45
import android.widget.ImageView
56
import android.widget.TextView
67
import androidx.databinding.BindingAdapter
78
import androidx.navigation.findNavController
9+
import androidx.transition.Fade
10+
import androidx.transition.TransitionManager
811
import com.bumptech.glide.Glide
912
import com.developerbreach.developerbreach.R
1013
import com.developerbreach.developerbreach.controller.AppNavDirections
@@ -16,10 +19,12 @@ import com.google.android.material.snackbar.Snackbar
1619
fun ImageView.setImageResource(
1720
urlString: String?
1821
) {
22+
val imageView = this
1923
Glide.with(this.context).load(urlString).into(this)
2024

2125
this.setOnClickListener {
22-
AppNavDirections(findNavController()).detailToBanner(urlString)
26+
TransitionManager.beginDelayedTransition(imageView.rootView as ViewGroup, Fade())
27+
AppNavDirections(findNavController()).detailToBanner(urlString, this)
2328
}
2429
}
2530

app/src/main/res/layout/fragment_article_detail.xml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,11 @@
4747
android:contentDescription="@string/article_image_content_description"
4848
android:fitsSystemWindows="true"
4949
android:scaleType="centerCrop"
50+
android:transitionName="@{viewModel.articleDetailData.banner.toString()}"
5051
app:bindCollapsingBannerImage="@{viewModel.articleDetailData.banner}"
5152
app:layout_collapseMode="parallax"
5253
tools:layout_gravity="center"
53-
tools:layout_height="@dimen/image_size_tools"
54-
tools:layout_width="@dimen/image_size_tools"
55-
tools:src="@drawable/ic_placeholder" />
54+
tools:src="@drawable/hourglass" />
5655

5756
<androidx.appcompat.widget.Toolbar
5857
android:id="@+id/detail_fragment_toolbar"

app/src/main/res/layout/fragment_banner.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,13 @@
2323
<com.github.chrisbanes.photoview.PhotoView
2424
android:id="@+id/banner_full_screen_photo_view"
2525
android:layout_width="match_parent"
26-
android:layout_height="match_parent"
26+
android:layout_height="300dp"
2727
android:contentDescription="@string/article_banner_image_content_description"
28+
android:transitionName="@{viewModel.bannerUrl.toString()}"
2829
app:bindBannerWithZoom="@{viewModel.bannerUrl}"
29-
tools:src="@drawable/ic_placeholder" />
30+
app:layout_constraintBottom_toBottomOf="parent"
31+
app:layout_constraintTop_toTopOf="parent"
32+
tools:src="@drawable/hourglass" />
3033

3134
<ImageView
3235
android:id="@+id/close_banner_fragment_image_view"

0 commit comments

Comments
 (0)