Skip to content

Commit 9e176d7

Browse files
chiragmibhoomishah20akashmimalikmotanimilanvadhel-mi
authored
Develop (#37)
* -Enabled actual circular crop -Optimized the attributes * Upgrade lib version and README.md * Updated dependencies versions, Minor changes in style (#18) - Used ViewModelProvider constructor to build the ViewModel instead of ViewModelProviders * Update library version and README.md * Added file size limit restriction to display in grid * Optional crop (#23) Make single image selection cropping optional * Update library version and README.md * Update README.md * Feature/latest version support (#26) * Latest Android 11 support - Gradle version updated to v4.1.3 instead of v4.1.1 - Kotlin version updated to v1.4.32 instead of v1.4.21 - Multidex added - CompileSdkVersion updated to android-S instead of 30 - buildToolVersion 30.0.3 added - ViewModelProviders code changes due to deprecation - request permission and start activity for result code changes in docsFragment and FolderFragment * PDF and other non media files not listing issue solved for Android 11 and 12 * Camera not working issue resolved and Camera permission changes applied * Android 10 Non media file choose from system file explorer feature implementation - Gradle version updated to v4.2.0 instead of 4.1.3 - Kotlin version updated to v1.5.0 instead of 1.4.32 * Lassi picker version updated to v0.2.0 instead of v0.1.7 * CompileSdkVersion changed to 30 instead of android-S due to APK file not installed issue - BuildToolVersion changed to v30.0.3 instead of v31.0.0 rc3 * Cropping image URI not working issue resolved * Feature/latest version support (#28) * Added file size limit restriction to display in grid (#22) * -Enabled actual circular crop -Optimized the attributes * Upgrade lib version and README.md * Updated dependencies versions, Minor changes in style (#18) - Used ViewModelProvider constructor to build the ViewModel instead of ViewModelProviders * Update library version and README.md * Added file size limit restriction to display in grid Co-authored-by: Bhoomi Shah <bhoomishah20495@gmail.com> Co-authored-by: AKASH PATEL <akash.mindinventory@gmail.com> Co-authored-by: milanvadhel-mi <73939866+milanvadhel-mi@users.noreply.github.com> * Optional crop (#23) Make single image selection cropping optional * Update library version and README.md * Update README.md * Latest Android 11 support [WIP] - Gradle version updated to v4.1.3 instead of v4.1.1 - Kotlin version updated to v1.4.32 instead of v1.4.21 - Multidex added - CompileSdkVersion updated to android-S instead of 30 - buildToolVersion 30.0.3 added - ViewModelProviders code changes due to deprecation - request permission and start activity for result code changes in docsFragment and FolderFragment * PDF and other non media files not listing issue solved for Android 11 and 12 * Camera not working issue resolved and Camera permission changes applied * Android 10 Non media file choose from system file explorer feature implementation - Gradle version updated to v4.2.0 instead of 4.1.3 - Kotlin version updated to v1.5.0 instead of 1.4.32 * Lassi picker version updated to v0.2.0 instead of v0.1.7 * CompileSdkVersion changed to 30 instead of android-S due to APK file not installed issue - BuildToolVersion changed to v30.0.3 instead of v31.0.0 rc3 * Cropping image URI not working issue resolved Co-authored-by: Malik Motani <mjmotani@gmail.com> Co-authored-by: Bhoomi Shah <bhoomishah20495@gmail.com> Co-authored-by: AKASH PATEL <akash.mindinventory@gmail.com> Co-authored-by: milanvadhel-mi <73939866+milanvadhel-mi@users.noreply.github.com> Co-authored-by: Faiyaz meghreji <50236417+faiyaz92@users.noreply.github.com> * - Resolved albumId exception in audio picker (#36) - Added selectionDrawable attribute option in xml - Updated UI - Updated library version and plugins - Updated README.md * Update README.md Co-authored-by: Bhoomi Shah <bhoomishah20495@gmail.com> Co-authored-by: AKASH PATEL <akash.mindinventory@gmail.com> Co-authored-by: Malik Motani <mjmotani@gmail.com> Co-authored-by: milanvadhel-mi <73939866+milanvadhel-mi@users.noreply.github.com> Co-authored-by: Faiyaz meghreji <50236417+faiyaz92@users.noreply.github.com> Co-authored-by: sanjay-mi <82382452+sanjay-mi@users.noreply.github.com> Co-authored-by: Sanjay Prajapati <sanjay.prajapati@mindinventory.com>
1 parent 50c52d5 commit 9e176d7

17 files changed

Lines changed: 195 additions & 96 deletions

File tree

README.md

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Lassi is simplest way to pick media (either image, video, audio or doc)
3939
```groovy
4040
dependencies {
4141
...
42-
implementation 'com.github.Mindinventory:Lassi:0.2.0'
42+
implementation 'com.github.Mindinventory:Lassi:0.2.1'
4343
}
4444
```
4545
@@ -69,30 +69,31 @@ Lassi is simplest way to pick media (either image, video, audio or doc)
6969
.setProgressBarColor(R.color.colorAccent)
7070
.setPlaceHolder(R.drawable.ic_image_placeholder)
7171
.setErrorDrawable(R.drawable.ic_image_placeholder)
72+
.setSelectionDrawable(R.drawable.ic_checked_media)
7273
.setCropType(CropImageView.CropShape.RECTANGLE) // choose shape for cropping after capturing an image from camera (for MediaType.IMAGE only)
7374
.setCropAspectRatio(1, 1) // define crop aspect ratio for cropping after capturing an image from camera (for MediaType.IMAGE only)
7475
.enableFlip() // Enable flip image option while image cropping (for MediaType.IMAGE only)
7576
.enableRotate() // Enable rotate image option while image cropping (for MediaType.IMAGE only)
7677
.enableActualCircleCrop() // Enable actual circular crop (only for MediaType.Image and CropImageView.CropShape.OVAL)
7778
.build()
78-
startActivityForResult(intent, MEDIA_REQUEST_CODE)
79+
receiveData.launch(intent)
7980
```
8081
8182
82-
* Step 2. override onActivityResult function to get Lassi result.
83+
* Step 2. Get Lassi result in ActivityResultCallback lambda function.
8384
8485
```kotlin
85-
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
86-
super.onActivityResult(requestCode, resultCode, data)
87-
if (resultCode == Activity.RESULT_OK && data != null) {
88-
when (requestCode) {
89-
MEDIA_REQUEST_CODE -> {
90-
val selectedMedia = data.getSerializableExtra(KeyUtils.SELECTED_MEDIA) as ArrayList<MiMedia>
91-
// Do needful with your selectedMedia
86+
private val receiveData =
87+
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
88+
if (it.resultCode == Activity.RESULT_OK) {
89+
val selectedMedia =
90+
it.data?.getSerializableExtra(KeyUtils.SELECTED_MEDIA) as ArrayList<MiMedia>
91+
if (!selectedMedia.isNullOrEmpty()) {
92+
ivEmpty.isVisible = selectedMedia.isEmpty()
93+
selectedMediaAdapter.setList(selectedMedia)
94+
}
9295
}
9396
}
94-
}
95-
}
9697
```
9798
9899

app/build.gradle

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
apply plugin: 'com.android.application'
2-
32
apply plugin: 'kotlin-android'
4-
53
apply plugin: 'kotlin-android-extensions'
64
apply plugin: 'kotlin-kapt'
75

@@ -39,14 +37,14 @@ android {
3937
dependencies {
4038
implementation fileTree(dir: 'libs', include: ['*.jar'])
4139
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
42-
implementation 'androidx.appcompat:appcompat:1.2.0'
43-
implementation 'androidx.core:core-ktx:1.3.2'
44-
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
40+
implementation 'androidx.appcompat:appcompat:1.3.1'
41+
implementation 'androidx.core:core-ktx:1.6.0'
42+
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
4543
testImplementation 'junit:junit:4.13.2'
46-
androidTestImplementation 'androidx.test:runner:1.3.0'
47-
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
44+
androidTestImplementation 'androidx.test:runner:1.4.0'
45+
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
4846
implementation project(path: ':lassi')
49-
implementation 'androidx.recyclerview:recyclerview:1.2.0'
47+
implementation 'androidx.recyclerview:recyclerview:1.2.1'
5048
implementation 'androidx.cardview:cardview:1.0.0'
5149

5250
// glide

app/src/main/java/com/lassi/app/MainActivity.kt

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@ import android.content.ContentResolver
55
import android.content.Intent
66
import android.net.Uri
77
import android.os.Bundle
8+
import android.util.Log
89
import android.view.View
910
import android.webkit.MimeTypeMap
11+
import androidx.activity.result.contract.ActivityResultContracts
1012
import androidx.appcompat.app.AppCompatActivity
1113
import androidx.core.content.FileProvider
14+
import androidx.core.view.isVisible
1215
import com.lassi.app.adapter.SelectedMediaAdapter
1316
import com.lassi.common.utils.KeyUtils
1417
import com.lassi.data.media.MiMedia
@@ -23,7 +26,6 @@ import java.util.*
2326

2427
class MainActivity : AppCompatActivity(), View.OnClickListener {
2528

26-
private val MEDIA_REQUEST_CODE = 100
2729
private val selectedMediaAdapter by lazy { SelectedMediaAdapter(this::onItemClicked) }
2830

2931
override fun onCreate(savedInstanceState: Bundle?) {
@@ -46,6 +48,7 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
4648
.setGridSize(2)
4749
.setPlaceHolder(R.drawable.ic_image_placeholder)
4850
.setErrorDrawable(R.drawable.ic_image_placeholder)
51+
.setSelectionDrawable(R.drawable.ic_checked_media)
4952
.setStatusBarColor(R.color.colorPrimaryDark)
5053
.setToolbarColor(R.color.colorPrimary)
5154
.setToolbarResourceColor(android.R.color.white)
@@ -60,7 +63,8 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
6063
.enableFlip()
6164
.enableRotate()
6265
.build()
63-
startActivityForResult(intent, MEDIA_REQUEST_CODE)
66+
receiveData.launch(intent)
67+
6468
}
6569
R.id.btnVideoPicker -> {
6670
val intent = Lassi(this)
@@ -78,9 +82,10 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
7882
.setProgressBarColor(R.color.colorAccent)
7983
.setPlaceHolder(R.drawable.ic_video_placeholder)
8084
.setErrorDrawable(R.drawable.ic_video_placeholder)
85+
.setSelectionDrawable(R.drawable.ic_checked_media)
8186
.setSupportedFileTypes("mp4", "mkv", "webm", "avi", "flv", "3gp")
8287
.build()
83-
startActivityForResult(intent, MEDIA_REQUEST_CODE)
88+
receiveData.launch(intent)
8489
}
8590

8691
R.id.btnAudioPicker -> {
@@ -90,12 +95,13 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
9095
.setGridSize(2)
9196
.setPlaceHolder(R.drawable.ic_audio_placeholder)
9297
.setErrorDrawable(R.drawable.ic_audio_placeholder)
98+
.setSelectionDrawable(R.drawable.ic_checked_media)
9399
.setStatusBarColor(R.color.colorPrimaryDark)
94100
.setToolbarColor(R.color.colorPrimary)
95101
.setToolbarResourceColor(android.R.color.white)
96102
.setProgressBarColor(R.color.colorAccent)
97103
.build()
98-
startActivityForResult(intent, MEDIA_REQUEST_CODE)
104+
receiveData.launch(intent)
99105
}
100106
R.id.btnDocPicker -> {
101107
val intent = Lassi(this)
@@ -104,6 +110,7 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
104110
.setGridSize(2)
105111
.setPlaceHolder(R.drawable.ic_document_placeholder)
106112
.setErrorDrawable(R.drawable.ic_document_placeholder)
113+
.setSelectionDrawable(R.drawable.ic_checked_media)
107114
.setStatusBarColor(R.color.colorPrimaryDark)
108115
.setToolbarColor(R.color.colorPrimary)
109116
.setToolbarResourceColor(android.R.color.white)
@@ -122,19 +129,22 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
122129
)
123130
.setProgressBarColor(R.color.colorAccent)
124131
.build()
125-
startActivityForResult(intent, MEDIA_REQUEST_CODE)
132+
receiveData.launch(intent)
126133
}
127134
}
128135
}
129136

130-
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
131-
super.onActivityResult(requestCode, resultCode, data)
132-
if (requestCode == MEDIA_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
133-
val selectedMedia =
134-
data?.getSerializableExtra(KeyUtils.SELECTED_MEDIA) as ArrayList<MiMedia>
135-
selectedMediaAdapter.setList(selectedMedia)
137+
private val receiveData =
138+
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
139+
if (it.resultCode == Activity.RESULT_OK) {
140+
val selectedMedia =
141+
it.data?.getSerializableExtra(KeyUtils.SELECTED_MEDIA) as ArrayList<MiMedia>
142+
if (!selectedMedia.isNullOrEmpty()) {
143+
ivEmpty.isVisible = selectedMedia.isEmpty()
144+
selectedMediaAdapter.setList(selectedMedia)
145+
}
146+
}
136147
}
137-
}
138148

139149
private fun getMimeType(uri: Uri): String? {
140150
return if (ContentResolver.SCHEME_CONTENT == uri.scheme) {
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<shape xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:shape="rectangle">
4+
<solid android:color="@color/colorPrimary" />
5+
<corners android:radius="10dp" />
6+
</shape>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<vector android:height="24dp" android:tint="#FFFFFF"
2+
android:viewportHeight="24" android:viewportWidth="24"
3+
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
4+
<path android:fillColor="@android:color/white" android:pathData="M12,3v9.28c-0.47,-0.17 -0.97,-0.28 -1.5,-0.28C8.01,12 6,14.01 6,16.5S8.01,21 10.5,21c2.31,0 4.2,-1.75 4.45,-4H15V6h4V3h-7z"/>
5+
</vector>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<vector android:height="24dp" android:tint="#FFFFFF"
2+
android:viewportHeight="24" android:viewportWidth="24"
3+
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
4+
<path android:fillColor="@android:color/white" android:pathData="M6,2c-1.1,0 -1.99,0.9 -1.99,2L4,20c0,1.1 0.89,2 1.99,2L18,22c1.1,0 2,-0.9 2,-2L20,8l-6,-6L6,2zM13,9L13,3.5L18.5,9L13,9z"/>
5+
</vector>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<vector android:height="24dp" android:tint="#FFFFFF"
2+
android:viewportHeight="24" android:viewportWidth="24"
3+
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
4+
<path android:fillColor="@android:color/white" android:pathData="M21,19V5c0,-1.1 -0.9,-2 -2,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2zM8.5,13.5l2.5,3.01L14.5,12l4.5,6H5l3.5,-4.5z"/>
5+
</vector>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<vector android:height="24dp" android:tint="#FFFFFF"
2+
android:viewportHeight="24" android:viewportWidth="24"
3+
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
4+
<path android:fillColor="@android:color/white" android:pathData="M4,6L2,6v14c0,1.1 0.9,2 2,2h14v-2L4,20L4,6zM20,2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM12,14.5v-9l6,4.5 -6,4.5z"/>
5+
</vector>

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

Lines changed: 91 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -6,68 +6,112 @@
66
android:layout_height="match_parent"
77
tools:context=".MainActivity">
88

9-
<Button
10-
android:id="@+id/btnImagePicker"
11-
android:layout_width="wrap_content"
9+
<androidx.constraintlayout.widget.ConstraintLayout
10+
android:id="@+id/clChild"
11+
android:layout_width="match_parent"
1212
android:layout_height="wrap_content"
13-
android:layout_marginTop="16dp"
14-
android:backgroundTint="@color/colorPrimary"
15-
android:text="@string/open_image_picker"
16-
android:textColor="@android:color/white"
17-
app:layout_constraintEnd_toStartOf="@+id/btnVideoPicker"
13+
android:paddingTop="20dp"
14+
android:paddingBottom="20dp"
15+
app:layout_constraintBottom_toTopOf="@+id/rvSelectedMedia"
16+
app:layout_constraintEnd_toEndOf="parent"
1817
app:layout_constraintStart_toStartOf="parent"
19-
app:layout_constraintTop_toTopOf="parent" />
18+
app:layout_constraintTop_toTopOf="parent">
2019

21-
<Button
22-
android:id="@+id/btnVideoPicker"
23-
android:layout_width="wrap_content"
24-
android:layout_height="wrap_content"
25-
android:layout_marginStart="8dp"
26-
android:layout_marginTop="16dp"
27-
android:backgroundTint="@color/colorPrimary"
28-
android:text="@string/open_video_picker"
29-
android:textColor="@android:color/white"
30-
app:layout_constraintEnd_toEndOf="parent"
31-
app:layout_constraintStart_toEndOf="@+id/btnImagePicker"
32-
app:layout_constraintTop_toTopOf="parent" />
20+
<Button
21+
android:id="@+id/btnImagePicker"
22+
android:layout_width="130dp"
23+
android:layout_height="wrap_content"
24+
android:background="@drawable/bg_rounded_button"
25+
android:drawableStart="@drawable/ic_image"
26+
android:padding="10dp"
27+
android:text="@string/image"
28+
android:textAllCaps="false"
29+
android:textColor="@android:color/white"
30+
android:textSize="16sp"
31+
android:textStyle="bold"
32+
app:layout_constraintEnd_toStartOf="@+id/btnVideoPicker"
33+
app:layout_constraintStart_toStartOf="parent"
34+
app:layout_constraintTop_toTopOf="parent" />
3335

34-
<Button
35-
android:id="@+id/btnDocPicker"
36-
android:layout_width="wrap_content"
37-
android:layout_height="wrap_content"
38-
android:layout_marginStart="8dp"
39-
android:layout_marginTop="16dp"
40-
android:backgroundTint="@color/colorPrimary"
41-
android:text="OPEN DOC PICKER"
42-
android:textColor="@android:color/white"
43-
app:layout_constraintEnd_toEndOf="parent"
44-
app:layout_constraintHorizontal_bias="0.5"
45-
app:layout_constraintStart_toEndOf="@+id/btnAudioPicker"
46-
app:layout_constraintTop_toBottomOf="@+id/btnVideoPicker" />
36+
<Button
37+
android:id="@+id/btnVideoPicker"
38+
android:layout_width="130dp"
39+
android:layout_height="wrap_content"
40+
android:layout_marginStart="8dp"
41+
android:background="@drawable/bg_rounded_button"
42+
android:drawableStart="@drawable/ic_video"
43+
android:padding="10dp"
44+
android:text="@string/video"
45+
android:textAllCaps="false"
46+
android:textColor="@android:color/white"
47+
android:textSize="16sp"
48+
android:textStyle="bold"
49+
app:layout_constraintEnd_toEndOf="parent"
50+
app:layout_constraintStart_toEndOf="@+id/btnImagePicker"
51+
app:layout_constraintTop_toTopOf="parent" />
4752

48-
<Button
49-
android:id="@+id/btnAudioPicker"
50-
android:layout_width="wrap_content"
51-
android:layout_height="wrap_content"
52-
android:layout_marginTop="16dp"
53-
android:backgroundTint="@color/colorPrimary"
54-
android:text="OPEN AUDIO PICKER"
55-
android:textColor="@android:color/white"
56-
app:layout_constraintEnd_toStartOf="@+id/btnDocPicker"
57-
app:layout_constraintHorizontal_bias="0.5"
58-
app:layout_constraintStart_toStartOf="parent"
59-
app:layout_constraintTop_toBottomOf="@+id/btnImagePicker" />
53+
<Button
54+
android:id="@+id/btnDocPicker"
55+
android:layout_width="130dp"
56+
android:layout_height="wrap_content"
57+
android:layout_marginStart="8dp"
58+
android:layout_marginTop="16dp"
59+
android:background="@drawable/bg_rounded_button"
60+
android:drawableStart="@drawable/ic_document"
61+
android:padding="10dp"
62+
android:text="@string/document"
63+
android:textAllCaps="false"
64+
android:textColor="@android:color/white"
65+
android:textSize="16sp"
66+
android:textStyle="bold"
67+
app:layout_constraintEnd_toEndOf="parent"
68+
app:layout_constraintHorizontal_bias="0.5"
69+
app:layout_constraintStart_toEndOf="@+id/btnAudioPicker"
70+
app:layout_constraintTop_toBottomOf="@+id/btnVideoPicker" />
71+
72+
<Button
73+
android:id="@+id/btnAudioPicker"
74+
android:layout_width="130dp"
75+
android:layout_height="wrap_content"
76+
android:layout_marginTop="16dp"
77+
android:background="@drawable/bg_rounded_button"
78+
android:drawableStart="@drawable/ic_audio"
79+
android:padding="10dp"
80+
android:text="@string/audio"
81+
android:textAllCaps="false"
82+
android:textColor="@android:color/white"
83+
android:textSize="16sp"
84+
android:textStyle="bold"
85+
app:layout_constraintEnd_toStartOf="@+id/btnDocPicker"
86+
app:layout_constraintHorizontal_bias="0.5"
87+
app:layout_constraintStart_toStartOf="parent"
88+
app:layout_constraintTop_toBottomOf="@+id/btnImagePicker" />
89+
</androidx.constraintlayout.widget.ConstraintLayout>
6090

6191
<androidx.recyclerview.widget.RecyclerView
6292
android:id="@+id/rvSelectedMedia"
6393
android:layout_width="0dp"
6494
android:layout_height="0dp"
6595
android:layout_marginTop="8dp"
96+
android:visibility="visible"
6697
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
6798
app:layout_constraintBottom_toBottomOf="parent"
6899
app:layout_constraintEnd_toEndOf="parent"
69100
app:layout_constraintStart_toStartOf="parent"
70-
app:layout_constraintTop_toBottomOf="@+id/btnAudioPicker"
101+
app:layout_constraintTop_toBottomOf="@+id/clChild"
71102
app:spanCount="2"
72103
tools:listitem="@layout/row_selected_media" />
104+
105+
<androidx.appcompat.widget.AppCompatImageView
106+
android:id="@+id/ivEmpty"
107+
android:layout_width="match_parent"
108+
android:layout_height="0dp"
109+
android:background="@color/colorGrey"
110+
android:scaleType="center"
111+
android:src="@drawable/ic_image_placeholder"
112+
app:layout_constraintBottom_toBottomOf="parent"
113+
app:layout_constraintEnd_toEndOf="parent"
114+
app:layout_constraintStart_toStartOf="parent"
115+
app:layout_constraintTop_toBottomOf="@+id/clChild" />
116+
73117
</androidx.constraintlayout.widget.ConstraintLayout>

app/src/main/res/values/colors.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33
<color name="colorPrimary">#FFC107</color>
44
<color name="colorPrimaryDark">#FFA000</color>
55
<color name="colorAccent">#FFC107</color>
6+
<color name="colorGrey">#E3E3E3</color>
67
</resources>

0 commit comments

Comments
 (0)