Commit 41821fcb authored by wanglei's avatar wanglei

...ui

parent 27a61480
......@@ -22,11 +22,11 @@ class PrivacySpaceActivity : BaseActivity<ActivityPrivacySpaceBinding>() {
ActivityPrivacySpaceBinding.inflate(layoutInflater)
}
private val photosFragment: PrivacyPageFragment by lazy {
PrivacyPageFragment()
PrivacyPageFragment("Photos")
}
private val videosFragment: PrivacyPageFragment by lazy {
PrivacyPageFragment()
PrivacyPageFragment("Videos")
}
private val fragments by lazy {
mutableListOf(photosFragment, videosFragment)
......
package com.base.datarecovery.adapter
import android.annotation.SuppressLint
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.datarecovery.R
import com.base.datarecovery.databinding.ItemMediaGridBinding
import com.base.datarecovery.view.XmlEx.inflate
import com.bumptech.glide.Glide
class FileGridAdapter : RecyclerView.Adapter<FileGridAdapter.FFF>() {
private val beanList = arrayListOf<String>()
inner class FFF(view: View) : ViewHolder(view)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FFF {
return FFF(R.layout.item_media_grid.inflate(parent))
}
override fun getItemCount(): Int {
return beanList.size
}
override fun onBindViewHolder(holder: FFF, position: Int) {
val binding = ItemMediaGridBinding.bind(holder.itemView)
val context = holder.itemView.context
Glide.with(context).load(beanList[position]).centerCrop().into(binding.iv)
}
@SuppressLint("NotifyDataSetChanged")
fun setData(list: List<String>) {
beanList.clear()
beanList.addAll(list)
notifyDataSetChanged()
}
}
\ No newline at end of file
package com.base.datarecovery.fragment
import android.view.View
import androidx.lifecycle.lifecycleScope
import com.base.datarecovery.adapter.FileGridAdapter
import com.base.datarecovery.databinding.FragmentPrivacyPageBinding
import com.base.datarecovery.help.BaseFragment
import com.base.datarecovery.help.FileHelp.loadFileByFilter
import com.base.datarecovery.view.DialogViews.showImageImportDialog
import java.io.File
class PrivacyPageFragment : BaseFragment<FragmentPrivacyPageBinding>() {
class PrivacyPageFragment(
val type: String
) : BaseFragment<FragmentPrivacyPageBinding>() {
private val TAG = "PrivacyPageFragment"
override val binding: FragmentPrivacyPageBinding by lazy {
FragmentPrivacyPageBinding.inflate(layoutInflater)
}
private lateinit var adapter: FileGridAdapter
override fun setView() {
adapter = FileGridAdapter()
binding.rv.adapter = adapter
initData()
}
override fun setListener() {
arrayOf(binding.ivAdd, binding.ivAddEmpty).forEach {
it.setOnClickListener {
requireContext().showImageImportDialog()
}
}
}
private fun initData() {
val dir = if (type == "Photos") {
File(requireContext().filesDir, "photos")
} else {
File(requireContext().filesDir, "videos")
}
if (!dir.exists()) {
dir.mkdirs()
}
val list = arrayListOf<String>()
lifecycleScope.loadFileByFilter(folder = dir,
filter = { true },
onDo = { list.add(it.absolutePath) },
onFinish = {
if (list.isNotEmpty()) {
binding.flEmpty.visibility = View.GONE
binding.ivAdd.visibility = View.VISIBLE
binding.tvManager.visibility = View.VISIBLE
adapter.setData(list)
}
})
}
}
\ No newline at end of file
......@@ -18,10 +18,10 @@ object FileHelp {
private val TAG = "FileHelp"
fun CoroutineScope.loadFileByFilter(
mutableSharedFlow: MutableSharedFlow<String>,
mutableSharedFlow: MutableSharedFlow<String>? = null,
folder: File,
filter: (file: File) -> Boolean,
onDo: ((file: File) -> Unit)?,
onDo: ((file: File) -> Unit)? = null,
onFinish: (() -> Unit)? = null
) = launch(Dispatchers.IO) {
......@@ -37,7 +37,7 @@ object FileHelp {
if (flag) {
onDo?.invoke(it)
}
mutableSharedFlow.emit(it.absolutePath)
mutableSharedFlow?.emit(it.absolutePath)
}
}
......@@ -55,7 +55,7 @@ object FileHelp {
if (flag) {
onDo?.invoke(it)
}
mutableSharedFlow.emit(it.absolutePath)
mutableSharedFlow?.emit(it.absolutePath)
}
}
}
......
package com.base.datarecovery.view
import android.annotation.SuppressLint
import android.app.AlertDialog
import android.app.Dialog
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import androidx.lifecycle.LifecycleCoroutineScope
import com.base.datarecovery.R
import com.base.datarecovery.databinding.DialogImageTakeBinding
import com.base.datarecovery.databinding.DialogPermissonOpenBinding
import com.base.datarecovery.databinding.DialogRecoveringBinding
import com.base.datarecovery.utils.LogEx
import com.base.datarecovery.view.DialogViews.showRecoveringDialog
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import kotlinx.coroutines.Dispatchers
......@@ -135,4 +139,19 @@ object DialogViews {
dialog.show()
}
fun Context.showImageImportDialog() {
val binding = DialogImageTakeBinding.inflate(LayoutInflater.from(this))
val dialog = AlertDialog.Builder(this, R.style.CustomAlertDialogStyle).setView(binding.root).create()
dialog.setContentView(binding.root)
dialog.setCanceledOnTouchOutside(true)
dialog.show()
val params = dialog.window?.attributes
params?.gravity = Gravity.BOTTOM
params?.y = 200
dialog.window?.attributes = params
}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="20dp" />
<solid android:color="@color/white" />
</shape>
\ 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:orientation="vertical">
<LinearLayout
android:id="@+id/ll_camera"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="20dp"
android:layout_weight="1"
android:orientation="horizontal"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@mipmap/take"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="20dp"
android:text="Take photo or video"
android:textColor="#181D2C"
android:textSize="17sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_marginHorizontal="18dp"
android:background="#D4D4D4" />
<LinearLayout
android:id="@+id/ll_import"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="20dp"
android:layout_weight="1"
android:orientation="horizontal"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@mipmap/importimage"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="20dp"
android:text="Take photo or video"
android:textColor="#181D2C"
android:textSize="17sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</LinearLayout>
</LinearLayout>
<?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="match_parent"
tools:context=".fragment.PrivacyPageFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
android:layout_marginTop="29dp"
android:orientation="vertical">
<TextView
android:id="@+id/tv_manager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginEnd="16dp"
android:text="Manage"
android:textColor="#3A9BFF"
android:textSize="18sp"
android:visibility="gone"
tools:ignore="HardcodedText" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:visibility="gone"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="4" />
<FrameLayout
android:id="@+id/fl_empty"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@mipmap/kongwenjian"
tools:ignore="ContentDescription" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="No Secret Files"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:text="Tap + belows to add photos and videos"
tools:ignore="HardcodedText" />
<ImageView
android:id="@+id/iv_add_empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="48dp"
android:layout_marginBottom="60dp"
android:src="@mipmap/tianjia"
tools:ignore="ContentDescription" />
</LinearLayout>
</FrameLayout>
</FrameLayout>
</LinearLayout>
<ImageView
android:id="@+id/iv_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginEnd="24dp"
android:layout_marginBottom="80dp"
android:src="@mipmap/tianjia"
android:visibility="gone"
tools:ignore="ContentDescription" />
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView 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="80dp"
android:layout_height="80dp"
android:layout_margin="4dp"
app:cardCornerRadius="5dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="ContentDescription" />
</androidx.cardview.widget.CardView>
\ No newline at end of file
......@@ -6,4 +6,12 @@
</style>
<style name="Theme.DataRecovery" parent="Base.Theme.DataRecovery" />
<style name="CustomAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<!-- 设置对话框的背景 -->
<item name="android:windowBackground">@drawable/bg_ffffff_20</item>
<!-- 设置圆角的半径 -->
<item name="android:backgroundDimEnabled">true</item>
</style>
</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