diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4a9c69d..fb9bf25 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,9 +21,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
-
+ android:theme="@style/Theme.FileRecovery"
tools:targetApi="31">
-
diff --git a/app/src/main/assets/fonts/PingFang Bold_0.ttf b/app/src/main/assets/fonts/PingFang Bold_0.ttf
deleted file mode 100644
index accaf1f..0000000
Binary files a/app/src/main/assets/fonts/PingFang Bold_0.ttf and /dev/null differ
diff --git a/app/src/main/assets/fonts/PingFang Regular_0.ttf b/app/src/main/assets/fonts/PingFang Regular_0.ttf
deleted file mode 100644
index 8790adb..0000000
Binary files a/app/src/main/assets/fonts/PingFang Regular_0.ttf and /dev/null differ
diff --git a/app/src/main/assets/fonts/alimama.ttf b/app/src/main/assets/fonts/alimama.ttf
new file mode 100644
index 0000000..854c844
Binary files /dev/null and b/app/src/main/assets/fonts/alimama.ttf differ
diff --git a/app/src/main/java/com/ux/video/file/filerecovery/main/FullScreenDialogFragment.kt b/app/src/main/java/com/ux/video/file/filerecovery/main/FullScreenDialogFragment.kt
deleted file mode 100644
index 9d7964d..0000000
--- a/app/src/main/java/com/ux/video/file/filerecovery/main/FullScreenDialogFragment.kt
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.ux.video.file.filerecovery.main
-
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.fragment.app.DialogFragment
-import com.ux.video.file.filerecovery.R
-
-
-class FullScreenDialogFragment : DialogFragment() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setStyle(STYLE_NORMAL, R.style.FullScreenDialog)
- }
-
- override fun onStart() {
- super.onStart()
- dialog?.window?.apply {
- setLayout(
- ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT
- )
- setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) // 背景透明叠加
- }
- }
-
- override fun onCreateView(
- inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- return inflater.inflate(R.layout.dialog_fullscreen, container, false)
- }
-}
diff --git a/app/src/main/java/com/ux/video/file/filerecovery/main/MainActivity.kt b/app/src/main/java/com/ux/video/file/filerecovery/main/MainActivity.kt
index bc5389e..dffc5ed 100644
--- a/app/src/main/java/com/ux/video/file/filerecovery/main/MainActivity.kt
+++ b/app/src/main/java/com/ux/video/file/filerecovery/main/MainActivity.kt
@@ -5,6 +5,8 @@ import android.app.Activity
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
+import android.graphics.LinearGradient
+import android.graphics.Shader
import android.os.Build
import android.os.Environment
import android.provider.Settings
@@ -15,6 +17,7 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import androidx.core.view.isVisible
+import com.ux.video.file.filerecovery.R
import com.ux.video.file.filerecovery.base.BaseActivity
import com.ux.video.file.filerecovery.databinding.ActivityMainBinding
import com.ux.video.file.filerecovery.main.ScanSelectTypeActivity
@@ -22,7 +25,7 @@ import com.ux.video.file.filerecovery.utils.ScanManager
class MainActivity : BaseActivity() {
-
+ private var dialogPermission: PermissionDialogFragment? = null
//是否正确引导用户打开所有文件管理权限
private var isRequestPermission = false
private var currentGoType = ScanSelectTypeActivity.Companion.VALUE_PHOTO
@@ -69,19 +72,10 @@ class MainActivity : BaseActivity() {
override fun initData() {
super.initData()
+ initTitleColor()
binding.run {
allow.setOnClickListener {
- try {
- val intent =
- Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION).apply {
- data = "package:${packageName}".toUri()
- }
- startActivity(intent)
- } catch (e: Exception) {
- val intent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)
- startActivity(intent)
- }
- isRequestPermission = true
+
}
layoutPhoto.setOnClickListener {
currentGoType = ScanSelectTypeActivity.Companion.VALUE_PHOTO
@@ -103,7 +97,6 @@ class MainActivity : BaseActivity() {
binding.btnPermission.setOnClickListener {
- binding.layoutPermission.isVisible = true
}
binding.btnScanAllPhoto.setOnClickListener {
@@ -141,12 +134,7 @@ class MainActivity : BaseActivity() {
// ScanManager.scanAllDocuments(root, results)
// ScanRepository.instance.setResults(results)
- startActivity(Intent(this@MainActivity, ScanSelectTypeActivity::class.java).apply {
- putExtra(
- ScanSelectTypeActivity.Companion.KEY_FILE_TYPE,
- ScanSelectTypeActivity.Companion.VALUE_DOCUMENT
- )
- })
+
// startActivity(Intent(this@MainActivity,DocumentsScanResultActivity::class.java))
@@ -160,19 +148,39 @@ class MainActivity : BaseActivity() {
}
}
+ private fun initTitleColor() {
+
+ binding.tvTitle.apply {
+ // 渐变色
+ val width = paint.measureText(text.toString())
+ val shader = LinearGradient(
+ 0f, 0f, width, textSize,
+ intArrayOf(getColor(R.color.color_title_start_color),getColor(R.color.color_title_end_color)),
+ null,
+ Shader.TileMode.CLAMP
+ )
+ paint.shader = shader
+
+ setShadowLayer(2f, 2f, 2f, getColor(R.color.color_title_start_color))
+
+ }
+
+
+ }
override fun onResume() {
super.onResume()
- if(isRequestPermission&&hasAllFilesAccess(this)){
+ if (isRequestPermission && hasAllFilesAccess(this)) {
isRequestPermission = false
ScanManager.showLog("--", "-------onResume")
startScan()
binding.layoutPermission.visibility = View.GONE
}
}
+
private fun intentCheck() {
if (!hasAllFilesAccess(this)) {
- requestPermission(this@MainActivity)
+ requestPermission()
} else {
ScanManager.showLog("--", "-------权限已经授予")
startScan()
@@ -198,9 +206,22 @@ class MainActivity : BaseActivity() {
}
}
- private fun requestPermission(activity: Activity) {
+ private fun requestPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
- binding.layoutPermission.visibility = View.VISIBLE
+ dialogPermission = dialogPermission?: PermissionDialogFragment{
+ try {
+ val intent =
+ Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION).apply {
+ data = "package:${packageName}".toUri()
+ }
+ startActivity(intent)
+ } catch (e: Exception) {
+ val intent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)
+ startActivity(intent)
+ }
+ isRequestPermission = true
+ }
+ dialogPermission?.show(supportFragmentManager,"")
} else {
requestPermissionLauncher.launch(
arrayOf(
diff --git a/app/src/main/java/com/ux/video/file/filerecovery/main/PermissionDialogFragment.kt b/app/src/main/java/com/ux/video/file/filerecovery/main/PermissionDialogFragment.kt
new file mode 100644
index 0000000..fe27c4e
--- /dev/null
+++ b/app/src/main/java/com/ux/video/file/filerecovery/main/PermissionDialogFragment.kt
@@ -0,0 +1,41 @@
+package com.ux.video.file.filerecovery.main
+
+import android.graphics.Color
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.core.graphics.drawable.toDrawable
+import androidx.fragment.app.DialogFragment
+import com.ux.video.file.filerecovery.databinding.DialogPermissionBinding
+
+
+class PermissionDialogFragment(val onClickAllow: () -> Unit) : DialogFragment() {
+
+ private lateinit var binding: DialogPermissionBinding
+ override fun onStart() {
+ super.onStart()
+ dialog?.window?.apply {
+ setLayout(
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT
+ )
+ setBackgroundDrawable(Color.TRANSPARENT.toDrawable())
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ binding = DialogPermissionBinding.inflate(inflater)
+ binding.run {
+ cancel.setOnClickListener { dismiss() }
+ allow.setOnClickListener {
+ onClickAllow()
+ dismiss()
+ }
+ }
+ return binding.root
+ }
+}
diff --git a/app/src/main/java/com/ux/video/file/filerecovery/main/ScanSelectTypeActivity.kt b/app/src/main/java/com/ux/video/file/filerecovery/main/ScanSelectTypeActivity.kt
index b1b0095..6f31bca 100644
--- a/app/src/main/java/com/ux/video/file/filerecovery/main/ScanSelectTypeActivity.kt
+++ b/app/src/main/java/com/ux/video/file/filerecovery/main/ScanSelectTypeActivity.kt
@@ -32,7 +32,7 @@ class ScanSelectTypeActivity : BaseActivity() {
}
override fun initData() {
super.initData()
-
+ binding.imageBack.setOnClickListener { finish() }
binding.scanAllFile.setOnClickListener {
startActivity(Intent(this@ScanSelectTypeActivity, ScanningActivity::class.java).apply {
diff --git a/app/src/main/java/com/ux/video/file/filerecovery/result/ScanningActivity.kt b/app/src/main/java/com/ux/video/file/filerecovery/result/ScanningActivity.kt
index 963100c..9ae5876 100644
--- a/app/src/main/java/com/ux/video/file/filerecovery/result/ScanningActivity.kt
+++ b/app/src/main/java/com/ux/video/file/filerecovery/result/ScanningActivity.kt
@@ -4,8 +4,13 @@ import android.content.Intent
import android.os.Environment
import android.view.LayoutInflater
import androidx.lifecycle.lifecycleScope
+import com.ux.video.file.filerecovery.R
import com.ux.video.file.filerecovery.base.BaseActivity
import com.ux.video.file.filerecovery.databinding.ActivityScanningBinding
+import com.ux.video.file.filerecovery.main.ScanSelectTypeActivity.Companion.VALUE_AUDIO
+import com.ux.video.file.filerecovery.main.ScanSelectTypeActivity.Companion.VALUE_DOCUMENT
+import com.ux.video.file.filerecovery.main.ScanSelectTypeActivity.Companion.VALUE_PHOTO
+import com.ux.video.file.filerecovery.main.ScanSelectTypeActivity.Companion.VALUE_VIDEO
import com.ux.video.file.filerecovery.utils.ScanManager
import com.ux.video.file.filerecovery.utils.ScanRepository
import com.ux.video.file.filerecovery.utils.ScanState
@@ -34,13 +39,64 @@ class ScanningActivity : BaseActivity() {
override fun initData() {
super.initData()
scanType = intent.getIntExtra(KEY_SCAN_TYPE, VALUE_SCAN_TYPE_photo)
+ setSelectType(scanType)
when (scanType) {
VALUE_SCAN_TYPE_photo, VALUE_SCAN_TYPE_video, VALUE_SCAN_TYPE_audio, VALUE_SCAN_TYPE_documents -> scanAll()
VALUE_SCAN_TYPE_deleted_photo, VALUE_SCAN_TYPE_deleted_video, VALUE_SCAN_TYPE_deleted_audio, VALUE_SCAN_TYPE_deleted_documents -> scanDeleted()
}
+ binding.scanProgress.setCenterImage(R.drawable.ic_scan_file)
+ binding.imageViewBack.setOnClickListener { finish() }
}
+ private fun setSelectType(fileType: Int) {
+ binding.run {
+
+ when (fileType) {
+ VALUE_SCAN_TYPE_photo -> {
+ title.text = getString(R.string.photo_title)
+ tvScanDescribe.text = getString(R.string.describe_photos)
+ }
+
+ VALUE_SCAN_TYPE_deleted_photo -> {
+ title.text = getString(R.string.photo_title)
+ tvScanDescribe.text = getString(R.string.describe_delete_photos)
+ }
+
+ VALUE_SCAN_TYPE_video -> {
+ title.text = getString(R.string.video_title)
+ tvScanDescribe.text = getString(R.string.describe_videos)
+ }
+
+ VALUE_SCAN_TYPE_deleted_video -> {
+ title.text = getString(R.string.video_title)
+ tvScanDescribe.text = getString(R.string.describe_delete_videos)
+ }
+
+ VALUE_SCAN_TYPE_audio -> {
+ title.text = getString(R.string.audio_title)
+ tvScanDescribe.text = getString(R.string.describe_audios)
+ }
+
+ VALUE_SCAN_TYPE_deleted_audio -> {
+ title.text = getString(R.string.audio_title)
+ tvScanDescribe.text = getString(R.string.describe_delete_audios)
+ }
+
+ VALUE_SCAN_TYPE_documents -> {
+ title.text = getString(R.string.document_title)
+ tvScanDescribe.text = getString(R.string.describe_documents)
+ }
+
+ VALUE_SCAN_TYPE_deleted_documents -> {
+ title.text = getString(R.string.document_title)
+ tvScanDescribe.text = getString(R.string.describe_delete_documents)
+ }
+ }
+ }
+
+
+ }
private fun scanAll() {
val total = 800
@@ -83,12 +139,12 @@ class ScanningActivity : BaseActivity() {
}
- private fun updateProgress(scanState: ScanState.Progress){
+ private fun updateProgress(scanState: ScanState.Progress) {
val total = 1000
scanState.let {
binding.run {
val percent = (it.scannedCount * 100 / total).coerceAtMost(100)
- scanProgress.progress = percent
+ scanProgress.setProgress(percent)
tvScanCurrentFilePath.text = it.filePath
tvScanCurrentCounts.text = it.scannedCount.toString()
ScanManager.showLog("Scan", it.filePath)
@@ -100,18 +156,20 @@ class ScanningActivity : BaseActivity() {
}
}
- private fun updateComplete(scanState: ScanState.Complete){
- binding.scanProgress.progress = 100
+
+ private fun updateComplete(scanState: ScanState.Complete) {
+ binding.scanProgress.setProgress(100)
scanState.let {
-// when(scanType){
-// VALUE_SCAN_TYPE_photo,VALUE_SCAN_TYPE_deleted_photo->ScanRepository.instance.setPhotoResults(it.result)
-// VALUE_SCAN_TYPE_video,VALUE_SCAN_TYPE_deleted_video->ScanRepository.instance.setVideoResults(it.result)
-// VALUE_SCAN_TYPE_audio,VALUE_SCAN_TYPE_deleted_audio->ScanRepository.instance.setPhotoResults(it.result)
-// VALUE_SCAN_TYPE_documents,VALUE_SCAN_TYPE_deleted_documents->ScanRepository.instance.setPhotoResults(it.result)
-// }
- startActivity(Intent(this@ScanningActivity,ScanResultDisplayActivity::class.java).apply {
- putParcelableArrayListExtra(ScanResultDisplayActivity.KEY_SCAN_RESULT, it.result)
- })
+ startActivity(
+ Intent(
+ this@ScanningActivity,
+ ScanResultDisplayActivity::class.java
+ ).apply {
+ putParcelableArrayListExtra(
+ ScanResultDisplayActivity.KEY_SCAN_RESULT,
+ it.result
+ )
+ })
ScanManager.showLog(
"HiddenScan",
"完成: ${it.result.size}"
diff --git a/app/src/main/java/com/ux/video/file/filerecovery/utils/CircleImageProgressView.kt b/app/src/main/java/com/ux/video/file/filerecovery/utils/CircleImageProgressView.kt
new file mode 100644
index 0000000..d5dba7c
--- /dev/null
+++ b/app/src/main/java/com/ux/video/file/filerecovery/utils/CircleImageProgressView.kt
@@ -0,0 +1,100 @@
+package com.ux.video.file.filerecovery.utils
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.graphics.Bitmap
+import android.graphics.BitmapFactory
+import android.graphics.Canvas
+import android.graphics.Color
+import android.graphics.Paint
+import android.graphics.RectF
+import android.util.AttributeSet
+import android.view.View
+import com.ux.video.file.filerecovery.R
+
+class CircleImageProgressView @JvmOverloads constructor(
+ context: Context, attrs: AttributeSet? = null
+) : View(context, attrs) {
+
+ private val paintBg = Paint(Paint.ANTI_ALIAS_FLAG).apply {
+ style = Paint.Style.STROKE
+ strokeWidth = 20f
+ color = Color.parseColor("#C9DDEF") // 背景浅蓝
+ }
+
+ private val paintProgress = Paint(Paint.ANTI_ALIAS_FLAG).apply {
+ style = Paint.Style.STROKE
+ strokeWidth = 20f
+ color = Color.parseColor("#0014F0")
+ strokeCap = Paint.Cap.ROUND // 圆角进度条
+ }
+
+ private var progress = 0 // 0 - 100
+ private var centerBitmap: Bitmap? = null
+ private var imageScale = 1f
+
+ init {
+ context.theme.obtainStyledAttributes(attrs, R.styleable.CircleImageProgressView, 0, 0).apply {
+ try {
+ imageScale = getFloat(R.styleable.CircleImageProgressView_centerImageScale, 0.5f)
+ } finally {
+ recycle()
+ }
+ }
+ }
+
+ fun setProgress(value: Int) {
+ progress = value.coerceIn(0, 100)
+ invalidate()
+ }
+
+ fun setCenterImage(resId: Int) {
+ centerBitmap = BitmapFactory.decodeResource(resources, resId)
+ invalidate()
+ }
+
+ @SuppressLint("DrawAllocation")
+ override fun onDraw(canvas: Canvas) {
+ super.onDraw(canvas)
+
+ val stroke = paintBg.strokeWidth
+ val rect = RectF(stroke, stroke, width - stroke, height - stroke)
+
+ // 背景圆环
+ canvas.drawArc(rect, 0f, 360f, false, paintBg)
+ // 中心图片
+ centerBitmap?.let {
+// val left = (width - it.width) / 2f
+// val top = (height - it.height) / 2f
+// canvas.drawBitmap(it, left, top, null)
+
+// val desiredSize = width * imageScale
+// val rectDst = RectF(
+// (width - desiredSize) / 2f,
+// (height - desiredSize) / 2f,
+// (width + desiredSize) / 2f,
+// (height + desiredSize) / 2f
+// )
+// canvas.drawBitmap(it, null, rectDst, null)
+
+ val innerRadius = (width / 2f) - stroke // 圆环内半径
+ val left = (width / 2f) - innerRadius
+ val top = (height / 2f) - innerRadius
+ val right = (width / 2f) + innerRadius
+ val bottom = (height / 2f) + innerRadius
+
+ val rectDst = RectF(left, top, right, bottom)
+
+ // 缩放图片填满内圆区域
+// canvas.drawBitmap(it, null, rectDst, null)
+ }
+
+
+
+ // 进度圆弧
+ val sweepAngle = progress * 360f / 100f
+ canvas.drawArc(rect, -90f, sweepAngle, false, paintProgress)
+
+
+ }
+}
diff --git a/app/src/main/java/com/ux/video/file/filerecovery/utils/CustomTextView.kt b/app/src/main/java/com/ux/video/file/filerecovery/utils/CustomTextView.kt
index 7334915..2a365b9 100644
--- a/app/src/main/java/com/ux/video/file/filerecovery/utils/CustomTextView.kt
+++ b/app/src/main/java/com/ux/video/file/filerecovery/utils/CustomTextView.kt
@@ -14,7 +14,7 @@ class CustomTextView @JvmOverloads constructor(
companion object {
private var regular: Typeface? = null
private var bold: Typeface? = null
- private var italic: Typeface? = null
+ private var alimama: Typeface? = null
}
init {
@@ -22,25 +22,32 @@ class CustomTextView @JvmOverloads constructor(
val typedArray = context.obtainStyledAttributes(it, R.styleable.CustomTextView)
val type = typedArray.getInt(R.styleable.CustomTextView_fontType, 0)
typedArray.recycle()
+
+ Typeface.create("sans-serif-light", Typeface.NORMAL) // Roboto Light
+ Typeface.create("sans-serif-thin", Typeface.ITALIC) // Roboto Thin Italic
+ Typeface.create("sans-serif-medium", Typeface.BOLD) // Roboto Medium Bold
+ Typeface.create("sans-serif-condensed", Typeface.NORMAL) // Roboto Condensed
when (type) {
0 -> {
- if (regular == null) {
- regular = Typeface.createFromAsset(context.assets, "fonts/PingFang Regular_0.ttf")
- }
- typeface = regular
+ typeface = Typeface.create(Typeface.DEFAULT, Typeface.NORMAL)
}
1 -> {
- if (bold == null) {
- bold = Typeface.createFromAsset(context.assets, "fonts/PingFang Bold_0.ttf")
- }
- typeface = bold
+
+ typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
+
2 -> {
- if (italic == null) {
- italic = Typeface.createFromAsset(context.assets, "fonts/italic.ttf")
+ if (alimama == null) {
+ alimama = Typeface.createFromAsset(context.assets, "fonts/alimama.ttf")
}
- typeface = italic
+ typeface = alimama
}
+
+ 3 -> {
+ typeface = Typeface.create("sans-serif-medium", Typeface.NORMAL)
+ }
+
+ else -> typeface = Typeface.DEFAULT
}
}
}
diff --git a/app/src/main/res/drawable/bg_dialog_btn_allow_solid_8.xml b/app/src/main/res/drawable/bg_dialog_btn_allow_solid_8.xml
new file mode 100644
index 0000000..3fe8798
--- /dev/null
+++ b/app/src/main/res/drawable/bg_dialog_btn_allow_solid_8.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_dialog_btn_cancel_stoke_8.xml b/app/src/main/res/drawable/bg_dialog_btn_cancel_stoke_8.xml
new file mode 100644
index 0000000..63cb687
--- /dev/null
+++ b/app/src/main/res/drawable/bg_dialog_btn_cancel_stoke_8.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_dialog_permission_white_20.xml b/app/src/main/res/drawable/bg_dialog_permission_white_20.xml
new file mode 100644
index 0000000..eac488e
--- /dev/null
+++ b/app/src/main/res/drawable/bg_dialog_permission_white_20.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_main.png b/app/src/main/res/drawable/bg_main.png
new file mode 100644
index 0000000..1eebf75
Binary files /dev/null and b/app/src/main/res/drawable/bg_main.png differ
diff --git a/app/src/main/res/drawable/black_return.png b/app/src/main/res/drawable/black_return.png
new file mode 100644
index 0000000..723bf13
Binary files /dev/null and b/app/src/main/res/drawable/black_return.png differ
diff --git a/app/src/main/res/drawable/ic_setting.png b/app/src/main/res/drawable/ic_setting.png
index 663ac6a..7d470f0 100644
Binary files a/app/src/main/res/drawable/ic_setting.png and b/app/src/main/res/drawable/ic_setting.png differ
diff --git a/app/src/main/res/drawable/image_main_photo.png b/app/src/main/res/drawable/image_main_photo.png
new file mode 100644
index 0000000..e1dd717
Binary files /dev/null and b/app/src/main/res/drawable/image_main_photo.png differ
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index cf93e47..1dc45fd 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -5,6 +5,7 @@
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:background="@drawable/bg_main"
android:orientation="vertical"
tools:context=".main.MainActivity">
@@ -17,7 +18,7 @@
android:text="@string/app_name"
android:textColor="@color/main_title"
android:textSize="24sp"
- app:fontType="bold"
+ app:fontType="alimama"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -49,11 +50,12 @@
android:layout_height="wrap_content"
android:layout_marginStart="18dp"
android:text="@string/main_title_photo"
- android:textColor="@color/main_title"
+ android:textColor="@color/color_title_blue"
android:textSize="16sp"
app:fontType="bold" />
+
+
@@ -72,9 +81,9 @@
android:layout_width="0dp"
android:layout_height="168dp"
android:layout_marginStart="11dp"
+ android:layout_marginEnd="16dp"
android:background="@drawable/main_type_bg"
android:paddingTop="18dp"
- android:layout_marginEnd="16dp"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toRightOf="@id/layout_photo"
app:layout_constraintRight_toRightOf="parent"
@@ -86,7 +95,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="18dp"
android:text="@string/main_title_video"
- android:textColor="@color/main_title"
+ android:textColor="@color/color_title_blue"
android:textSize="16sp"
app:fontType="bold" />
@@ -147,11 +156,11 @@
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginStart="11dp"
+ android:layout_marginEnd="16dp"
android:background="@drawable/main_type_bg"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="18dp"
- android:layout_marginEnd="16dp"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toRightOf="@id/layout_audio"
app:layout_constraintRight_toRightOf="parent"
@@ -209,11 +218,11 @@
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginStart="11dp"
+ android:layout_marginEnd="16dp"
android:background="@drawable/main_type_bg"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="18dp"
- android:layout_marginEnd="16dp"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toRightOf="@id/layout_recovery"
app:layout_constraintRight_toRightOf="parent"
@@ -282,16 +291,16 @@
+ android:text="@string/app_name" />
+ android:text="Allow" />
diff --git a/app/src/main/res/layout/activity_scan_select_type.xml b/app/src/main/res/layout/activity_scan_select_type.xml
index 55fe15f..e3c214d 100644
--- a/app/src/main/res/layout/activity_scan_select_type.xml
+++ b/app/src/main/res/layout/activity_scan_select_type.xml
@@ -3,6 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
+ android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
@@ -15,16 +16,20 @@
android:gravity="center_vertical">
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:paddingVertical="14dp"
+ android:id="@+id/image_back"
+ android:paddingHorizontal="13dp"
+ android:src="@drawable/black_return" />
diff --git a/app/src/main/res/layout/activity_scanning.xml b/app/src/main/res/layout/activity_scanning.xml
index 00d2a0d..aa4459b 100644
--- a/app/src/main/res/layout/activity_scanning.xml
+++ b/app/src/main/res/layout/activity_scanning.xml
@@ -1,56 +1,124 @@
-
-
+
-
+
-
-
+
+
-
+
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_fullscreen.xml b/app/src/main/res/layout/dialog_fullscreen.xml
deleted file mode 100644
index 1c144de..0000000
--- a/app/src/main/res/layout/dialog_fullscreen.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_permission.xml b/app/src/main/res/layout/dialog_permission.xml
new file mode 100644
index 0000000..e996063
--- /dev/null
+++ b/app/src/main/res/layout/dialog_permission.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/test.xml b/app/src/main/res/layout/test.xml
new file mode 100644
index 0000000..cee2df1
--- /dev/null
+++ b/app/src/main/res/layout/test.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
index 9f0d248..b260f6f 100644
--- a/app/src/main/res/values/attrs.xml
+++ b/app/src/main/res/values/attrs.xml
@@ -4,7 +4,13 @@
-
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index a35de93..e9966b2 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -8,4 +8,10 @@
#000000
#9696A2
#F5F5FA
+ #007AEB
+ #198BF5
+ #6D00F2
+ #9696A2
+
+ #0014F0
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8d81671..7bb2d66 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -26,4 +26,19 @@
Video recovery
Audio recovery
Document recovery
+ Permission is required to access all files
+ File Recovery -All Recovery requires full access to your device storage to search for lost or deleted files.
+ We will never share, upload, or send your data without your permission.
+
+ Cancel
+ Allow
+ Scanning…
+ photos
+ deleted photos
+ videos
+ deleted videos
+ audios
+ deleted audios
+ documents
+ deleted documents
\ No newline at end of file