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