allow sliding portrait photos to side
This commit is contained in:
parent
1e9318a789
commit
3c151e27a6
4 changed files with 20 additions and 8 deletions
|
@ -62,7 +62,7 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.simplemobiletools:commons:5.18.0'
|
implementation 'com.simplemobiletools:commons:5.18.1'
|
||||||
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
|
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
|
||||||
implementation 'androidx.multidex:multidex:2.0.1'
|
implementation 'androidx.multidex:multidex:2.0.1'
|
||||||
implementation 'it.sephiroth.android.exif:library:1.0.1'
|
implementation 'it.sephiroth.android.exif:library:1.0.1'
|
||||||
|
|
|
@ -12,16 +12,20 @@ import com.bumptech.glide.request.RequestOptions
|
||||||
import com.bumptech.glide.signature.ObjectKey
|
import com.bumptech.glide.signature.ObjectKey
|
||||||
import com.simplemobiletools.commons.extensions.getFileKey
|
import com.simplemobiletools.commons.extensions.getFileKey
|
||||||
import com.simplemobiletools.gallery.pro.R
|
import com.simplemobiletools.gallery.pro.R
|
||||||
|
import com.simplemobiletools.gallery.pro.extensions.realScreenSize
|
||||||
import kotlinx.android.synthetic.main.portrait_photo_item.view.*
|
import kotlinx.android.synthetic.main.portrait_photo_item.view.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class PortraitPhotosAdapter(val context: Context, val photos: ArrayList<String>, val itemClick: (Int) -> Unit) : RecyclerView.Adapter<PortraitPhotosAdapter.ViewHolder>() {
|
class PortraitPhotosAdapter(val context: Context, val photos: ArrayList<String>, val itemClick: (Int) -> Unit) :
|
||||||
|
RecyclerView.Adapter<PortraitPhotosAdapter.ViewHolder>() {
|
||||||
|
|
||||||
private var currentSelection = photos.first()
|
private var currentSelection = photos.first()
|
||||||
private var strokeBackground = context.resources.getDrawable(R.drawable.stroke_background)
|
private var strokeBackground = context.resources.getDrawable(R.drawable.stroke_background)
|
||||||
|
private val screenWidth = context.realScreenSize.x
|
||||||
|
private val itemWidth = context.resources.getDimension(R.dimen.portrait_photos_stripe_height) + context.resources.getDimension(R.dimen.one_dp)
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||||
holder.bindView(photos[position])
|
holder.bindView(photos[position], position)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||||
|
@ -34,8 +38,14 @@ class PortraitPhotosAdapter(val context: Context, val photos: ArrayList<String>,
|
||||||
fun getCurrentPhoto() = currentSelection
|
fun getCurrentPhoto() = currentSelection
|
||||||
|
|
||||||
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||||
fun bindView(photo: String): View {
|
fun bindView(photo: String, position: Int): View {
|
||||||
itemView.apply {
|
itemView.apply {
|
||||||
|
if (position == 0) {
|
||||||
|
portrait_photo_item_holder.setPadding(getStripeSidePadding(), 0, 0, 0)
|
||||||
|
} else if (position == photos.size - 1) {
|
||||||
|
portrait_photo_item_holder.setPadding(0, 0, getStripeSidePadding(), 0)
|
||||||
|
}
|
||||||
|
|
||||||
portrait_photo_item_thumbnail.background = if (getCurrentPhoto() == photo) {
|
portrait_photo_item_thumbnail.background = if (getCurrentPhoto() == photo) {
|
||||||
strokeBackground
|
strokeBackground
|
||||||
} else {
|
} else {
|
||||||
|
@ -56,4 +66,6 @@ class PortraitPhotosAdapter(val context: Context, val photos: ArrayList<String>,
|
||||||
return itemView
|
return itemView
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getStripeSidePadding() = screenWidth / 2 - (itemWidth / 2).toInt()
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item>
|
<item>
|
||||||
<shape android:shape="rectangle">
|
<shape android:shape="rectangle">
|
||||||
<stroke android:width="1dp" android:color="#FFFFFFFF"/>
|
<stroke android:width="@dimen/one_dp" android:color="#FFFFFFFF"/>
|
||||||
</shape>
|
</shape>
|
||||||
</item>
|
</item>
|
||||||
</selector>
|
</selector>
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
android:id="@+id/portrait_photo_item_holder"
|
android:id="@+id/portrait_photo_item_holder"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="1dp"
|
android:layout_marginStart="@dimen/one_dp"
|
||||||
android:layout_marginEnd="1dp">
|
android:layout_marginEnd="@dimen/one_dp">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/portrait_photo_item_thumbnail"
|
android:id="@+id/portrait_photo_item_thumbnail"
|
||||||
|
@ -12,6 +12,6 @@
|
||||||
android:layout_height="@dimen/portrait_photos_stripe_height"
|
android:layout_height="@dimen/portrait_photos_stripe_height"
|
||||||
android:background="@drawable/stroke_background"
|
android:background="@drawable/stroke_background"
|
||||||
android:contentDescription="@null"
|
android:contentDescription="@null"
|
||||||
android:padding="1dp" />
|
android:padding="@dimen/one_dp" />
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
Loading…
Reference in a new issue