Commit d8743c6e authored by wanglei's avatar wanglei

[拆包]ui权限弹窗

parent 9f8b9c06
{"v":"5.5.7","fr":60,"ip":0,"op":60,"w":640,"h":140,"nm":"合成 1","ddd":0,"assets":[{"id":"image_0","w":157,"h":175,"u":"images/","p":"img_0.png","e":0},{"id":"image_1","w":86,"h":50,"u":"images/","p":"img_1.png","e":0},{"id":"image_2","w":540,"h":114,"u":"images/","p":"img_2.png","e":0}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"bu.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[518,94.5,0],"to":[5.917,0,0],"ti":[-5.917,0,0]},{"t":30,"s":[553.5,94.5,0]}],"ix":2},"a":{"a":0,"k":[78.5,87.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"on.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":22,"s":[0]},{"t":31,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[502.25,57.5,0],"ix":2},"a":{"a":0,"k":[43,25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"qx2.png","cl":"png","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[320,57,0],"ix":2},"a":{"a":0,"k":[270,57,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
...@@ -5,12 +5,15 @@ import android.view.Gravity ...@@ -5,12 +5,15 @@ import android.view.Gravity
import android.view.LayoutInflater import android.view.LayoutInflater
import android.widget.LinearLayout import android.widget.LinearLayout
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.graphics.toColorInt
import com.base.appzxhy.R import com.base.appzxhy.R
import com.base.appzxhy.base.BaseActivity import com.base.appzxhy.base.BaseActivity
import com.base.appzxhy.base.jumpAction import com.base.appzxhy.base.jumpAction
import com.base.appzxhy.databinding.DialogStorageBinding import com.base.appzxhy.databinding.DialogStorageBinding
import com.base.appzxhy.utils.PermissionUtils.checkStorePermission import com.base.appzxhy.utils.PermissionUtils.checkStorePermission
import com.base.appzxhy.utils.PermissionUtils.requestStoragePermission import com.base.appzxhy.utils.PermissionUtils.requestStoragePermission
import com.base.appzxhy.utils.SpannableUtils.highlightText
fun Activity.permissionStorageJump(key: String) { fun Activity.permissionStorageJump(key: String) {
...@@ -46,21 +49,32 @@ class StoragePermissionDialog( ...@@ -46,21 +49,32 @@ class StoragePermissionDialog(
fun showDialog() { fun showDialog() {
dialog.setView(binding.root) dialog.setView(binding.root)
dialog.setCanceledOnTouchOutside(true) dialog.setCanceledOnTouchOutside(false)
dialog.show() dialog.show()
val params = dialog.window?.attributes val params = dialog.window?.attributes
params?.width = LinearLayout.LayoutParams.MATCH_PARENT params?.width = activity.resources.getDimensionPixelSize(R.dimen.dp_316)
params?.height = LinearLayout.LayoutParams.WRAP_CONTENT params?.height = ConstraintLayout.LayoutParams.WRAP_CONTENT
params?.gravity = Gravity.BOTTOM params?.gravity = Gravity.CENTER
dialog.window?.attributes = params dialog.window?.attributes = params
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent) dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
val appName = activity.getString(R.string.app_name) val appName = activity.getString(R.string.app_name)
binding.tvContent.text = activity.getString(R.string.storage_permission_content, appName) binding.tvContent.text =
highlightText(activity.getString(R.string.storage_permission_content, appName), appName, "#2DD29E".toColorInt())
binding.tvOpenSettings.setOnClickListener { // binding.lottieAnimationView.let {
// it.imageAssetsFolder = "permission_sc/images"
// it.setAnimation("permission_sc/data.json")
// it.loop(true)
// it.playAnimation()
// }
binding.tvDeny.setOnClickListener {
dialog.dismiss()
}
binding.tvAllow.setOnClickListener {
dialog.dismiss() dialog.dismiss()
action?.invoke() action?.invoke()
} }
......
...@@ -81,4 +81,8 @@ class LanguageActivity : BaseActivity<ActivityLanguageBinding>(ActivityLanguageB ...@@ -81,4 +81,8 @@ class LanguageActivity : BaseActivity<ActivityLanguageBinding>(ActivityLanguageB
} }
} }
override fun handleBackCallBack() {
binding.llNext.callOnClick()
}
} }
\ No newline at end of file
...@@ -91,7 +91,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding ...@@ -91,7 +91,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
} }
viewModel.onTick = { s, t, p -> viewModel.onTick = { s, t, p ->
Log.e(TAG, "onTick $s $t") Log.e(TAG, "onTick $s $t")
binding.progressBar.setProgress(p.toInt(), true) binding.progressBar.setProgress(p.toInt(), false)
} }
} }
......
package com.base.appzxhy.utils
import android.graphics.Color
import android.text.SpannableString
import android.text.style.ForegroundColorSpan
object SpannableUtils {
fun highlightText(fullText: String, targetText: String, color: Int = Color.RED): SpannableString {
val spannableString = SpannableString(fullText)
val startIndex = fullText.indexOf(targetText)
if (startIndex != -1) { // 确保子串存在
val endIndex = startIndex + targetText.length
spannableString.setSpan(
ForegroundColorSpan(color),
startIndex,
endIndex,
SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE
)
}
return spannableString
}
}
\ No newline at end of file
...@@ -2,5 +2,9 @@ ...@@ -2,5 +2,9 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorDisEnable" /> <solid android:color="@color/colorDisEnable" />
<stroke
android:width="@dimen/dp_1"
android:color="#2DD29E" />
<corners android:radius="50dp" /> <corners android:radius="50dp" />
</shape> </shape>
\ No newline at end of file
...@@ -3,5 +3,5 @@ ...@@ -3,5 +3,5 @@
android:shape="rectangle"> android:shape="rectangle">
<corners android:radius="37dp" /> <corners android:radius="37dp" />
<solid android:color="@android:color/transparent" /> <solid android:color="@android:color/transparent" />
<stroke android:width="1dp" android:color="@color/color_ebebeb" /> <stroke android:width="1dp" android:color="#ffebebeb" />
</shape> </shape>
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
android:id="@+id/cl_top" android:id="@+id/cl_top"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/colorPrimary"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<FrameLayout <FrameLayout
...@@ -27,14 +26,15 @@ ...@@ -27,14 +26,15 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8" android:layout_marginStart="@dimen/dp_8"
android:padding="@dimen/dp_8" android:padding="@dimen/dp_8"
android:src="@drawable/icon_return_w" /> android:src="@drawable/icon_back" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/dp_66"
android:text="@string/large_file_clean" android:text="@string/large_file_clean"
android:textColor="@color/white" android:textColor="@color/black"
android:textSize="20sp" android:textSize="20sp"
android:textStyle="bold" /> android:textStyle="bold" />
...@@ -64,7 +64,6 @@ ...@@ -64,7 +64,6 @@
android:id="@+id/iv_type" android:id="@+id/iv_type"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/bg_filter_large_type"
android:src="@drawable/bg_filter_large_type" /> android:src="@drawable/bg_filter_large_type" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
...@@ -205,7 +204,7 @@ ...@@ -205,7 +204,7 @@
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="@string/delete" android:text="@string/delete"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@color/white" android:textColor="#2DD29E"
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent" /> app:layout_constraintBottom_toBottomOf="parent" />
......
...@@ -3,16 +3,16 @@ ...@@ -3,16 +3,16 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/white_background_top" android:background="@drawable/bg_ffffff_24">
android:paddingTop="24dp"
android:paddingBottom="40dp">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title" android:id="@+id/tv_title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp" android:layout_marginHorizontal="24dp"
android:text="@string/storage_permission_title" android:layout_marginTop="@dimen/dp_20"
android:gravity="center"
android:text="@string/permission_request"
android:textColor="@color/color_1a1a1a" android:textColor="@color/color_1a1a1a"
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold" android:textStyle="bold"
...@@ -22,38 +22,63 @@ ...@@ -22,38 +22,63 @@
android:id="@+id/tvContent" android:id="@+id/tvContent"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp" android:layout_marginHorizontal="@dimen/dp_12"
android:layout_marginTop="8dp" android:layout_marginTop="@dimen/dp_24"
android:gravity="center"
android:text="@string/storage_permission_content" android:text="@string/storage_permission_content"
android:textColor="@color/color_666666" android:textColor="#A0A0A0"
android:textSize="16sp" android:textSize="@dimen/sp_14"
app:layout_constraintTop_toBottomOf="@id/tv_title" /> app:layout_constraintTop_toBottomOf="@id/tv_title" />
<androidx.appcompat.widget.AppCompatImageView <com.airbnb.lottie.LottieAnimationView
android:id="@+id/iv_permission" android:id="@+id/lottieAnimationView"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp" android:layout_marginHorizontal="15dp"
android:layout_marginTop="12dp" android:layout_marginTop="@dimen/dp_8"
android:adjustViewBounds="true"
android:src="@drawable/img_quanxian_pop"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvContent" /> app:layout_constraintTop_toBottomOf="@id/tvContent"
app:lottie_autoPlay="true"
app:lottie_fileName="permission_sc/data.json"
app:lottie_imageAssetsFolder="permission_sc/images"
app:lottie_loop="true" />
<androidx.appcompat.widget.AppCompatTextView <LinearLayout
android:id="@+id/tvOpenSettings"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="30dp" android:layout_marginHorizontal="@dimen/dp_24"
android:layout_marginTop="30dp" android:layout_marginTop="@dimen/dp_8"
android:background="@drawable/bg_btn_50" android:layout_marginBottom="@dimen/dp_26"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/lottieAnimationView">
<TextView
android:id="@+id/tvDeny"
android:layout_width="0dp"
android:layout_height="@dimen/dp_42"
android:layout_weight="1"
android:background="@drawable/bg_enable_no_50"
android:gravity="center"
android:text="@string/deny"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/sp_16" />
<TextView
android:id="@+id/tvAllow"
android:layout_width="0dp"
android:layout_height="@dimen/dp_42"
android:layout_marginStart="@dimen/dp_12"
android:layout_weight="1"
android:background="@drawable/bg_enable_50"
android:gravity="center" android:gravity="center"
android:paddingVertical="12dp" android:text="@string/allow"
android:text="@string/open_settings"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="18sp" android:textSize="@dimen/sp_16" />
android:textStyle="bold"
app:layout_constraintTop_toBottomOf="@id/iv_permission" /> </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<color name="white">#FFFFFFFF</color> <color name="white">#FFFFFFFF</color>
<color name="transparent">#00000000</color> <color name="transparent">#00000000</color>
<color name="colorPrimary">#2DD29E</color> <color name="colorPrimary">#2DD29E</color>
<color name="colorDisEnable">#FF7DB9FF</color> <color name="colorDisEnable">#F0FFFA</color>
<color name="color_66000000">#66000000</color> <color name="color_66000000">#66000000</color>
<color name="color_00fac8">#00FAC8</color> <color name="color_00fac8">#00FAC8</color>
......
...@@ -58,4 +58,7 @@ ...@@ -58,4 +58,7 @@
<dimen name="sp_11">11sp</dimen> <dimen name="sp_11">11sp</dimen>
<dimen name="dp_112">112dp</dimen> <dimen name="dp_112">112dp</dimen>
<dimen name="dp_66">66dp</dimen> <dimen name="dp_66">66dp</dimen>
<dimen name="dp_130">130dp</dimen>
<dimen name="dp_42">42dp</dimen>
<dimen name="dp_316">316dp</dimen>
</resources> </resources>
\ No newline at end of file
...@@ -24,8 +24,7 @@ Please rest assured that we will handle your information in strict accordance wi ...@@ -24,8 +24,7 @@ Please rest assured that we will handle your information in strict accordance wi
<string name="continue_">Continue</string> <string name="continue_">Continue</string>
<string name="open_settings">Open Settings</string> <string name="open_settings">Open Settings</string>
<string name="storage_permission_title">Need to obtain storage permissions</string> <string name="storage_permission_title">Need to obtain storage permissions</string>
<string name="storage_permission_content">To ensure proper functionality,please allow %s to access all files on your device.</string> <string name="storage_permission_content">Allow %s to access All Files Access permission to manage files of your device?</string>
<string name="file_recovery">File Recovery</string> <string name="file_recovery">File Recovery</string>
<string name="junk_clean">Junk Clean</string> <string name="junk_clean">Junk Clean</string>
...@@ -210,6 +209,9 @@ Please rest assured that we will handle your information in strict accordance wi ...@@ -210,6 +209,9 @@ Please rest assured that we will handle your information in strict accordance wi
<string name="electric_current">Electric current</string> <string name="electric_current">Electric current</string>
<string name="real_time_current">Real-time current</string> <string name="real_time_current">Real-time current</string>
<string name="average_current">Average current</string> <string name="average_current">Average current</string>
<string name="permission_request">Permission request</string>
<string name="deny">Deny</string>
<string name="allow">Allow</string>
</resources> </resources>
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