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" />