Commit 894540ad authored by wanglei's avatar wanglei

...ui

parent 52c2c6f8
......@@ -4,15 +4,23 @@ import android.annotation.SuppressLint
import android.graphics.BitmapFactory
import android.graphics.Color
import android.view.View
import android.widget.PopupWindow
import android.widget.Toast
import androidx.activity.addCallback
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import com.base.datarecovery.R
import com.base.datarecovery.adapter.FileMediaColumnsAdapter
import com.base.datarecovery.adapter.RecoveryFilterAdapter
import com.base.datarecovery.bean.ConstObject
import com.base.datarecovery.bean.FolderBean
import com.base.datarecovery.bean.RecoveryBean
import com.base.datarecovery.bean.RecoveryFilterBean
import com.base.datarecovery.databinding.ActivityFileRecoveryBinding
import com.base.datarecovery.help.BaseActivity
import com.base.datarecovery.help.KotlinExt.toFormatTime
import com.base.datarecovery.utils.BarUtils
import com.base.datarecovery.view.PopupWindowViews.showRecoveryFilterPopupWindow
import com.google.gson.Gson
import java.io.File
......@@ -25,6 +33,28 @@ class FileRecoveryActivity : BaseActivity<ActivityFileRecoveryBinding>() {
private var folderBean: FolderBean? = null
private lateinit var adapter: FileMediaColumnsAdapter
private lateinit var filterAdapter: RecoveryFilterAdapter
private val dateFilter = arrayListOf(
RecoveryFilterBean("All", "Size", true),
RecoveryFilterBean("With 1 month", "Date"),
RecoveryFilterBean("With 6 months", "Date"),
RecoveryFilterBean("With 24 months", "Date"),
)
private var sizeFilter = arrayListOf(
RecoveryFilterBean("All", "Size", true),
RecoveryFilterBean("0 - 1 M", "Size"),
RecoveryFilterBean("1 - 5 M", "Size"),
RecoveryFilterBean("> 5 M", "Size"),
)
private val layoutFilter = arrayListOf(
RecoveryFilterBean("2 columns", "Layout", true),
RecoveryFilterBean("3 columns", "Layout"),
RecoveryFilterBean("4 columns", "Layout"),
)
@SuppressLint("SetTextI18n")
override fun initView() {
......@@ -66,12 +96,19 @@ class FileRecoveryActivity : BaseActivity<ActivityFileRecoveryBinding>() {
})
binding.rv.adapter = adapter
filterAdapter = RecoveryFilterAdapter { bean ->
filterDismiss(bean)
}
binding.rvFilter.adapter = filterAdapter
initData()
}
override fun initListener() {
binding.llFilter.setOnClickListener {
filterDismiss()
}
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
......@@ -85,8 +122,72 @@ class FileRecoveryActivity : BaseActivity<ActivityFileRecoveryBinding>() {
binding.ivSelectAll.isSelected = !binding.ivSelectAll.isSelected
adapter.toggleAllSelect(binding.ivSelectAll.isSelected)
}
binding.llDate.setOnClickListener {
showFilter(it.id)
}
binding.llSize.setOnClickListener {
showFilter(it.id)
}
binding.llLayout.setOnClickListener {
showFilter(it.id)
}
}
private fun showFilter(filter: Int) {
if (!binding.llFilter.isVisible) {
binding.llFilter.isVisible = true
binding.clTop.background = ContextCompat.getDrawable(this, R.drawable.bg_e7ecff_edf5ff)
}
if (filter == R.id.ll_date) {
binding.ivDate.setImageResource(R.mipmap.zhankai)
filterAdapter.setData(dateFilter)
} else {
binding.ivDate.setImageResource(R.mipmap.shouqi)
}
if (filter == R.id.ll_size) {
binding.ivSize.setImageResource(R.mipmap.zhankai)
filterAdapter.setData(sizeFilter)
} else {
binding.ivSize.setImageResource(R.mipmap.shouqi)
}
if (filter == R.id.ll_layout) {
binding.ivLayout.setImageResource(R.mipmap.zhankai)
filterAdapter.setData(layoutFilter)
} else {
binding.ivLayout.setImageResource(R.mipmap.shouqi)
}
}
private fun filterDismiss(recoveryFilterBean: RecoveryFilterBean? = null) {
binding.llFilter.isVisible = false
binding.clTop.background = ContextCompat.getDrawable(this, R.drawable.bg_e7ecff_edf5ff_blr15)
binding.ivDate.setImageResource(R.mipmap.shouqi)
binding.ivSize.setImageResource(R.mipmap.shouqi)
binding.ivLayout.setImageResource(R.mipmap.shouqi)
recoveryFilterBean?.let { bean ->
if (bean.type == "Date") {
dateFilter.find { it.isSelect }?.isSelect = false
dateFilter.find { it == bean }?.isSelect = true
return
}
if (bean.type == "Size") {
sizeFilter.find { it.isSelect }?.isSelect = false
sizeFilter.find { it == bean }?.isSelect = true
return
}
if (bean.type == "Layout") {
layoutFilter.find { it.isSelect }?.isSelect = false
layoutFilter.find { it == bean }?.isSelect = true
}
}
}
private fun initData() {
......
package com.base.datarecovery.adapter
import android.annotation.SuppressLint
import android.view.View
import android.view.ViewGroup
import androidx.annotation.Dimension
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.datarecovery.R
import com.base.datarecovery.bean.RecoveryFilterBean
import com.base.datarecovery.databinding.ItemRecoveryFilterBinding
import com.base.datarecovery.view.XmlEx.inflate
class RecoveryFilterAdapter(
val click: (bean: RecoveryFilterBean) -> Unit
) : RecyclerView.Adapter<RecoveryFilterAdapter.YYDS>() {
private val beanList = arrayListOf<RecoveryFilterBean>()
inner class YYDS(view: View) : ViewHolder(view)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): YYDS {
return YYDS(R.layout.item_recovery_filter.inflate(parent))
}
override fun getItemCount(): Int {
return beanList.size
}
override fun onBindViewHolder(holder: YYDS, position: Int) {
val binding = ItemRecoveryFilterBinding.bind(holder.itemView)
val bean = beanList[position]
val context = holder.itemView.context
binding.tv.text = bean.tittle
binding.iv.isVisible = bean.isSelect
if (bean.isSelect) {
binding.tv.setTextColor(ContextCompat.getColor(context, R.color.black))
binding.tv.setTextSize(Dimension.SP, 18f)
} else {
binding.tv.setTextColor(ContextCompat.getColor(context, R.color.color_747474))
binding.tv.setTextSize(Dimension.SP, 16f)
}
binding.root.setOnClickListener {
click.invoke(bean)
}
}
@SuppressLint("NotifyDataSetChanged")
fun setData(list: List<RecoveryFilterBean>) {
beanList.clear()
beanList.addAll(list)
notifyDataSetChanged()
}
}
\ No newline at end of file
package com.base.datarecovery.bean
class RecoveryFilterBean(
val tittle: String = "ALL",
var type: String ,
var isSelect: Boolean = false,
)
\ No newline at end of file
package com.base.datarecovery.view
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.view.View
import android.widget.FrameLayout
import android.widget.PopupWindow
import androidx.recyclerview.widget.RecyclerView.Adapter
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.datarecovery.R
import com.base.datarecovery.adapter.RecoveryFilterAdapter
import com.base.datarecovery.bean.RecoveryFilterBean
import com.base.datarecovery.databinding.PopupwindowRecoveryFilterBinding
import com.base.datarecovery.view.XmlEx.inflate
object PopupWindowViews {
fun showRecoveryFilterPopupWindow(
view: View,
list: List<RecoveryFilterBean>,
click: (bean: RecoveryFilterBean) -> Unit,
dismiss: () -> Unit
): PopupWindow {
val popupWindowView = R.layout.popupwindow_recovery_filter.inflate(view.context)
val popupWindowHeight = FrameLayout.LayoutParams.WRAP_CONTENT
val binding = PopupwindowRecoveryFilterBinding.bind(popupWindowView)
val popupWindow = PopupWindow(popupWindowView, view.width, popupWindowHeight, true)
popupWindow.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
popupWindow.isOutsideTouchable = false
popupWindow.isTouchable = true
val adapter = RecoveryFilterAdapter {
click.invoke(it)
popupWindow.dismiss()
}
binding.rv.adapter = adapter
adapter.setData(list)
popupWindow.showAsDropDown(view)
popupWindow.setOnDismissListener {
dismiss.invoke()
}
return popupWindow
}
}
\ No newline at end of file
package com.base.datarecovery.view
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
......@@ -8,4 +9,8 @@ object XmlEx {
fun Int.inflate(parent: ViewGroup, attachToRoot: Boolean = false): View {
return LayoutInflater.from(parent.context).inflate(this, parent, attachToRoot)
}
fun Int.inflate(context: Context, attachToRoot: Boolean = false): View {
return LayoutInflater.from(context).inflate(this, null, attachToRoot)
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:endColor="#EDF5FF"
android:startColor="#E7ECFF" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
......@@ -8,7 +8,9 @@
android:orientation="vertical"
tools:context=".activity.FileRecoveryActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_top"
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="@drawable/bg_e7ecff_edf5ff_blr15"
......@@ -87,11 +89,12 @@
tools:ignore="HardcodedText" />
<ImageView
android:id="@+id/iv_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="5dp"
android:src="@mipmap/xiala"
android:src="@mipmap/shouqi"
tools:ignore="ContentDescription" />
</LinearLayout>
......@@ -115,11 +118,12 @@
tools:ignore="HardcodedText" />
<ImageView
android:id="@+id/iv_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="5dp"
android:src="@mipmap/xiala"
android:src="@mipmap/shouqi"
tools:ignore="ContentDescription" />
</LinearLayout>
......@@ -143,11 +147,12 @@
tools:ignore="HardcodedText" />
<ImageView
android:id="@+id/iv_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="5dp"
android:src="@mipmap/xiala"
android:src="@mipmap/shouqi"
tools:ignore="ContentDescription" />
</LinearLayout>
......@@ -156,47 +161,49 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:background="@color/white"
android:orientation="horizontal"
android:paddingTop="20dp"
android:paddingBottom="10dp"
app:layout_scrollFlags="scroll|enterAlways">
<ImageView
android:id="@+id/iv_select_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@drawable/b_circle_selector"
tools:ignore="ContentDescription" />
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/cl_top">
<TextView
android:layout_width="0dp"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="8dp"
android:layout_weight="1"
android:text="Select all"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:src="@mipmap/qiehuan"
tools:ignore="ContentDescription" />
</LinearLayout>
android:layout_marginHorizontal="16dp"
android:background="@color/white"
android:orientation="horizontal"
android:paddingTop="20dp"
android:paddingBottom="10dp"
app:layout_scrollFlags="scroll|enterAlways">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_select_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@drawable/b_circle_selector"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="8dp"
android:layout_weight="1"
android:text="Select all"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:src="@mipmap/qiehuan"
tools:ignore="ContentDescription" />
</LinearLayout>
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
......@@ -270,4 +277,40 @@
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</LinearLayout>
\ No newline at end of file
<FrameLayout
android:id="@+id/ll_filter"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="#80000000"
android:orientation="vertical"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/cl_top">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_e7ecff_edf5ff_blr15">
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_gravity="top"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="2dp"
android:background="#D4D4D4" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_filter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_recovery_filter" />
</FrameLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="6dp"
android:orientation="horizontal"
tools:ignore="UseCompoundDrawables">
<TextView
android:id="@+id/tv"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:gravity="center_vertical"
android:textSize="16sp"
android:textStyle="bold"
tools:text="All" />
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@mipmap/gxuan"
tools:ignore="ContentDescription" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_e7ecff_edf5ff_blr15">
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_gravity="top"
android:layout_marginHorizontal="24dp"
android:background="#D4D4D4" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_recovery_filter" />
</FrameLayout>
\ No newline at end of file
......@@ -2,4 +2,5 @@
<resources>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="color_747474">#747474</color>
</resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment