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 index b91cd24..d684387 100644 --- 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 @@ -30,6 +30,8 @@ import android.widget.ImageView import androidx.annotation.ColorRes import androidx.core.content.ContextCompat import androidx.core.widget.ImageViewCompat +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView /** * Activity showcasing how visibility GONE affects constraints. @@ -49,6 +51,8 @@ class MovieDetailsPreviewActivity : LayoutPreviewBaseActivity() { } + private lateinit var recyclerView: RecyclerView + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -66,6 +70,14 @@ class MovieDetailsPreviewActivity : LayoutPreviewBaseActivity() { val youtubeTrailerUrl = "https://www.youtube.com/watch?v=g4Hbz2jLxvQ" startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(youtubeTrailerUrl))) } + + recyclerView = findViewById(R.id.movie_related_contents) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = LinearLayoutManager(this@MovieDetailsPreviewActivity, LinearLayoutManager.HORIZONTAL, false) + adapter = MoviePosterAdapter() + } } private fun applyToastListener(vararg views: View) { diff --git a/app/src/main/java/com/hossainkhan/android/demo/ui/functionaldemo/MoviePosterAdapter.kt b/app/src/main/java/com/hossainkhan/android/demo/ui/functionaldemo/MoviePosterAdapter.kt new file mode 100644 index 0000000..3b7a44b --- /dev/null +++ b/app/src/main/java/com/hossainkhan/android/demo/ui/functionaldemo/MoviePosterAdapter.kt @@ -0,0 +1,56 @@ +/* + * 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.view.LayoutInflater +import android.view.ViewGroup +import android.widget.ImageView +import androidx.recyclerview.widget.RecyclerView +import com.hossainkhan.android.demo.R + +/** + * A simple adapter container movie poster images. + */ +class MoviePosterAdapter : RecyclerView.Adapter() { + private val posterImageResourceIds = listOf( + R.drawable.poster_lego_batman, + R.drawable.poster_i2, + R.drawable.poster_angry_birds, + R.drawable.poster_lego_movie, + R.drawable.poster_wreckit_ralph, + R.drawable.poster_dragon3 + ) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PosterViewHolder { + // create a new view + val posterView = LayoutInflater.from(parent.context) + .inflate(R.layout.list_item_poster, parent, false) as ImageView + + return PosterViewHolder(posterView) + } + + override fun getItemCount(): Int { + return posterImageResourceIds.size + } + + override fun onBindViewHolder(holder: PosterViewHolder, position: Int) { + holder.posterView.setImageResource(posterImageResourceIds[position]) + } + + // Provide a reference to the views for each data item + class PosterViewHolder(val posterView: ImageView) : RecyclerView.ViewHolder(posterView) +} \ No newline at end of file diff --git a/app/src/main/res/drawable-xxxhdpi/poster_angry_birds.jpg b/app/src/main/res/drawable-xxxhdpi/poster_angry_birds.jpg new file mode 100644 index 0000000..ecba032 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/poster_angry_birds.jpg differ diff --git a/app/src/main/res/drawable-xxxhdpi/poster_dragon3.jpg b/app/src/main/res/drawable-xxxhdpi/poster_dragon3.jpg new file mode 100644 index 0000000..c4e07f8 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/poster_dragon3.jpg differ diff --git a/app/src/main/res/drawable-xxxhdpi/poster_i2.jpg b/app/src/main/res/drawable-xxxhdpi/poster_i2.jpg new file mode 100644 index 0000000..8715d55 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/poster_i2.jpg differ diff --git a/app/src/main/res/drawable-xxxhdpi/poster_lego_batman.jpg b/app/src/main/res/drawable-xxxhdpi/poster_lego_batman.jpg new file mode 100644 index 0000000..fda492b Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/poster_lego_batman.jpg differ diff --git a/app/src/main/res/drawable-xxxhdpi/poster_lego_movie.jpg b/app/src/main/res/drawable-xxxhdpi/poster_lego_movie.jpg new file mode 100644 index 0000000..d627fd2 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/poster_lego_movie.jpg differ diff --git a/app/src/main/res/drawable-xxxhdpi/poster_spider_verse_detail.jpg b/app/src/main/res/drawable-xxxhdpi/poster_spider_verse_detail.jpg new file mode 100644 index 0000000..e6420a4 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/poster_spider_verse_detail.jpg differ diff --git a/app/src/main/res/drawable-xxxhdpi/poster_wreckit_ralph.jpg b/app/src/main/res/drawable-xxxhdpi/poster_wreckit_ralph.jpg new file mode 100644 index 0000000..e6fd666 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/poster_wreckit_ralph.jpg differ diff --git a/app/src/main/res/drawable/ic_baseline_4k_18dp.xml b/app/src/main/res/drawable/ic_baseline_4k_18dp.xml new file mode 100644 index 0000000..e4aec43 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_4k_18dp.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/app/src/main/res/layout/demo_movie_details.xml b/app/src/main/res/layout/demo_movie_details.xml index 25dd50a..87ddd02 100644 --- a/app/src/main/res/layout/demo_movie_details.xml +++ b/app/src/main/res/layout/demo_movie_details.xml @@ -1,4 +1,6 @@ - - + app:layout_constraintTop_toTopOf="@+id/thumbnail" /> + app:layout_constraintTop_toBottomOf="@+id/movie_trailer" /> + + + + + + + + @@ -216,11 +247,11 @@ style="@style/TextAppearance.AppCompat.Title.Inverse" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginTop="16dp" + android:layout_marginTop="24dp" android:text="More Information" app:layout_constraintLeft_toLeftOf="@+id/guideline_vertical_start" app:layout_constraintRight_toRightOf="@+id/guideline_vertical_end" - app:layout_constraintTop_toBottomOf="@+id/button_rent" /> + app:layout_constraintTop_toBottomOf="@+id/movie_related_contents" /> + + + +