mark the currently selected filter with a white stroke

This commit is contained in:
tibbi 2018-07-22 22:17:30 +02:00
parent 1112d5f19b
commit e17aa8b4b8
5 changed files with 50 additions and 12 deletions

View file

@ -286,7 +286,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
} }
val filterItems = filterThumbnailsManager.processThumbs() val filterItems = filterThumbnailsManager.processThumbs()
val adapter = FiltersAdapter(filterItems) { val adapter = FiltersAdapter(applicationContext, filterItems) {
val newBitmap = Bitmap.createBitmap(shownBitmap) val newBitmap = Bitmap.createBitmap(shownBitmap)
default_image_view.setImageBitmap(it.filter.processFilter(newBitmap)) default_image_view.setImageBitmap(it.filter.processFilter(newBitmap))
} }

View file

@ -1,35 +1,57 @@
package com.simplemobiletools.gallery.adapters package com.simplemobiletools.gallery.adapters
import android.content.Context
import android.graphics.drawable.Drawable
import android.support.v7.widget.RecyclerView import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.simplemobiletools.gallery.R import com.simplemobiletools.gallery.R
import com.simplemobiletools.gallery.interfaces.FilterAdapterListener
import com.simplemobiletools.gallery.models.FilterItem import com.simplemobiletools.gallery.models.FilterItem
import kotlinx.android.synthetic.main.editor_filter_item.view.* import kotlinx.android.synthetic.main.editor_filter_item.view.*
import java.util.* import java.util.*
class FiltersAdapter(val filterItems: ArrayList<FilterItem>, val itemClick: (FilterItem) -> Unit) : RecyclerView.Adapter<FiltersAdapter.ViewHolder>() { class FiltersAdapter(val context: Context, val filterItems: ArrayList<FilterItem>, val itemClick: (FilterItem) -> Unit) : RecyclerView.Adapter<FiltersAdapter.ViewHolder>(),
FilterAdapterListener {
private var currentSelection = filterItems.first()
private var strokeBackground = context.resources.getDrawable(R.drawable.stroke_background)
override fun onBindViewHolder(holder: ViewHolder, position: Int) { override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bindView(filterItems[position], itemClick) holder.bindView(filterItems[position], strokeBackground)
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.editor_filter_item, parent, false) val view = LayoutInflater.from(parent.context).inflate(R.layout.editor_filter_item, parent, false)
return ViewHolder(view) return ViewHolder(view, this)
} }
override fun getItemCount() = filterItems.size override fun getItemCount() = filterItems.size
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { override fun getCurrentFilter() = currentSelection
fun bindView(filterItem: FilterItem, itemClick: (FilterItem) -> Unit): View {
override fun setCurrentFilter(filterItem: FilterItem) {
if (currentSelection != filterItem) {
currentSelection = filterItem
notifyDataSetChanged()
itemClick.invoke(filterItem)
}
}
class ViewHolder(view: View, val filterAdapterListener: FilterAdapterListener) : RecyclerView.ViewHolder(view) {
fun bindView(filterItem: FilterItem, strokeBackground: Drawable): View {
itemView.apply { itemView.apply {
editor_filter_item_label.text = filterItem.filter.name editor_filter_item_label.text = filterItem.filter.name
editor_filter_item_thumbnail.setImageBitmap(filterItem.bitmap) editor_filter_item_thumbnail.setImageBitmap(filterItem.bitmap)
editor_filter_item_thumbnail.background = if (filterAdapterListener.getCurrentFilter() == filterItem) {
strokeBackground
} else {
null
}
setOnClickListener { setOnClickListener {
itemClick.invoke(filterItem) filterAdapterListener.setCurrentFilter(filterItem)
} }
} }
return itemView return itemView

View file

@ -0,0 +1,9 @@
package com.simplemobiletools.gallery.interfaces
import com.simplemobiletools.gallery.models.FilterItem
interface FilterAdapterListener {
fun getCurrentFilter(): FilterItem
fun setCurrentFilter(filterItem: FilterItem)
}

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#FFFFFFFF"/>
</shape>
</item>
</selector>

View file

@ -4,16 +4,15 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/editor_filter_item_holder" android:id="@+id/editor_filter_item_holder"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:paddingLeft="@dimen/tiny_margin"
android:paddingRight="@dimen/tiny_margin"
android:paddingTop="@dimen/tiny_margin">
<ImageView <ImageView
android:id="@+id/editor_filter_item_thumbnail" android:id="@+id/editor_filter_item_thumbnail"
android:layout_width="@dimen/bottom_filters_thumbnail_height" android:layout_width="@dimen/bottom_filters_thumbnail_height"
android:layout_height="@dimen/bottom_filters_thumbnail_height" android:layout_height="@dimen/bottom_filters_thumbnail_height"
android:layout_above="@+id/editor_filter_item_label"/> android:layout_above="@+id/editor_filter_item_label"
android:background="@drawable/stroke_background"
android:padding="1dp"/>
<TextView <TextView
android:id="@+id/editor_filter_item_label" android:id="@+id/editor_filter_item_label"