From b5deee2b9f4a7955692688ad93548fa0e4555334 Mon Sep 17 00:00:00 2001 From: LUX-Timber Date: Tue, 23 Apr 2024 13:38:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0=E4=BA=86=E8=AF=A6?= =?UTF-8?q?=E7=BB=86=E7=9A=84UI=E5=B8=83=E5=B1=80=E5=92=8C=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=AE=9E=E7=8E=B0=EF=BC=8C=E5=8C=85=E6=8B=AC=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E5=A4=84=E7=90=86=E5=92=8C=E5=9B=BE=E7=89=87=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E4=BC=98=E5=8C=96=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deploymentTargetDropDown.xml | 17 ++- app/src/main/AndroidManifest.xml | 1 + .../mylivewallpaper/tools/AppFinalString.kt | 1 + .../ui/activity/DetailActivity.kt | 81 ++++++++++++- .../ui/fragment/HomeFragment.kt | 8 +- .../res/drawable/selector_details_collect.xml | 7 ++ app/src/main/res/drawable/shape_circular.xml | 6 + app/src/main/res/drawable/svg_back.xml | 9 ++ app/src/main/res/drawable/svg_collect.xml | 21 ++++ .../main/res/drawable/svg_collect_enable.xml | 9 ++ app/src/main/res/drawable/svg_play.xml | 9 ++ app/src/main/res/layout/activity_details.xml | 108 +++++++++++++++++- app/src/main/res/values/strings.xml | 2 + 13 files changed, 270 insertions(+), 9 deletions(-) create mode 100644 app/src/main/res/drawable/selector_details_collect.xml create mode 100644 app/src/main/res/drawable/shape_circular.xml create mode 100644 app/src/main/res/drawable/svg_back.xml create mode 100644 app/src/main/res/drawable/svg_collect.xml create mode 100644 app/src/main/res/drawable/svg_collect_enable.xml create mode 100644 app/src/main/res/drawable/svg_play.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 6faa8eb..9c99d4c 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -9,13 +9,24 @@ - - + + - + + + + + + + + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d097404..b1bbf6b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -26,6 +26,7 @@ + \ No newline at end of file diff --git a/app/src/main/java/com/timber/soft/mylivewallpaper/tools/AppFinalString.kt b/app/src/main/java/com/timber/soft/mylivewallpaper/tools/AppFinalString.kt index 9cc3545..16d610e 100644 --- a/app/src/main/java/com/timber/soft/mylivewallpaper/tools/AppFinalString.kt +++ b/app/src/main/java/com/timber/soft/mylivewallpaper/tools/AppFinalString.kt @@ -2,4 +2,5 @@ package com.timber.soft.mylivewallpaper.tools object AppFinalString { const val TABLE_NAME_WALLPAPER = "wallpaper" + const val KEY_EXTRA = "KEY_EXTRA" } \ No newline at end of file diff --git a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/activity/DetailActivity.kt b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/activity/DetailActivity.kt index d591c0f..578648b 100644 --- a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/activity/DetailActivity.kt +++ b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/activity/DetailActivity.kt @@ -1,11 +1,24 @@ package com.timber.soft.mylivewallpaper.ui.activity +import android.graphics.drawable.Drawable +import android.util.Log import android.view.View +import android.widget.Toast +import com.bumptech.glide.Glide +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.engine.DiskCacheStrategy +import com.bumptech.glide.load.engine.GlideException +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions +import com.bumptech.glide.request.RequestListener +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 -class DetailActivity : BaseActivity() { +class DetailActivity : BaseActivity(), View.OnClickListener { private lateinit var binding: ActivityDetailsBinding + private lateinit var wallpaperData: WallpaperData override fun getActivityContentView(): View { binding = ActivityDetailsBinding.inflate(layoutInflater) return binding.root @@ -13,6 +26,72 @@ class DetailActivity : BaseActivity() { override fun initViews() { super.initViews() + wallpaperData = intent.getSerializableExtra(AppFinalString.KEY_EXTRA) as WallpaperData + initButton() + initPreImg() } + + private fun initPreImg() { + Glide.with(this).load(wallpaperData.thumbnail) + .transition(DrawableTransitionOptions.withCrossFade()) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .listener(object : RequestListener { + override fun onLoadFailed( + e: GlideException?, + model: Any?, + target: Target?, + isFirstResource: Boolean + ): Boolean { + // 加载失败时的处理 + binding.detailsProgressbar.visibility = View.INVISIBLE + binding.detailsLoadingErr.visibility = View.VISIBLE + Toast.makeText( + applicationContext, "Check network connection!", Toast.LENGTH_SHORT + ).show() + return false + } + + override fun onResourceReady( + resource: Drawable?, + model: Any?, + target: Target?, + dataSource: DataSource?, + isFirstResource: Boolean + ): Boolean { + // 图片加载完成时的处理 + binding.detailsProgressbar.visibility = View.INVISIBLE + binding.detailsPlayButton.visibility = View.VISIBLE + return false + } + }).into(binding.detailsImage) + } + + private fun initButton() { + binding.detailsBack.setOnClickListener(this) + binding.detailsCollect.setOnClickListener(this) + binding.detailsSet.setOnClickListener(this) + binding.detailsPlayButton.setOnClickListener(this) + } + + override fun onClick(v: View?) { + when (v) { + binding.detailsBack -> { + finish() + } + + binding.detailsSet -> { + Log.e("onclick", "detailsSet has been click!") + } + + binding.detailsCollect -> { + Log.e("onclick", "detailsCollect has been click!") + } + + binding.detailsPlayButton -> { + Log.e("onclick", "detailsPlayButton has been click!") + } + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/HomeFragment.kt b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/HomeFragment.kt index 0e1798a..1a6e2f8 100644 --- a/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/HomeFragment.kt +++ b/app/src/main/java/com/timber/soft/mylivewallpaper/ui/fragment/HomeFragment.kt @@ -1,5 +1,6 @@ package com.timber.soft.mylivewallpaper.ui.fragment +import android.content.Intent import android.util.Log import android.view.View import androidx.lifecycle.lifecycleScope @@ -12,7 +13,9 @@ import com.timber.soft.mylivewallpaper.ui.adapter.HomeItemAdapter import com.timber.soft.mylivewallpaper.ui.listener.OnHomeItemClickListener import kotlinx.coroutines.Dispatchers import androidx.fragment.app.viewModels +import com.timber.soft.mylivewallpaper.tools.AppFinalString import com.timber.soft.mylivewallpaper.tools.AppTools.onMain +import com.timber.soft.mylivewallpaper.ui.activity.DetailActivity import kotlinx.coroutines.launch class HomeFragment : BaseFragment() { @@ -66,8 +69,9 @@ class HomeFragment : BaseFragment() { homeItemAdapter = HomeItemAdapter(requireContext(), wallpaperDataList, object : OnHomeItemClickListener { override fun onItemClick(position: Int, wallpaperData: WallpaperData) { -// val intent = Intent(requireContext()) - Log.d("home_item_root", "item has been click!") + val intent = Intent(requireContext(), DetailActivity::class.java) + intent.putExtra(AppFinalString.KEY_EXTRA, wallpaperData) + startActivity(intent) } }) binding.homeRecyclerview.run { diff --git a/app/src/main/res/drawable/selector_details_collect.xml b/app/src/main/res/drawable/selector_details_collect.xml new file mode 100644 index 0000000..a3bcfbb --- /dev/null +++ b/app/src/main/res/drawable/selector_details_collect.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_circular.xml b/app/src/main/res/drawable/shape_circular.xml new file mode 100644 index 0000000..62b8854 --- /dev/null +++ b/app/src/main/res/drawable/shape_circular.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/svg_back.xml b/app/src/main/res/drawable/svg_back.xml new file mode 100644 index 0000000..e84cc18 --- /dev/null +++ b/app/src/main/res/drawable/svg_back.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/svg_collect.xml b/app/src/main/res/drawable/svg_collect.xml new file mode 100644 index 0000000..a292b7b --- /dev/null +++ b/app/src/main/res/drawable/svg_collect.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable/svg_collect_enable.xml b/app/src/main/res/drawable/svg_collect_enable.xml new file mode 100644 index 0000000..3f1769a --- /dev/null +++ b/app/src/main/res/drawable/svg_collect_enable.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/svg_play.xml b/app/src/main/res/drawable/svg_play.xml new file mode 100644 index 0000000..e299f15 --- /dev/null +++ b/app/src/main/res/drawable/svg_play.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_details.xml b/app/src/main/res/layout/activity_details.xml index 77d9ef6..f4b1890 100644 --- a/app/src/main/res/layout/activity_details.xml +++ b/app/src/main/res/layout/activity_details.xml @@ -1,6 +1,108 @@ - + android:layout_height="match_parent" + tools:context=".ui.activity.DetailActivity"> - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 07b69ae..8fba58e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,4 +4,6 @@ Home Collect Set + + Set Wallpaper \ No newline at end of file