diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 00c37d6..97bb380 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -13,8 +13,8 @@ android {
applicationId = "com.haodustudio.DailyNotes"
minSdk = 24
targetSdk = 33
- versionCode = 3
- versionName = "1.0.2"
+ versionCode = 4
+ versionName = "1.0.3"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/java/com/haodustudio/DailyNotes/view/activities/AboutSoftware.kt b/app/src/main/java/com/haodustudio/DailyNotes/view/activities/AboutSoftware.kt
index a2141b8..a761af1 100644
--- a/app/src/main/java/com/haodustudio/DailyNotes/view/activities/AboutSoftware.kt
+++ b/app/src/main/java/com/haodustudio/DailyNotes/view/activities/AboutSoftware.kt
@@ -1,102 +1,123 @@
package com.haodustudio.DailyNotes.view.activities
-import android.content.BroadcastReceiver
-import android.content.Context
import android.content.Intent
-import android.content.IntentFilter
+import android.content.pm.PackageManager
import android.net.Uri
import android.os.Bundle
-import android.os.Handler
-import android.util.Log
-import android.view.View
-import androidx.appcompat.app.AppCompatActivity
-import androidx.core.content.edit
-import androidx.lifecycle.ViewModelProvider
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.engine.DiskCacheStrategy
+import android.os.Build
import com.haodustudio.DailyNotes.BaseApplication
import com.haodustudio.DailyNotes.R
import com.haodustudio.DailyNotes.databinding.ActivityAboutSoftwareBinding
import com.haodustudio.DailyNotes.helper.makeToast
-import com.haodustudio.DailyNotes.utils.ViewUtils
+import com.haodustudio.DailyNotes.view.activities.ViewImage
import com.haodustudio.DailyNotes.view.activities.base.BaseActivity
-import com.haodustudio.DailyNotes.viewModel.viewModels.GlobalViewModel
-
class AboutSoftware : BaseActivity() {
private val binding by lazy { ActivityAboutSoftwareBinding.inflate(layoutInflater) }
- private val appViewModel = ViewModelProvider(
- BaseApplication.instance,
- ViewModelProvider.AndroidViewModelFactory.getInstance(BaseApplication.instance)
- )[GlobalViewModel::class.java]
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
- binding.openSourceText.setOnClickListener {
- makeToast("视频加载中\n改编自:@我家邻居全是猫")
- val mIntent = Intent(this, ViewImage::class.java)
- val videoUrl = BaseApplication.buildServerUrl("/static/about_eggshell_video.mp4")
- if (videoUrl == null) {
- makeToast("无网络连接")
+ configureBanner()
+ configureCards()
+ }
+
+ private fun configureBanner() {
+ binding.bannerBadge.text = getString(R.string.about_codename_label)
+ binding.bannerTitle.text = getString(R.string.about_banner_title)
+ binding.bannerSubtitle.text = getString(R.string.about_banner_subtitle)
+ }
+
+ private fun configureCards() {
+ val versionName = runCatching {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ packageManager.getPackageInfo(
+ packageName,
+ PackageManager.PackageInfoFlags.of(0)
+ ).versionName
} else {
- mIntent.putExtra("isVideo", true)
- mIntent.putExtra("path", videoUrl)
- startActivity(mIntent)
+ @Suppress("DEPRECATION")
+ packageManager.getPackageInfo(packageName, 0).versionName
+ }
+ }.getOrNull()
+
+ binding.cardSoftwareVersion.apply {
+ title.text = getString(R.string.about_section_version_title)
+ subtitle.text = versionName?.let {
+ getString(R.string.about_section_version_subtitle, it)
+ } ?: getString(R.string.about_section_version_placeholder)
+ icon.setImageResource(R.drawable.info)
+ root.contentDescription = getString(R.string.about_section_version_desc)
+ root.setOnClickListener {
+ makeToast(subtitle.text.toString())
}
}
- binding.artPeopleInfo.setOnClickListener {
- val mIntent = Intent(this, ViewImage::class.java)
- val imageUrl = BaseApplication.buildServerUrl("/static/about_thanks_img.png")
- if (imageUrl == null) {
- makeToast("无网络连接")
- } else {
- mIntent.putExtra("path", imageUrl)
- mIntent.putExtra("zoomEnabled", false)
- startActivity(mIntent)
+ binding.cardContributors.apply {
+ title.text = getString(R.string.about_section_contributors_title)
+ subtitle.text = getString(R.string.about_section_contributors_subtitle)
+ icon.setImageResource(R.drawable.usergroup)
+ root.contentDescription = getString(R.string.about_section_contributors_desc)
+ root.setOnClickListener {
+ openRemoteAsset("/static/about_thanks_img.png", zoomEnabled = false)
}
}
- binding.haodusWindow.setOnClickListener {
- makeToast("诶哟你干嘛 (")
+ binding.cardRepository.apply {
+ title.text = getString(R.string.about_section_repo_title)
+ subtitle.text = getString(R.string.about_section_repo_subtitle)
+ icon.setImageResource(R.drawable.ic_about_github)
+ root.contentDescription = getString(R.string.about_section_repo_desc)
+ root.setOnClickListener {
+ openExternalUrl("https://github.com/HaoduStudio/DailyNotes")
+ }
+ }
+
+ binding.cardPolicy.apply {
+ title.text = getString(R.string.about_section_policy_title)
+ subtitle.text = getString(R.string.about_section_policy_subtitle)
+ icon.setImageResource(R.drawable.ic_about_policy)
+ root.contentDescription = getString(R.string.about_section_policy_desc)
+ root.setOnClickListener {
+ openRemoteAsset("/static/about_user_privacy_policy.png", zoomEnabled = true)
+ }
}
- binding.mengxisWindow.setOnClickListener {
- makeToast("WebStorm,启动!")
+ binding.cardPrivacy.apply {
+ title.text = getString(R.string.about_section_privacy_title)
+ subtitle.text = getString(R.string.about_section_privacy_subtitle)
+ icon.setImageResource(R.drawable.ic_about_privacy)
+ root.contentDescription = getString(R.string.about_section_privacy_desc)
+ root.setOnClickListener {
+ makeToast(getString(R.string.about_feature_placeholder))
+ }
}
+ }
- val verName = packageManager.
- getPackageInfo(packageName, 0).versionName
- binding.versionInfo.text = "Version $verName"
+ private fun openRemoteAsset(path: String, zoomEnabled: Boolean) {
+ val assetUrl = BaseApplication.buildServerUrl(path)
+ if (assetUrl == null) {
+ makeToast(getString(R.string.about_network_unavailable))
+ return
+ }
- // tot = 2.5, ge ge ge (?
- ViewUtils.fadeIn(binding.aboutForeground, 1000) {
- binding.aboutForeground.postDelayed({
- ViewUtils.fadeOut(binding.aboutForeground, 500) {
- startMainPage()
- }
- }, 1000)
+ val viewerIntent = Intent(this, ViewImage::class.java).apply {
+ putExtra("path", assetUrl)
+ putExtra("zoomEnabled", zoomEnabled)
+ if (path.endsWith(".mp4")) {
+ putExtra("isVideo", true)
+ }
}
+ startActivity(viewerIntent)
}
- private fun startMainPage() {
- binding.videoView.visibility = View.GONE
- binding.aboutForeground.visibility = View.GONE
- binding.aboutRoot.visibility = View.VISIBLE
-// Glide.with(this).asGif().load(R.drawable.ic_cute_loading).into(binding.userPpImg)
- val policyUrl = BaseApplication.buildServerUrl("/static/about_user_privacy_policy.png")
- if (policyUrl == null) {
- makeToast("无网络连接")
+ private fun openExternalUrl(url: String) {
+ val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
+ if (intent.resolveActivity(packageManager) != null) {
+ startActivity(intent)
} else {
- Glide
- .with(this)
- .load(policyUrl)
- .placeholder(R.drawable.ic_cute_loading)
- .skipMemoryCache(true) // 不使用内存缓存
- .diskCacheStrategy(DiskCacheStrategy.NONE)
- .into(binding.userPpImg)
+ makeToast(url)
}
}
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/about_banner.png b/app/src/main/res/drawable/about_banner.png
new file mode 100644
index 0000000..ddf5c48
Binary files /dev/null and b/app/src/main/res/drawable/about_banner.png differ
diff --git a/app/src/main/res/drawable/bg_about_badge.xml b/app/src/main/res/drawable/bg_about_badge.xml
new file mode 100644
index 0000000..6de6a74
--- /dev/null
+++ b/app/src/main/res/drawable/bg_about_badge.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/bg_about_banner_gradient.xml b/app/src/main/res/drawable/bg_about_banner_gradient.xml
new file mode 100644
index 0000000..64df939
--- /dev/null
+++ b/app/src/main/res/drawable/bg_about_banner_gradient.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/bg_about_banner_placeholder.xml b/app/src/main/res/drawable/bg_about_banner_placeholder.xml
new file mode 100644
index 0000000..e25ae72
--- /dev/null
+++ b/app/src/main/res/drawable/bg_about_banner_placeholder.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/bg_about_icon_container.xml b/app/src/main/res/drawable/bg_about_icon_container.xml
new file mode 100644
index 0000000..1e06be5
--- /dev/null
+++ b/app/src/main/res/drawable/bg_about_icon_container.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_about_github.png b/app/src/main/res/drawable/ic_about_github.png
new file mode 100644
index 0000000..051500a
Binary files /dev/null and b/app/src/main/res/drawable/ic_about_github.png differ
diff --git a/app/src/main/res/drawable/ic_about_policy.png b/app/src/main/res/drawable/ic_about_policy.png
new file mode 100644
index 0000000..9bf6e4b
Binary files /dev/null and b/app/src/main/res/drawable/ic_about_policy.png differ
diff --git a/app/src/main/res/drawable/ic_about_privacy.png b/app/src/main/res/drawable/ic_about_privacy.png
new file mode 100644
index 0000000..404d37e
Binary files /dev/null and b/app/src/main/res/drawable/ic_about_privacy.png differ
diff --git a/app/src/main/res/drawable/info.png b/app/src/main/res/drawable/info.png
new file mode 100644
index 0000000..70ad045
Binary files /dev/null and b/app/src/main/res/drawable/info.png differ
diff --git a/app/src/main/res/drawable/usergroup.png b/app/src/main/res/drawable/usergroup.png
new file mode 100644
index 0000000..5e8c0e6
Binary files /dev/null and b/app/src/main/res/drawable/usergroup.png differ
diff --git a/app/src/main/res/layout/activity_about_software.xml b/app/src/main/res/layout/activity_about_software.xml
index 2a03b9e..a6890c4 100644
--- a/app/src/main/res/layout/activity_about_software.xml
+++ b/app/src/main/res/layout/activity_about_software.xml
@@ -1,376 +1,198 @@
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+ android:text="@string/about"
+ android:textColor="@color/white"
+ android:textSize="26sp"
+ android:fontFamily="sans-serif-medium"
+ tools:text="关于软件" />
-
-
+ android:layout_height="wrap_content"
+ android:layout_marginTop="24dp"
+ android:clickable="false"
+ android:focusable="false"
+ app:cardBackgroundColor="@android:color/transparent"
+ app:cardCornerRadius="24dp"
+ app:cardUseCompatPadding="false"
+ app:strokeColor="@color/about_card_stroke"
+ app:strokeWidth="1dp">
-
-
-
+
+
+
+
+
+
+ android:orientation="vertical"
+ android:paddingStart="20dp"
+ android:paddingEnd="20dp"
+ android:paddingBottom="20dp"
+ app:layout_constraintBottom_toBottomOf="@id/bannerImage"
+ app:layout_constraintStart_toStartOf="@id/bannerImage"
+ app:layout_constraintEnd_toEndOf="@id/bannerImage">
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_marginTop="20dp"
+ android:gravity="center"
+ android:text="正因为会失去,所以才要去珍惜"
+ android:textAlignment="center"
+ android:textColor="@color/about_secondary_text"
+ android:textSize="14sp"
+ android:fontFamily="sans-serif" />
-
-
-
-
-
-
-
-
+
+
+ android:layout_marginTop="16dp" />
-
+ android:layout_marginTop="16dp" />
-
+ android:layout_marginTop="16dp" />
-
+ android:layout_marginTop="16dp" />
-
+ android:layout_marginTop="16dp" />
-
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_about_item.xml b/app/src/main/res/layout/layout_about_item.xml
new file mode 100644
index 0000000..50dea14
--- /dev/null
+++ b/app/src/main/res/layout/layout_about_item.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index f508e8c..4453401 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -24,4 +24,10 @@
#4D000000
+
+ #101013
+ #B3FFFFFF
+ #18181C
+ #26FFFFFF
+ #1FFFFFFF
\ 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 b990269..ce4daeb 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -8,6 +8,30 @@
个性化
使用指南
关于软件
+ 关于软件展示图
+ DailyNotes
+ Community Edition
+ 代号:Isla
+ 正因为会失去,所以才要去珍惜
+希望你能好好利用本软件
+ 软件版本
+ v—
+ v%1$s
+ 软件版本卡片
+ 贡献者
+ 原作者/开发者/美工们
+ 贡献者卡片
+ 开源仓库
+ 在 Github 上查看
+ 开源仓库卡片
+ EULA与隐私协议
+ 阅读协议全文
+ EULA与隐私协议卡片
+ 隐私设置
+ 管理隐私相关选项
+ 隐私设置卡片
+ 无网络连接
+ 敬请期待
请至少写一篇手帐
更新完成