diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 25c7c52..961fd3f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -37,6 +37,9 @@
+
\ No newline at end of file
diff --git a/app/src/main/java/com/hossainkhan/android/demo/data/LayoutDataStore.kt b/app/src/main/java/com/hossainkhan/android/demo/data/LayoutDataStore.kt
index cfa02ef..2e7c254 100644
--- a/app/src/main/java/com/hossainkhan/android/demo/data/LayoutDataStore.kt
+++ b/app/src/main/java/com/hossainkhan/android/demo/data/LayoutDataStore.kt
@@ -159,7 +159,24 @@ class LayoutDataStore @Inject constructor(
title = "Virtual Helper: Group",
description = "This class controls the visibility of a set of referenced widgets. " +
"Widgets are referenced by being added to a comma separated list of ids.\n\n" +
- "For example you can link multiple views: `app:constraint_referenced_ids=\"viewId1,viewId2,viewId3\"` and control their visibility at once.")
+ "For example you can link multiple views: `app:constraint_referenced_ids=\"viewId1,viewId2,viewId3\"` and control their visibility at once."),
+
+ /*
+ * This is a demo of movie details page using various features of constraint layout.
+ *
+ * .-'-.
+ * /` |__
+ * /` _.--`-,-`
+ * '-|` a '<-. []
+ * \ _\__) \=`
+ * C_ ` ,_/
+ * | ;----'
+ */
+ LayoutInformation(
+ layoutResourceId = R.layout.demo_movie_details,
+ thumbnailResourceId = R.drawable.spider_verse_poster,
+ title = "Demo: Movie Details",
+ description = "A demo screen containing movie details.")
/*
diff --git a/app/src/main/java/com/hossainkhan/android/demo/di/ActivityBindingModule.kt b/app/src/main/java/com/hossainkhan/android/demo/di/ActivityBindingModule.kt
index c05546f..ad96348 100644
--- a/app/src/main/java/com/hossainkhan/android/demo/di/ActivityBindingModule.kt
+++ b/app/src/main/java/com/hossainkhan/android/demo/di/ActivityBindingModule.kt
@@ -16,6 +16,7 @@
package com.hossainkhan.android.demo.di
+import com.hossainkhan.android.demo.ui.functionaldemo.MovieDetailsPreviewActivity
import com.hossainkhan.android.demo.ui.layoutpreview.LayoutChainStyleActivity
import com.hossainkhan.android.demo.ui.layoutpreview.LayoutDimensionMinMaxActivity
import com.hossainkhan.android.demo.ui.layoutpreview.LayoutGuidelineBarrierActivity
@@ -73,4 +74,8 @@ abstract class ActivityBindingModule {
@ActivityScope
@ContributesAndroidInjector
abstract fun layoutDimensionMinMaxActivity(): LayoutDimensionMinMaxActivity
+
+ @ActivityScope
+ @ContributesAndroidInjector
+ abstract fun layoutMovieDetailsPreviewActivity(): MovieDetailsPreviewActivity
}
\ No newline at end of file
diff --git a/app/src/main/java/com/hossainkhan/android/demo/ui/browse/LayoutBrowseViewModel.kt b/app/src/main/java/com/hossainkhan/android/demo/ui/browse/LayoutBrowseViewModel.kt
index 3e1f0e4..1c96090 100644
--- a/app/src/main/java/com/hossainkhan/android/demo/ui/browse/LayoutBrowseViewModel.kt
+++ b/app/src/main/java/com/hossainkhan/android/demo/ui/browse/LayoutBrowseViewModel.kt
@@ -22,6 +22,7 @@ import androidx.lifecycle.ViewModel
import com.hossainkhan.android.demo.R
import com.hossainkhan.android.demo.data.AppDataStore
import com.hossainkhan.android.demo.data.LayoutInformation
+import com.hossainkhan.android.demo.ui.functionaldemo.MovieDetailsPreviewActivity
import com.hossainkhan.android.demo.ui.layoutpreview.LayoutChainStyleActivity
import com.hossainkhan.android.demo.ui.layoutpreview.LayoutDimensionMinMaxActivity
import com.hossainkhan.android.demo.ui.layoutpreview.LayoutGuidelineBarrierActivity
@@ -69,6 +70,9 @@ class LayoutBrowseViewModel(
R.layout.preview_dimension_min_max -> {
browseNavigator.loadLayoutPreview(LayoutDimensionMinMaxActivity::class.java, layoutResId)
}
+ R.layout.demo_movie_details -> {
+ browseNavigator.loadLayoutPreview(MovieDetailsPreviewActivity::class.java, layoutResId)
+ }
else -> {
// By default it loads the preview activity with the layout requested.
browseNavigator.loadLayoutPreview(layoutResId)
diff --git a/app/src/main/java/com/hossainkhan/android/demo/ui/functionaldemo/MovieDetailsPreviewActivity.kt b/app/src/main/java/com/hossainkhan/android/demo/ui/functionaldemo/MovieDetailsPreviewActivity.kt
new file mode 100644
index 0000000..b91cd24
--- /dev/null
+++ b/app/src/main/java/com/hossainkhan/android/demo/ui/functionaldemo/MovieDetailsPreviewActivity.kt
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2019 Hossain Khan
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hossainkhan.android.demo.ui.functionaldemo
+
+import android.os.Bundle
+import android.view.View
+import android.widget.Button
+import android.widget.ImageButton
+import android.widget.Toast
+import com.hossainkhan.android.demo.R
+import com.hossainkhan.android.demo.ui.layoutpreview.LayoutPreviewBaseActivity
+import android.content.Intent
+import android.content.res.ColorStateList
+import android.net.Uri
+import android.widget.ImageView
+import androidx.annotation.ColorRes
+import androidx.core.content.ContextCompat
+import androidx.core.widget.ImageViewCompat
+
+/**
+ * Activity showcasing how visibility GONE affects constraints.
+ *
+ * See https://developer.android.com/reference/android/support/constraint/ConstraintLayout#VisibilityBehavior
+ */
+class MovieDetailsPreviewActivity : LayoutPreviewBaseActivity() {
+ private val generalClickListener = View.OnClickListener { view ->
+ Toast.makeText(view.context, "You tapped on ${view}", Toast.LENGTH_SHORT).show()
+
+ // Some custom logic to make the UI alive!
+ when (view.id) {
+ R.id.rating_thumbs_up, R.id.rating_thumbs_down -> {
+ applyColorTint((view as ImageButton), R.color.white)
+ }
+ }
+ }
+
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ val ratingThumbsUp = findViewById(R.id.rating_thumbs_up)
+ val ratingThumbsDown = findViewById(R.id.rating_thumbs_down)
+ val addToFav = findViewById(R.id.rating_add_fav)
+ val rentButton = findViewById