feat:优化了UI和添加了新的功能:启用了节流点击,添加了评分和分享功能,修复了在某些设备上无法播放的问题。
This commit is contained in:
parent
b5deee2b9f
commit
e21ee88828
@ -73,5 +73,11 @@ dependencies {
|
||||
//viewModel初始化用
|
||||
implementation(libs.activity.ktx)
|
||||
implementation(libs.fragment.ktx)
|
||||
// progress bar
|
||||
implementation(libs.com.akexorcist.progress.bar)
|
||||
|
||||
// RxBinding
|
||||
implementation(libs.jakewharton.rxbinding4)
|
||||
|
||||
|
||||
}
|
||||
@ -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)
|
||||
|
||||
}
|
||||
@ -15,5 +15,5 @@ data class WallpaperData(
|
||||
val id: Int = 0,
|
||||
val classId: String? = null,
|
||||
var isCollect: Boolean = false,
|
||||
var downloadUrl: String? = null,
|
||||
var downloadUrl: String? = null
|
||||
) : Serializable
|
||||
@ -1,17 +1,66 @@
|
||||
package com.timber.soft.mylivewallpaper.tools
|
||||
|
||||
import android.os.Build
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.view.View
|
||||
import com.google.gson.Gson
|
||||
import com.jakewharton.rxbinding4.view.clicks
|
||||
import com.timber.soft.mylivewallpaper.data.WallpaperData
|
||||
import java.io.File
|
||||
import java.io.InputStream
|
||||
import java.io.InputStreamReader
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
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 parseJsonFile(jsonInputStream: InputStream): List<WallpaperData> {
|
||||
val reader = InputStreamReader(jsonInputStream)
|
||||
val jsonString = reader.readText()
|
||||
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()
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -14,11 +14,14 @@ import com.bumptech.glide.request.target.Target
|
||||
import com.timber.soft.mylivewallpaper.data.WallpaperData
|
||||
import com.timber.soft.mylivewallpaper.databinding.ActivityDetailsBinding
|
||||
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 {
|
||||
|
||||
private lateinit var binding: ActivityDetailsBinding
|
||||
private lateinit var wallpaperData: WallpaperData
|
||||
private lateinit var downDialog: DownLoadDialog
|
||||
override fun getActivityContentView(): View {
|
||||
binding = ActivityDetailsBinding.inflate(layoutInflater)
|
||||
return binding.root
|
||||
@ -89,9 +92,26 @@ class DetailActivity : BaseActivity(), View.OnClickListener {
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
package com.timber.soft.mylivewallpaper.ui.adapter
|
||||
|
||||
class RateStartAdapter {
|
||||
}
|
||||
@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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 {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,6 +1,13 @@
|
||||
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 com.timber.soft.mylivewallpaper.R
|
||||
import com.timber.soft.mylivewallpaper.databinding.FragmentSettingBinding
|
||||
|
||||
class SettingFragment : BaseFragment() {
|
||||
@ -9,4 +16,33 @@ class SettingFragment : BaseFragment() {
|
||||
binding = FragmentSettingBinding.inflate(layoutInflater)
|
||||
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: " + ""
|
||||
}
|
||||
}
|
||||
}
|
||||
9
app/src/main/res/drawable/shape_dialog_bg.xml
Normal file
9
app/src/main/res/drawable/shape_dialog_bg.xml
Normal 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>
|
||||
9
app/src/main/res/drawable/svg_close.xml
Normal file
9
app/src/main/res/drawable/svg_close.xml
Normal 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>
|
||||
9
app/src/main/res/drawable/svg_rate.xml
Normal file
9
app/src/main/res/drawable/svg_rate.xml
Normal 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>
|
||||
9
app/src/main/res/drawable/svg_share.xml
Normal file
9
app/src/main/res/drawable/svg_share.xml
Normal 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>
|
||||
@ -78,7 +78,7 @@
|
||||
android:padding="12dp"
|
||||
android:paddingStart="16dp"
|
||||
android:src="@drawable/svg_play"
|
||||
android:visibility="visible" />
|
||||
android:visibility="invisible" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/details_flPlay"
|
||||
|
||||
79
app/src/main/res/layout/fragment_rate.xml
Normal file
79
app/src/main/res/layout/fragment_rate.xml
Normal 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>
|
||||
@ -1,6 +1,148 @@
|
||||
<?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_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>
|
||||
57
app/src/main/res/layout/view_downloaddialog.xml
Normal file
57
app/src/main/res/layout/view_downloaddialog.xml
Normal 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>
|
||||
@ -5,5 +5,17 @@
|
||||
<string name="main_collect">Collect</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="video_loading">Loading video...</string>
|
||||
|
||||
|
||||
</resources>
|
||||
13
app/src/main/res/values/styles.xml
Normal file
13
app/src/main/res/values/styles.xml
Normal 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>
|
||||
@ -10,8 +10,10 @@ material = "1.11.0"
|
||||
activity = "1.8.0"
|
||||
activity-ktx = "1.9.0"
|
||||
fragment-ktx = "1.6.2"
|
||||
rxbinding = "4.0.0"
|
||||
constraintlayout = "2.1.4"
|
||||
lifecycle = "2.7.0"
|
||||
progress-bar = "2.1.2"
|
||||
|
||||
[libraries]
|
||||
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" }
|
||||
fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "fragment-ktx" }
|
||||
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]
|
||||
androidApplication = { id = "com.android.application", version.ref = "agp" }
|
||||
|
||||
Loading…
Reference in New Issue
Block a user