feat:优化了UI和添加了新的功能:启用了节流点击,添加了评分和分享功能,修复了在某些设备上无法播放的问题。

This commit is contained in:
LUX-Timber 2024-04-23 18:27:50 +08:00
parent b5deee2b9f
commit e21ee88828
20 changed files with 612 additions and 6 deletions

View File

@ -73,5 +73,11 @@ dependencies {
//viewModel初始化用 //viewModel初始化用
implementation(libs.activity.ktx) implementation(libs.activity.ktx)
implementation(libs.fragment.ktx) implementation(libs.fragment.ktx)
// progress bar
implementation(libs.com.akexorcist.progress.bar)
// RxBinding
implementation(libs.jakewharton.rxbinding4)
} }

View File

@ -0,0 +1,23 @@
package com.timber.soft.mylivewallpaper.data
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
import androidx.room.Update
@Dao
interface WallpaperDao {
@Query("select * from wallpaper where isCollect = :collect ")
suspend fun getCollectData(collect: Boolean = true): List<WallpaperData>
@Update
suspend fun updateData(wallpaperData: WallpaperData)
@Insert
suspend fun insertData(wallpaperData: WallpaperData)
@Delete
suspend fun deleteData(wallpaperData: WallpaperData)
}

View File

@ -15,5 +15,5 @@ data class WallpaperData(
val id: Int = 0, val id: Int = 0,
val classId: String? = null, val classId: String? = null,
var isCollect: Boolean = false, var isCollect: Boolean = false,
var downloadUrl: String? = null, var downloadUrl: String? = null
) : Serializable ) : Serializable

View File

@ -1,17 +1,66 @@
package com.timber.soft.mylivewallpaper.tools package com.timber.soft.mylivewallpaper.tools
import android.os.Build
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.view.View
import com.google.gson.Gson import com.google.gson.Gson
import com.jakewharton.rxbinding4.view.clicks
import com.timber.soft.mylivewallpaper.data.WallpaperData import com.timber.soft.mylivewallpaper.data.WallpaperData
import java.io.File
import java.io.InputStream import java.io.InputStream
import java.io.InputStreamReader import java.io.InputStreamReader
import java.util.concurrent.TimeUnit
object AppTools { object AppTools {
private const val DIR_FILE_NAME = "tep"
private const val DIR_DOWNLOAD = "download"
fun View.throttleClicks(time: Long = 1000, block: (View) -> Unit) {
this.clicks().throttleFirst(time, TimeUnit.MILLISECONDS).subscribe { block(this) }
}
fun onMain(operation: () -> Unit) = Handler(Looper.getMainLooper()).post(operation) fun onMain(operation: () -> Unit) = Handler(Looper.getMainLooper()).post(operation)
fun parseJsonFile(jsonInputStream: InputStream): List<WallpaperData> { fun parseJsonFile(jsonInputStream: InputStream): List<WallpaperData> {
val reader = InputStreamReader(jsonInputStream) val reader = InputStreamReader(jsonInputStream)
val jsonString = reader.readText() val jsonString = reader.readText()
return Gson().fromJson(jsonString, Array<WallpaperData>::class.java).toMutableList() return Gson().fromJson(jsonString, Array<WallpaperData>::class.java).toMutableList()
} }
private fun getDownloadDirectory(): String {
return getDefaultDirectory() + File.separator + DIR_DOWNLOAD
}
private fun getDefaultDirectory(): String {
var dirName = ""
if (MyApplication.appContext.getExternalFilesDir(DIR_FILE_NAME) != null) {//外部存储可用
if (Build.VERSION.SDK_INT >= 29) {
dirName = MyApplication.appContext.getExternalFilesDir(DIR_FILE_NAME)!!.path
} else if (Build.VERSION.SDK_INT < 29) {
dirName = MyApplication.appContext.getExternalFilesDir(DIR_FILE_NAME)!!.absolutePath
}
} else {//外部存储不可用
dirName = MyApplication.appContext.filesDir.absolutePath
}
return dirName
}
fun getFileName(url: String): String {
return url.substring(url.lastIndexOf("/") + 1)
}
fun getFilePath(url: String): String {
return getDownloadDirectory() + File.separator + getFileName(url)
}
fun getFile(url: String): File {
return File(getFilePath(url))
}
fun isExist(url: String): Boolean {
return File(getFilePath(url)).exists()
}
} }

View File

@ -14,11 +14,14 @@ import com.bumptech.glide.request.target.Target
import com.timber.soft.mylivewallpaper.data.WallpaperData import com.timber.soft.mylivewallpaper.data.WallpaperData
import com.timber.soft.mylivewallpaper.databinding.ActivityDetailsBinding import com.timber.soft.mylivewallpaper.databinding.ActivityDetailsBinding
import com.timber.soft.mylivewallpaper.tools.AppFinalString import com.timber.soft.mylivewallpaper.tools.AppFinalString
import com.timber.soft.mylivewallpaper.tools.AppTools.isExist
import com.timber.soft.mylivewallpaper.ui.customerView.DownLoadDialog
class DetailActivity : BaseActivity(), View.OnClickListener { class DetailActivity : BaseActivity(), View.OnClickListener {
private lateinit var binding: ActivityDetailsBinding private lateinit var binding: ActivityDetailsBinding
private lateinit var wallpaperData: WallpaperData private lateinit var wallpaperData: WallpaperData
private lateinit var downDialog: DownLoadDialog
override fun getActivityContentView(): View { override fun getActivityContentView(): View {
binding = ActivityDetailsBinding.inflate(layoutInflater) binding = ActivityDetailsBinding.inflate(layoutInflater)
return binding.root return binding.root
@ -89,9 +92,26 @@ class DetailActivity : BaseActivity(), View.OnClickListener {
} }
binding.detailsPlayButton -> { binding.detailsPlayButton -> {
Log.e("onclick", "detailsPlayButton has been click!") if (isExist()) {
playVideo()
} else {
showDownloadDialog()
}
} }
} }
} }
private fun showDownloadDialog() {
}
private fun playVideo() {
}
private fun isExist(): Boolean {
return isExist(wallpaperData.preview)
}
} }

View File

@ -0,0 +1,4 @@
package com.timber.soft.mylivewallpaper.ui.adapter
class RateStartAdapter {
}

View File

@ -0,0 +1,58 @@
package com.timber.soft.mylivewallpaper.ui.customerView
import android.app.Dialog
import android.content.Context
import android.os.Bundle
import android.text.TextUtils
import android.view.LayoutInflater
import com.timber.soft.mylivewallpaper.R
import com.timber.soft.mylivewallpaper.databinding.ViewDownloaddialogBinding
import com.timber.soft.mylivewallpaper.tools.AppTools.throttleClicks
import java.util.concurrent.atomic.AtomicInteger
/**
* TODO : no implement
*/
class DownLoadDialog(
private val context: Context,
private val url: String,
private val title: String = "",
init: DownLoadDialog.() -> Unit
) : Dialog(context, R.style.DownLoadDialog) {
private lateinit var binding: ViewDownloaddialogBinding
var onDownloadSuccess: (() -> Unit)? = null
var onDownloadFailed: (() -> Unit)? = null
private var mCount: AtomicInteger = AtomicInteger(0)
init {
init()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ViewDownloaddialogBinding.inflate(LayoutInflater.from(context))
setContentView(binding.root)
initViews()
}
private fun initViews() {
setCancelable(false)
setCanceledOnTouchOutside(false)
initView()
startDownload()
}
private fun startDownload() {
binding.dialogProgressbar.progress = 0f
}
private fun initView() {
if (!TextUtils.isEmpty(title)) {
binding.dialogText.text = title
}
binding.dialogIvClose.throttleClicks {
dismiss()
}
}
}

View File

@ -0,0 +1,67 @@
package com.timber.soft.mylivewallpaper.ui.fragment
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import androidx.fragment.app.DialogFragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.timber.soft.mylivewallpaper.databinding.FragmentRateBinding
import com.timber.soft.mylivewallpaper.ui.adapter.RateStartAdapter
class RateFragment : DialogFragment() {
private lateinit var binding: FragmentRateBinding
private lateinit var rateStartAdapter: RateStartAdapter
companion object {
val EXTRA_KEY = "task"
val ADD_TASK_TYPE_KEY = "add_task_type_key"
@JvmStatic
fun newInstance(param1: Int, param2: Int) = RateFragment().apply {
arguments = Bundle().apply {
putInt(EXTRA_KEY, param1)
putInt(ADD_TASK_TYPE_KEY, param2)
}
}
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = FragmentRateBinding.inflate(layoutInflater)
return binding.root
}
override fun onStart() {
super.onStart()
dialog?.run {
setCanceledOnTouchOutside(false)
setCancelable(false)
window?.run {
attributes = attributes.apply {
gravity = Gravity.CENTER
width = WindowManager.LayoutParams.WRAP_CONTENT
height = WindowManager.LayoutParams.WRAP_CONTENT
}
}
val decorView = window!!.decorView
decorView.setPadding(0, 0, 0, 0)
decorView.background = ColorDrawable(Color.TRANSPARENT)
}
initDialog()
}
private fun initDialog() {
binding.run {
}
}
}

View File

@ -1,6 +1,13 @@
package com.timber.soft.mylivewallpaper.ui.fragment package com.timber.soft.mylivewallpaper.ui.fragment
import android.content.Intent
import android.content.pm.PackageInfo
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.util.Log
import android.view.View import android.view.View
import com.timber.soft.mylivewallpaper.R
import com.timber.soft.mylivewallpaper.databinding.FragmentSettingBinding import com.timber.soft.mylivewallpaper.databinding.FragmentSettingBinding
class SettingFragment : BaseFragment() { class SettingFragment : BaseFragment() {
@ -9,4 +16,33 @@ class SettingFragment : BaseFragment() {
binding = FragmentSettingBinding.inflate(layoutInflater) binding = FragmentSettingBinding.inflate(layoutInflater)
return binding.root return binding.root
} }
override fun initViews() {
super.initViews()
binding.setLayoutRating.setOnClickListener {
//TODO:no implement
}
binding.setLayoutShare.setOnClickListener {
val url = getString(R.string.set_shop_link) + (activity?.packageName ?: "")
val intent = Intent(Intent.ACTION_SEND)
intent.setType("text/plain")
intent.putExtra(Intent.EXTRA_TEXT, url)
startActivity(intent)
}
val pInfo: PackageInfo
try {
pInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
requireActivity().packageManager.getPackageInfo(
requireActivity().packageName, PackageManager.PackageInfoFlags.of(0)
)
} else {
requireActivity().packageManager.getPackageInfo(requireActivity().packageName, 0)
}
binding.setAppVersion.text = "Version: " + pInfo.versionName
} catch (e: PackageManager.NameNotFoundException) {
Log.e("Activity is null", e.toString())
binding.setAppVersion.text = "Version: " + ""
}
}
} }

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/white" />
<corners android:radius="12dp" />
</shape>
</item>
</selector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M512,960C265,960 64,759 64,512S265,64 512,64s448,201 448,448 -201,448 -448,448zM512,128.3c-211.6,0 -383.7,172.1 -383.7,383.7 0,211.6 172.1,383.7 383.7,383.7 211.6,0 383.7,-172.2 383.7,-383.7 0,-211.6 -172.2,-383.7 -383.7,-383.7zM557.1,513.4l138.4,-136.9c12.6,-12.4 12.7,-32.7 0.3,-45.2s-32.7,-12.7 -45.2,-0.3l-138.6,137 -136.4,-136.9c-12.5,-12.5 -32.7,-12.6 -45.2,-0.1 -12.5,12.5 -12.5,32.7 -0.1,45.2l136.3,136.7L329,648.9c-12.6,12.4 -12.7,32.7 -0.3,45.2a31.9,31.9 0,0 0,22.8 9.5c8.1,0 16.3,-3.1 22.5,-9.2l137.6,-136.1 138.7,139.1c6.2,6.3 14.4,9.4 22.7,9.4a31.9,31.9 0,0 0,22.6 -9.3c12.5,-12.5 12.5,-32.7 0.1,-45.2L557.1,513.4z"
android:fillColor="#2c2c2c"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M1020.9,386.3a64.6,64.6 0,0 0,-51.6 -45.4l-276.4,-42L569.4,37.2A63.7,63.7 0,0 0,512.1 0a63.7,63.7 0,0 0,-57.3 37.2L331.2,298.9l-276.5,42a64.6,64.6 0,0 0,-51.5 45.4c-7.6,24.2 -1.3,50.7 16.2,68.5l199.9,203.6 -47.2,287.6c-4.2,25 5.8,50.3 25.4,65.3a62,62 0,0 0,67.3 5.1L512.1,880.5l247.2,135.7a62.1,62.1 0,0 0,67.3 -5.1c19.6,-14.9 29.5,-40.2 25.4,-65.3l-47.2,-287.6L1004.9,454.7c17.4,-17.7 23.7,-44.2 16.1,-68.4"
android:fillColor="#2c2c2c"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M554.7,150.9c0,-24.4 20.5,-44.2 45.7,-44.2 11.3,0 22.2,4.1 30.6,11.3l292.5,254.5c18.8,16.3 20.3,44.3 3.4,62.4l-1.7,1.7 -294.3,256a46.8,46.8 0,0 1,-64.6 -3.3,43.4 43.4,0 0,1 -11.7,-29.6V554.7c-211.9,17.5 -387.3,164.1 -447.2,360.9a511.6,511.6 0,0 1,-22.1 -149.3C85.3,497.9 291.8,277.7 554.7,256V150.9z"
android:fillColor="#2c2c2c"/>
</vector>

View File

@ -78,7 +78,7 @@
android:padding="12dp" android:padding="12dp"
android:paddingStart="16dp" android:paddingStart="16dp"
android:src="@drawable/svg_play" android:src="@drawable/svg_play"
android:visibility="visible" /> android:visibility="invisible" />
<FrameLayout <FrameLayout
android:id="@+id/details_flPlay" android:id="@+id/details_flPlay"

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:background="@drawable/shape_dialog_bg"
tools:context=".ui.fragment.RateFragment">
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:layout_marginTop="24dp"
android:text="@string/set_score"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center"
android:paddingStart="24dp"
android:paddingEnd="24dp"
android:text="@string/set_rate_us_content"
android:textColor="@color/black"
android:textSize="12sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvTitle" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_content" />
<TextView
android:id="@+id/tv_cancel"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginTop="24dp"
android:gravity="center"
android:text="@string/set_cancel"
android:textColor="@color/theme_color_dark"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/tv_rate_it"
app:layout_constraintTop_toBottomOf="@id/recycler_start" />
<TextView
android:id="@+id/tv_rate_it"
android:layout_width="0dp"
android:layout_height="40dp"
android:gravity="center"
android:text="@string/set_rate_it"
android:textColor="@color/theme_color_dark"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toRightOf="@id/tv_cancel"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_cancel" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,6 +1,148 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout 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_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:background="@color/theme_color_light"
android:orientation="vertical"
tools:context=".ui.fragment.SettingFragment">
</androidx.constraintlayout.widget.ConstraintLayout> <View
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/white" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:gravity="center_horizontal"
android:paddingBottom="8dp"
android:text="@string/set_title"
android:textColor="@color/black"
android:textSize="18sp" />
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginStart="28dp"
android:layout_marginTop="28dp"
android:layout_marginEnd="28dp"
app:cardCornerRadius="12dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--appLog-->
<androidx.cardview.widget.CardView
android:id="@+id/set_image_logo"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="40dp"
app:cardCornerRadius="12dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@mipmap/ic_launcher" />
</androidx.cardview.widget.CardView>
<!--AppName-->
<TextView
android:id="@+id/set_app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="@string/app_name"
android:textColor="@color/black"
android:textSize="18sp" />
<!--Version-->
<TextView
android:id="@+id/set_app_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="4dp"
android:text="@string/app_name"
android:textColor="@color/black"
android:textSize="12sp" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginStart="28dp"
android:layout_marginTop="18dp"
android:layout_marginEnd="28dp"
app:cardCornerRadius="12dp">
<LinearLayout
android:id="@+id/set_layout_rating"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/set_img_google"
android:layout_width="27dp"
android:layout_height="27dp"
android:layout_marginStart="25dp"
android:padding="2dp"
android:src="@drawable/svg_rate" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:gravity="center"
android:text="@string/set_score"
android:textColor="@color/black"
android:textSize="14sp" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginStart="28dp"
android:layout_marginTop="18dp"
android:layout_marginEnd="28dp"
app:cardCornerRadius="12dp">
<LinearLayout
android:id="@+id/set_layout_share"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/set_img_link"
android:layout_width="27dp"
android:layout_height="27dp"
android:layout_marginStart="25dp"
android:src="@drawable/svg_share" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:gravity="center"
android:text="@string/set_share"
android:textColor="@color/black"
android:textSize="14sp" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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/shape_dialog_bg"
android:orientation="vertical"
android:paddingStart="22dp"
android:paddingEnd="22dp"
android:paddingBottom="22dp">
<TextView
android:id="@+id/dialog_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:gravity="center"
android:text="@string/video_loading"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold" />
<com.akexorcist.roundcornerprogressbar.RoundCornerProgressBar
android:id="@+id/dialog_progressbar"
android:layout_width="match_parent"
android:layout_height="8dp"
android:layout_below="@id/dialog_tvPercent"
android:layout_gravity="center"
android:layout_marginHorizontal="32dp"
android:layout_marginTop="16dp"
app:rcBackgroundColor="@color/white"
app:rcProgressColor="@color/theme_color_dark" />
<TextView
android:id="@+id/dialog_tvPercent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/dialog_text"
android:layout_marginTop="16dp"
android:alpha="0.54"
android:gravity="center"
android:textColor="@color/black"
android:textSize="16sp"
tools:text="54%" />
<ImageView
android:id="@+id/dialog_ivClose"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginEnd="6dp"
android:padding="6dp"
android:src="@drawable/svg_close" />
</RelativeLayout>

View File

@ -5,5 +5,17 @@
<string name="main_collect">Collect</string> <string name="main_collect">Collect</string>
<string name="main_setting">Set</string> <string name="main_setting">Set</string>
<string name="set_title">Application settings</string>
<string name="set_score">Rate us</string>
<string name="set_share">Share us</string>
<string name="set_shop_link">https://play.google.com/store/apps/details?id=</string>
<string name="set_rate_us_content">We hope this app is useful for you, if it does, would youplease give us a 5 sar and a mice revtew on Google Play, it really helps!</string>
<string name="set_cancel">CANCEL</string>
<string name="set_rate_it">RATE IT</string>
<string name="details_set_wallpaper">Set Wallpaper</string> <string name="details_set_wallpaper">Set Wallpaper</string>
<string name="video_loading">Loading video...</string>
</resources> </resources>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="DownLoadDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
</resources>

View File

@ -10,8 +10,10 @@ material = "1.11.0"
activity = "1.8.0" activity = "1.8.0"
activity-ktx = "1.9.0" activity-ktx = "1.9.0"
fragment-ktx = "1.6.2" fragment-ktx = "1.6.2"
rxbinding = "4.0.0"
constraintlayout = "2.1.4" constraintlayout = "2.1.4"
lifecycle = "2.7.0" lifecycle = "2.7.0"
progress-bar = "2.1.2"
[libraries] [libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
@ -25,6 +27,8 @@ lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx
activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "activity-ktx" } activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "activity-ktx" }
fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "fragment-ktx" } fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "fragment-ktx" }
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" } androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
jakewharton-rxbinding4 = { module = "com.jakewharton.rxbinding4:rxbinding", version.ref = "rxbinding" }
com-akexorcist-progress-bar = { group = "com.akexorcist", name = "round-corner-progress-bar", version.ref = "progress-bar" }
[plugins] [plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" } androidApplication = { id = "com.android.application", version.ref = "agp" }