diff --git a/.github/workflows/buildCi.yml b/.github/workflows/buildCi.yml index 6727d752..f8c5addd 100644 --- a/.github/workflows/buildCi.yml +++ b/.github/workflows/buildCi.yml @@ -23,7 +23,7 @@ jobs: - name: Setup cmake uses: jwlawson/actions-setup-cmake@v2 with: - cmake-version: '4.0.2' + cmake-version: '4.0.3' - name: Setup Ninja run: sudo apt-get install ninja-build @@ -34,7 +34,7 @@ jobs: - uses: nttld/setup-ndk@v1 with: - ndk-version: r28b + ndk-version: r28c - name: Get Commit Message id: commitMessage @@ -161,7 +161,7 @@ jobs: - name: Setup cmake uses: jwlawson/actions-setup-cmake@v2 with: - cmake-version: '4.0.2' + cmake-version: '4.0.3' - name: Setup Ninja run: sudo apt-get install ninja-build @@ -171,7 +171,7 @@ jobs: - uses: nttld/setup-ndk@v1 with: - ndk-version: r28b + ndk-version: r28c - name: Get Commit Message id: commitMessage @@ -304,7 +304,7 @@ jobs: - name: Setup cmake uses: jwlawson/actions-setup-cmake@v2 with: - cmake-version: '4.0.2' + cmake-version: '4.0.3' - name: Setup Ninja run: sudo apt-get install ninja-build @@ -314,7 +314,7 @@ jobs: - uses: nttld/setup-ndk@v1 with: - ndk-version: r28b + ndk-version: r28c - name: Get Commit Message id: commitMessage diff --git a/.github/workflows/buildPro.yml b/.github/workflows/buildPro.yml index 6c9a477e..b4bb3f96 100644 --- a/.github/workflows/buildPro.yml +++ b/.github/workflows/buildPro.yml @@ -16,7 +16,7 @@ jobs: - name: Setup cmake uses: jwlawson/actions-setup-cmake@v2 with: - cmake-version: '4.0.2' + cmake-version: '4.0.3' - name: Setup Ninja run: sudo apt-get install ninja-build @@ -26,7 +26,7 @@ jobs: - uses: nttld/setup-ndk@v1 with: - ndk-version: r28b + ndk-version: r28c - name: Get Commit Message id: commitMessage diff --git a/.github/workflows/pullRequest.yml b/.github/workflows/pullRequest.yml index c9d69c01..e26f8f2e 100644 --- a/.github/workflows/pullRequest.yml +++ b/.github/workflows/pullRequest.yml @@ -24,7 +24,7 @@ jobs: - name: Setup cmake uses: jwlawson/actions-setup-cmake@v2 with: - cmake-version: '4.0.2' + cmake-version: '4.0.3' - name: Setup Ninja run: sudo apt-get install ninja-build @@ -34,7 +34,7 @@ jobs: - uses: nttld/setup-ndk@v1 with: - ndk-version: r28b + ndk-version: r28c - name: Setup JDK uses: actions/setup-java@v4 diff --git a/app/build.gradle.kts b/app/build.gradle.kts index bb267b31..e1fe3742 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -12,7 +12,7 @@ android { compileSdk = 36 buildToolsVersion = "36.0.0" buildFeatures.dataBinding = true - ndkVersion = "28.1.13356709" + ndkVersion = "28.2.13676358" buildFeatures.viewBinding = true buildFeatures.buildConfig = true @@ -20,8 +20,8 @@ android { applicationId = "de.dertyp7214.rboardthememanager" minSdk = 23 targetSdk = 36 - versionCode = 395008 - versionName = "3.9.5" + versionCode = 396000 + versionName = "3.9.6" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -83,8 +83,6 @@ dependencies { implementation(project(":mathc")) implementation(project(":rboardcomponents")) implementation(platform(libs.firebase.bom)) - implementation(libs.firebase.messaging.ktx) - implementation(libs.firebase.analytics.ktx) implementation(libs.protobuf.dynamic) diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ManageRepoThemePackAdapter.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ManageRepoThemePackAdapter.kt index ecb4b154..4abbad07 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ManageRepoThemePackAdapter.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ManageRepoThemePackAdapter.kt @@ -1,19 +1,29 @@ package de.dertyp7214.rboardthememanager.adapter +import android.content.Context +import android.os.Build import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.core.view.marginBottom +import androidx.core.view.marginTop import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.card.MaterialCardView +import com.tbuonomo.viewpagerdotsindicator.setBackgroundCompat import de.dertyp7214.rboardthememanager.R +import de.dertyp7214.rboardthememanager.core.dpToPxRounded +import de.dertyp7214.rboardthememanager.core.setMargin import de.dertyp7214.rboardthememanager.data.ThemePack -class ManageRepoThemePackAdapter(private val items: List) : +class ManageRepoThemePackAdapter(private val context: Context,private val items: List) : RecyclerView.Adapter() { class ViewHolder(v: View) : RecyclerView.ViewHolder(v) { val title: TextView = v.findViewById(R.id.title) val author: TextView = v.findViewById(R.id.author) + val card: MaterialCardView = v.findViewById(R.id.card) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { @@ -26,6 +36,70 @@ class ManageRepoThemePackAdapter(private val items: List) : override fun onBindViewHolder(holder: ViewHolder, position: Int) { val item = items[position] + when (position) { + 0 -> { + if (items.size == 1){ + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + holder.card.setBackgroundResource(R.drawable.color_surface_overlay_background_rounded) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + + } + else{ + holder.card.setBackgroundCompat(ContextCompat.getDrawable(context,R.drawable.color_surface_overlay_background_rounded)) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + + } + } + else{ + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + holder.card.setBackgroundResource(R.drawable.color_surface_overlay_background_top) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + + } + else{ + holder.card.setBackgroundCompat(ContextCompat.getDrawable(context,R.drawable.color_surface_overlay_background_top)) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + + } + } + } + items.lastIndex -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + holder.card.setBackgroundResource(R.drawable.color_surface_overlay_background_bottom) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 4.dpToPxRounded(context)) + holder.card.layoutParams = param + } + else{ + holder.card.setBackgroundCompat(ContextCompat.getDrawable(context,R.drawable.color_surface_overlay_background_bottom)) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 4.dpToPxRounded(context)) + holder.card.layoutParams = param + } + } + else -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + holder.card.setBackgroundResource(R.drawable.color_surface_overlay_background) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + } + else{ + holder.card.setBackgroundCompat(ContextCompat.getDrawable(context,R.drawable.color_surface_overlay_background)) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + } + } + } holder.title.text = item.name holder.author.text = item.author } diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ShareFlagsAdapter.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ShareFlagsAdapter.kt index c903a606..bfce6064 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ShareFlagsAdapter.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ShareFlagsAdapter.kt @@ -1,16 +1,26 @@ package de.dertyp7214.rboardthememanager.adapter import android.annotation.SuppressLint +import android.content.Context +import android.os.Build import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.core.view.marginBottom +import androidx.core.view.marginTop import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.card.MaterialCardView import com.google.android.material.checkbox.MaterialCheckBox +import com.tbuonomo.viewpagerdotsindicator.setBackgroundCompat import de.dertyp7214.rboardthememanager.R +import de.dertyp7214.rboardthememanager.core.dpToPxRounded +import de.dertyp7214.rboardthememanager.core.setMargin import java.util.* -class ShareFlagsAdapter(val flags: List, private val onClick: (key: String) -> Unit) : +class ShareFlagsAdapter( + private val context: Context, val flags: List, private val onClick: (key: String) -> Unit) : RecyclerView.Adapter() { init { @@ -42,6 +52,7 @@ class ShareFlagsAdapter(val flags: List, private val onClick: (key: Stri val title: TextView = v.findViewById(R.id.title) val summary: TextView = v.findViewById(R.id.summary) val checkBox: MaterialCheckBox = v.findViewById(R.id.checkBox) + val card: MaterialCardView = v.findViewById(R.id.share_flags_card) } override fun getItemId(position: Int): Long { @@ -56,6 +67,70 @@ class ShareFlagsAdapter(val flags: List, private val onClick: (key: Stri override fun onBindViewHolder(holder: ViewHolder, position: Int) { val flag = flags[position] + when (position) { + 0 -> { + if (flags.size == 1){ + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + holder.card.setBackgroundResource(R.drawable.color_surface_overlay_background_rounded) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + + } + else{ + holder.card.setBackgroundCompat(ContextCompat.getDrawable(context,R.drawable.color_surface_overlay_background_rounded)) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + + } + } + else{ + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + holder.card.setBackgroundResource(R.drawable.color_surface_overlay_background_top) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + + } + else{ + holder.card.setBackgroundCompat(ContextCompat.getDrawable(context,R.drawable.color_surface_overlay_background_top)) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + + } + } + } + flags.lastIndex -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + holder.card.setBackgroundResource(R.drawable.color_surface_overlay_background_bottom) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 4.dpToPxRounded(context)) + holder.card.layoutParams = param + } + else{ + holder.card.setBackgroundCompat(ContextCompat.getDrawable(context,R.drawable.color_surface_overlay_background_bottom)) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 4.dpToPxRounded(context)) + holder.card.layoutParams = param + } + } + else -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + holder.card.setBackgroundResource(R.drawable.color_surface_overlay_background) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + } + else{ + holder.card.setBackgroundCompat(ContextCompat.getDrawable(context,R.drawable.color_surface_overlay_background)) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + } + } + } holder.checkBox.isChecked = states[flag] == true holder.checkBox.setOnClickListener { diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ThemeAdapter.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ThemeAdapter.kt index e0587918..d6590331 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ThemeAdapter.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ThemeAdapter.kt @@ -3,7 +3,6 @@ package de.dertyp7214.rboardthememanager.adapter import android.annotation.SuppressLint import android.content.Context import android.graphics.Color -import android.graphics.drawable.ColorDrawable import android.graphics.drawable.GradientDrawable import android.view.LayoutInflater import android.view.View @@ -15,20 +14,20 @@ import android.widget.ImageView import android.widget.TextView import androidx.core.content.ContextCompat import androidx.core.graphics.drawable.toBitmap +import androidx.core.graphics.drawable.toDrawable import androidx.core.graphics.get import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.card.MaterialCardView import com.google.android.material.color.MaterialColors import de.dertyp7214.colorutilsc.ColorUtilsC +import de.dertyp7214.rboardcomponents.utils.doAsync import de.dertyp7214.rboardthememanager.R import de.dertyp7214.rboardthememanager.core.getAttr import de.dertyp7214.rboardthememanager.core.setAll import de.dertyp7214.rboardthememanager.data.ThemeDataClass import de.dertyp7214.rboardthememanager.utils.TraceWrapper -import de.dertyp7214.rboardcomponents.utils.doAsync import de.dertyp7214.rboardthememanager.utils.getActiveTheme -import androidx.core.graphics.drawable.toDrawable class ThemeAdapter( private val context: Context, diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ThemePackAdapter.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ThemePackAdapter.kt index da3692a7..e153f32c 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ThemePackAdapter.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/adapter/ThemePackAdapter.kt @@ -3,6 +3,7 @@ package de.dertyp7214.rboardthememanager.adapter import android.annotation.SuppressLint import android.content.Context import android.content.Intent +import android.os.Build import android.text.TextUtils import android.view.LayoutInflater import android.view.View @@ -10,20 +11,27 @@ import android.view.ViewGroup import android.widget.LinearLayout import android.widget.TextView import androidx.activity.result.ActivityResultLauncher +import androidx.core.content.ContextCompat import androidx.core.view.isVisible +import androidx.core.view.marginBottom +import androidx.core.view.marginTop import androidx.fragment.app.FragmentActivity import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.card.MaterialCardView +import com.tbuonomo.viewpagerdotsindicator.setBackgroundCompat import de.dertyp7214.rboardcomponents.utils.doAsync import de.dertyp7214.rboardthememanager.Config import de.dertyp7214.rboardthememanager.R import de.dertyp7214.rboardthememanager.components.NewsCards import de.dertyp7214.rboardthememanager.core.download +import de.dertyp7214.rboardthememanager.core.dpToPxRounded import de.dertyp7214.rboardthememanager.core.fontSize import de.dertyp7214.rboardthememanager.core.format import de.dertyp7214.rboardthememanager.core.openDialog import de.dertyp7214.rboardthememanager.core.openUrl import de.dertyp7214.rboardthememanager.core.parseRepo import de.dertyp7214.rboardthememanager.core.preferences +import de.dertyp7214.rboardthememanager.core.setMargin import de.dertyp7214.rboardthememanager.core.toHumanReadableBytes import de.dertyp7214.rboardthememanager.core.zeroOrNull import de.dertyp7214.rboardthememanager.data.ThemePack @@ -51,6 +59,7 @@ class ThemePackAdapter( val author: TextView = v.findViewById(R.id.author) val lastUpdate: TextView = v.findViewById(R.id.lastUpdate) val newTagLinearLayout: LinearLayout = v.findViewById(R.id.newTagLinearLayout) + val card: MaterialCardView = v.findViewById(R.id.card) } class NewsViewHolder(v: NewsCards) : RecyclerView.ViewHolder(v) { @@ -71,6 +80,70 @@ class ThemePackAdapter( val themePack = list[position] if (holder is ViewHolder) { + when (position) { + 1 -> { + if (list.size == 2){ + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + holder.card.setBackgroundResource(R.drawable.color_surface_overlay_background_rounded) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + + } + else{ + holder.card.setBackgroundCompat(ContextCompat.getDrawable(context,R.drawable.color_surface_overlay_background_rounded)) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + + } + } + else{ + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + holder.card.setBackgroundResource(R.drawable.color_surface_overlay_background_top) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + + } + else{ + holder.card.setBackgroundCompat(ContextCompat.getDrawable(context,R.drawable.color_surface_overlay_background_top)) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + + } + } + } + list.lastIndex -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + holder.card.setBackgroundResource(R.drawable.color_surface_overlay_background_bottom) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 4.dpToPxRounded(context)) + holder.card.layoutParams = param + } + else{ + holder.card.setBackgroundCompat(ContextCompat.getDrawable(context,R.drawable.color_surface_overlay_background_bottom)) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 4.dpToPxRounded(context)) + holder.card.layoutParams = param + } + } + else -> { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + holder.card.setBackgroundResource(R.drawable.color_surface_overlay_background) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + } + else{ + holder.card.setBackgroundCompat(ContextCompat.getDrawable(context,R.drawable.color_surface_overlay_background)) + val param = holder.card.layoutParams as ViewGroup.MarginLayoutParams + param.setMargins(16.dpToPxRounded(context), 0.dpToPxRounded(context), 16.dpToPxRounded(context), 0.dpToPxRounded(context)) + holder.card.layoutParams = param + } + } + } holder.size.text = "${themePack.themes?.size?.let { "($it)" } ?: ""} ${ themePack.size.zeroOrNull { diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/fragments/DownloadListFragment.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/fragments/DownloadListFragment.kt index 7b4f418c..27588cad 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/fragments/DownloadListFragment.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/fragments/DownloadListFragment.kt @@ -2,10 +2,14 @@ package de.dertyp7214.rboardthememanager.fragments import android.annotation.SuppressLint import android.app.Activity +import android.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.WindowInsets +import android.view.WindowInsetsAnimation +import android.view.WindowInsetsAnimation.Callback.DISPATCH_MODE_STOP import androidx.activity.result.contract.ActivityResultContracts import androidx.fragment.app.Fragment import androidx.recyclerview.widget.RecyclerView @@ -25,7 +29,12 @@ import de.dertyp7214.rboardthememanager.utils.* import de.dertyp7214.rboardcomponents.utils.asyncInto import de.dertyp7214.rboardcomponents.utils.doAsyncCallback import de.dertyp7214.rboardthememanager.Config +import de.dertyp7214.rboardthememanager.components.MarginItemDecoration +import de.dertyp7214.rboardthememanager.core.dp +import de.dertyp7214.rboardthememanager.core.dpToPxRounded +import de.dertyp7214.rboardthememanager.core.setMargin import de.dertyp7214.rboardthememanager.viewmodels.MainViewModel +import java.lang.Integer.max class DownloadListFragment : Fragment() { @@ -169,7 +178,31 @@ class DownloadListFragment : Fragment() { recyclerView.layoutManager = LayoutManager(requireContext()) recyclerView.setHasFixedSize(false) recyclerView.adapter = adapter - + recyclerView.addItemDecoration(MarginItemDecoration(2.dpToPxRounded(requireContext()))) + recyclerView.setOnApplyWindowInsetsListener { insetsView, windowInsets -> + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + insetsView.setMargin( + bottomMargin = max( + windowInsets.getInsets(WindowInsets.Type.systemBars() or WindowInsets.Type.ime()).bottom - 90.dp( + requireContext() + ) - windowInsets.getInsets(WindowInsets.Type.navigationBars()).bottom, + 2.dp(requireContext()) + ) + ) + } + windowInsets + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + recyclerView.setWindowInsetsAnimationCallback(object : + WindowInsetsAnimation.Callback(DISPATCH_MODE_STOP) { + override fun onProgress( + insets: WindowInsets, + runningAnimations: MutableList + ): WindowInsets { + return insets + } + }) + } trace.addSplit("CHIP CONTAINER") chipContainer.setOnFilterToggle { filters -> diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/fragments/ThemeListFragment.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/fragments/ThemeListFragment.kt index 81b3688e..8b52f515 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/fragments/ThemeListFragment.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/fragments/ThemeListFragment.kt @@ -79,7 +79,7 @@ class ThemeListFragment : Fragment() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { insetsView.setMargin( bottomMargin = max( - windowInsets.getInsets(WindowInsets.Type.systemBars() or WindowInsets.Type.ime()).bottom - 64.dp( + windowInsets.getInsets(WindowInsets.Type.systemBars() or WindowInsets.Type.ime()).bottom - 80.dp( requireContext() ) - windowInsets.getInsets(WindowInsets.Type.navigationBars()).bottom, 2.dp(requireContext()) @@ -117,7 +117,7 @@ class ThemeListFragment : Fragment() { recyclerView.layoutManager = LayoutManager(requireContext()) recyclerView.setHasFixedSize(false) recyclerView.adapter = adapter - recyclerView.addItemDecoration(MarginItemDecoration(2.1.dpToPxRounded(requireContext()))) + recyclerView.addItemDecoration(MarginItemDecoration(2.dpToPxRounded(requireContext()))) if (mainViewModel.getThemes().isEmpty() && mainViewModel.loaded()) { refreshLayout.isRefreshing = true diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/preferences/Settings.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/preferences/Settings.kt index ea0fab0c..0b3cadc1 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/preferences/Settings.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/preferences/Settings.kt @@ -12,6 +12,7 @@ import android.widget.Toast import androidx.annotation.DrawableRes import androidx.annotation.StringRes import androidx.appcompat.app.AppCompatDelegate +import androidx.core.content.ContextCompat import androidx.preference.PreferenceManager import androidx.recyclerview.widget.RecyclerView import com.topjohnwu.superuser.io.SuFile diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/screens/InstallPackActivity.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/screens/InstallPackActivity.kt index b6121f44..df7b3c21 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/screens/InstallPackActivity.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/screens/InstallPackActivity.kt @@ -20,6 +20,7 @@ import de.dertyp7214.rboardthememanager.components.MarginItemDecoration import de.dertyp7214.rboardthememanager.core.applyTheme import de.dertyp7214.rboardthememanager.core.decodeBitmap import de.dertyp7214.rboardthememanager.core.dp +import de.dertyp7214.rboardthememanager.core.dpToPxRounded import de.dertyp7214.rboardthememanager.core.install import de.dertyp7214.rboardthememanager.core.isInstalled import de.dertyp7214.rboardthememanager.core.openPreviewDialog @@ -88,6 +89,10 @@ class InstallPackActivity : AppCompatActivity() { this, R.drawable.ic_baseline_arrow_back_24 ) + + supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_toolbar_back_background) + toolbar.navigationIcon = ContextCompat.getDrawable( + this,R.drawable.ic_toolbar_back_background) toolbar.setNavigationOnClickListener { onBackPressedDispatcher.onBackPressed() } @@ -176,7 +181,7 @@ class InstallPackActivity : AppCompatActivity() { recyclerview.layoutManager = LinearLayoutManager(this) recyclerview.setHasFixedSize(true) recyclerview.adapter = adapter - recyclerview.addItemDecoration(MarginItemDecoration(2.dp(this), all = true)) + recyclerview.addItemDecoration(MarginItemDecoration(2.dpToPxRounded(this))) } companion object { diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/screens/MainActivity.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/screens/MainActivity.kt index 2e312e73..f2de57fc 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/screens/MainActivity.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/screens/MainActivity.kt @@ -23,6 +23,7 @@ import androidx.activity.enableEdgeToEdge import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity +import androidx.compose.ui.Modifier import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import androidx.core.content.ContextCompat @@ -174,6 +175,8 @@ class MainActivity : AppCompatActivity() { mainViewModel = this[MainViewModel::class.java] val searchToolBar = binding.searchToolbar + searchToolBar.navigationIcon = ContextCompat.getDrawable( + this,R.drawable.ic_toolbar_back_background) val mainContent = binding.mainContent val bottomSheet = findViewById(R.id.bottom_bar) val navigationHolder = @@ -345,9 +348,6 @@ class MainActivity : AppCompatActivity() { mainContent.foreground.alpha = (slideOffset * 255).toInt() } }) - - searchToolBar.navigationIcon = - ContextCompat.getDrawable(this, R.drawable.ic_baseline_arrow_back_24) searchToolBar.setNavigationOnClickListener { mainViewModel.getSelections().second?.clearSelection() } searchToolBar.setOnMenuItemClickListener { item -> diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/screens/ManageRepo.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/screens/ManageRepo.kt index 7bb0c825..acb22ba2 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/screens/ManageRepo.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/screens/ManageRepo.kt @@ -19,7 +19,9 @@ import de.dertyp7214.rboardcomponents.utils.doAsync import de.dertyp7214.rboardthememanager.R import de.dertyp7214.rboardthememanager.adapter.ManageRepoThemePackAdapter import de.dertyp7214.rboardthememanager.components.LayoutManager +import de.dertyp7214.rboardthememanager.components.MarginItemDecoration import de.dertyp7214.rboardthememanager.core.applyTheme +import de.dertyp7214.rboardthememanager.core.dpToPxRounded import de.dertyp7214.rboardthememanager.core.getTextFromUrl import de.dertyp7214.rboardthememanager.core.openDialog import de.dertyp7214.rboardthememanager.core.safeParse @@ -88,11 +90,12 @@ class ManageRepo : AppCompatActivity() { } val items = ArrayList() - val adapter = ManageRepoThemePackAdapter(items) + val adapter = ManageRepoThemePackAdapter(this, items) recyclerView.layoutManager = LayoutManager(this) recyclerView.adapter = adapter recyclerView.setHasFixedSize(true) + recyclerView.addItemDecoration(MarginItemDecoration(2.dpToPxRounded(this))) toolbar.title = getString(R.string.manage_repo) @@ -108,9 +111,10 @@ class ManageRepo : AppCompatActivity() { Snackbar.LENGTH_LONG).showMaterial() } toolbar.menu.findItem(R.id.enabled).isChecked = enabled - toolbar.navigationIcon = - ContextCompat.getDrawable(this, R.drawable.ic_baseline_arrow_back_24) toolbar.setNavigationOnClickListener { onBackPressedDispatcher.onBackPressed() } + supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_toolbar_back_background) + toolbar.navigationIcon = ContextCompat.getDrawable( + this,R.drawable.ic_toolbar_back_background) toolbar.setOnMenuItemClickListener { when (it.itemId) { R.id.delete -> diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/screens/PreferencesActivity.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/screens/PreferencesActivity.kt index fcb8f4ea..0ae65cd6 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/screens/PreferencesActivity.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/screens/PreferencesActivity.kt @@ -14,10 +14,12 @@ import androidx.activity.SystemBarStyle import androidx.activity.enableEdgeToEdge import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import de.Maxr1998.modernpreferences.PreferencesAdapter import de.dertyp7214.rboardcomponents.utils.doAsync +import de.dertyp7214.rboardthememanager.R import de.dertyp7214.rboardthememanager.core.addCallback import de.dertyp7214.rboardthememanager.core.applyTheme import de.dertyp7214.rboardthememanager.databinding.ActivityPreferencesBinding @@ -78,6 +80,7 @@ class PreferencesActivity : AppCompatActivity() { setContentView(binding.root) instances.add(this) val preferencesToolbar = binding.preferencesToolbar + val appBarLayout = binding.appBarLayout val loadingPreferences = binding.loadingPreferences val extraContent = binding.extraContent recyclerView = binding.recyclerView @@ -99,9 +102,12 @@ class PreferencesActivity : AppCompatActivity() { } setSupportActionBar(preferencesToolbar) + supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_toolbar_back_background) + preferencesToolbar.navigationIcon = ContextCompat.getDrawable( + this,R.drawable.ic_toolbar_back_background) supportActionBar?.setDisplayHomeAsUpEnabled(true) + appBarLayout.setExpanded(false) title = preferences.title - preferencesToolbar.applyInsetter { type(statusBars = true) { margin() @@ -113,7 +119,6 @@ class PreferencesActivity : AppCompatActivity() { margin() } } - recyclerView.layoutManager = LinearLayoutManager(this) doAsync({ PreferencesAdapter(preferences.preferences) }) { loadingPreferences.visibility = View.GONE diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/screens/ShareFlags.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/screens/ShareFlags.kt index c8bf5a4b..620530c2 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/screens/ShareFlags.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/screens/ShareFlags.kt @@ -6,6 +6,7 @@ import android.annotation.SuppressLint import android.content.Intent import android.content.Intent.ACTION_SEND import android.graphics.Color +import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Icon import android.os.Build import android.os.Bundle @@ -16,14 +17,18 @@ import androidx.activity.OnBackPressedCallback import androidx.activity.SystemBarStyle import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContentProviderCompat.requireContext +import androidx.core.content.ContextCompat import androidx.core.view.WindowCompat import de.dertyp7214.rboardcomponents.components.SearchBar import de.dertyp7214.rboardthememanager.R import de.dertyp7214.rboardthememanager.adapter.ShareFlagsAdapter import de.dertyp7214.rboardthememanager.components.LayoutManager +import de.dertyp7214.rboardthememanager.components.MarginItemDecoration import de.dertyp7214.rboardthememanager.components.XMLFile import de.dertyp7214.rboardthememanager.core.addCallback import de.dertyp7214.rboardthememanager.core.applyTheme +import de.dertyp7214.rboardthememanager.core.dpToPxRounded import de.dertyp7214.rboardthememanager.core.getMapExtra import de.dertyp7214.rboardthememanager.core.safeIcon import de.dertyp7214.rboardthememanager.core.share @@ -98,6 +103,9 @@ class ShareFlags : AppCompatActivity() { setSupportActionBar(toolbar) supportActionBar?.setDisplayHomeAsUpEnabled(true) + supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_toolbar_back_background) + toolbar.navigationIcon = ContextCompat.getDrawable( + this,R.drawable.ic_toolbar_back_background) title = getString(titleRes, 0) flags = if (!import) if (isFlags) Flags.flagValues else Flags.prefValues @@ -105,12 +113,13 @@ class ShareFlags : AppCompatActivity() { val orig = ArrayList(flags.simpleMap().map { it.key }) val flagKeys = ArrayList(orig) - adapter = ShareFlagsAdapter(flagKeys) { + adapter = ShareFlagsAdapter(this, flagKeys) { title = getString(titleRes, adapter.getSelectedFlags().size) } recyclerView.layoutManager = LayoutManager(this) recyclerView.adapter = adapter + recyclerView.addItemDecoration(MarginItemDecoration(2.dpToPxRounded(this))) recyclerView.setHasFixedSize(true) searchBar.instantSearch = true diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/screens/ThemeChangerActivity.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/screens/ThemeChangerActivity.kt index ef62caec..714e19c8 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/screens/ThemeChangerActivity.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/screens/ThemeChangerActivity.kt @@ -14,6 +14,7 @@ import androidx.activity.SystemBarStyle import androidx.activity.enableEdgeToEdge import androidx.annotation.StyleRes import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat import androidx.viewpager.widget.PagerAdapter import androidx.viewpager.widget.ViewPager import com.google.android.material.appbar.MaterialToolbar @@ -84,6 +85,9 @@ class ThemeChangerActivity : AppCompatActivity() { } setSupportActionBar(toolbar) supportActionBar?.setDisplayHomeAsUpEnabled(true) + supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_toolbar_back_background) + toolbar.navigationIcon = ContextCompat.getDrawable( + this,R.drawable.ic_toolbar_back_background) title = getString(R.string.theme_changer) diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/utils/AppStartUp.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/utils/AppStartUp.kt index 63d78c35..bfc9b30e 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/utils/AppStartUp.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/utils/AppStartUp.kt @@ -472,8 +472,10 @@ class AppStartUp(private val activity: AppCompatActivity) { when { !gboardInstalled -> openDialog( R.string.install_gboard, - R.string.gboard_not_installed - ) { + R.string.gboard_not_installed, false, { + finish() + }) { + finish() openUrl(gboardPlayStoreUrl) } diff --git a/app/src/main/java/de/dertyp7214/rboardthememanager/widgets/SwitchKeyboardWidgetConfigureActivity.kt b/app/src/main/java/de/dertyp7214/rboardthememanager/widgets/SwitchKeyboardWidgetConfigureActivity.kt index e2bb00a1..13907731 100644 --- a/app/src/main/java/de/dertyp7214/rboardthememanager/widgets/SwitchKeyboardWidgetConfigureActivity.kt +++ b/app/src/main/java/de/dertyp7214/rboardthememanager/widgets/SwitchKeyboardWidgetConfigureActivity.kt @@ -21,6 +21,7 @@ import de.dertyp7214.rboardthememanager.core.dpToPxRounded import de.dertyp7214.rboardthememanager.data.ThemeDataClass import de.dertyp7214.rboardthememanager.databinding.SwitchKeyboardWidgetConfigureBinding import de.dertyp7214.rboardthememanager.utils.ThemeUtils +import dev.chrisbanes.insetter.applyInsetter class SwitchKeyboardWidgetConfigureActivity : AppCompatActivity() { private var appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID @@ -68,11 +69,18 @@ class SwitchKeyboardWidgetConfigureActivity : AppCompatActivity() { Intent().apply { putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) }) finish() } - recyclerView = binding.recyclerView recyclerView.adapter = adapter + recyclerView.applyInsetter { + type(navigationBars = true) { + margin() + } + type(statusBars = true) { + margin() + } + } recyclerView.layoutManager = LinearLayoutManager(this) - recyclerView.addItemDecoration(MarginItemDecoration(2.1.dpToPxRounded(this))) + recyclerView.addItemDecoration(MarginItemDecoration(2.dpToPxRounded(this))) doAsync(ThemeUtils::loadThemes) { themes -> list.addAll(themes) diff --git a/app/src/main/res/drawable/actionbar_overlay_background.xml b/app/src/main/res/drawable/actionbar_overlay_background.xml new file mode 100644 index 00000000..abab8863 --- /dev/null +++ b/app/src/main/res/drawable/actionbar_overlay_background.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/color_surface_overlay_background.xml b/app/src/main/res/drawable/color_surface_overlay_background.xml index 0c27a693..8e243338 100644 --- a/app/src/main/res/drawable/color_surface_overlay_background.xml +++ b/app/src/main/res/drawable/color_surface_overlay_background.xml @@ -3,11 +3,13 @@ + + diff --git a/app/src/main/res/drawable/color_surface_overlay_background_bottom.xml b/app/src/main/res/drawable/color_surface_overlay_background_bottom.xml new file mode 100644 index 00000000..56789120 --- /dev/null +++ b/app/src/main/res/drawable/color_surface_overlay_background_bottom.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/color_surface_overlay_background_rounded.xml b/app/src/main/res/drawable/color_surface_overlay_background_rounded.xml new file mode 100644 index 00000000..35ca2c2c --- /dev/null +++ b/app/src/main/res/drawable/color_surface_overlay_background_rounded.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/color_surface_overlay_background_top.xml b/app/src/main/res/drawable/color_surface_overlay_background_top.xml new file mode 100644 index 00000000..66a48eb4 --- /dev/null +++ b/app/src/main/res/drawable/color_surface_overlay_background_top.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/default_switch_icon.xml b/app/src/main/res/drawable/default_switch_icon.xml new file mode 100644 index 00000000..ae43cb03 --- /dev/null +++ b/app/src/main/res/drawable/default_switch_icon.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_repo_copy.xml b/app/src/main/res/drawable/ic_repo_copy.xml index a210675f..456a5868 100644 --- a/app/src/main/res/drawable/ic_repo_copy.xml +++ b/app/src/main/res/drawable/ic_repo_copy.xml @@ -1,11 +1,10 @@ + android:viewportHeight="24" + android:tint="?attr/colorControlNormal"> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_toolbar_back_background.xml b/app/src/main/res/drawable/ic_toolbar_back_background.xml new file mode 100644 index 00000000..6a3f880c --- /dev/null +++ b/app/src/main/res/drawable/ic_toolbar_back_background.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_install_pack.xml b/app/src/main/res/layout/activity_install_pack.xml index f3fd2384..4f43bc5a 100644 --- a/app/src/main/res/layout/activity_install_pack.xml +++ b/app/src/main/res/layout/activity_install_pack.xml @@ -1,17 +1,20 @@ - + android:fitsSystemWindows="true" + android:orientation="vertical"> - + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 8ef30ae1..342bfc10 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -33,7 +33,7 @@ android:layout_height="wrap_content" android:layout_marginBottom="4dp" android:translationZ="2dp" - style="@style/Widget.Material3Expressive.SearchBar" + android:layout_marginHorizontal="10dp" app:layout_constraintBottom_toTopOf="@+id/fragmentContainerView" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout/activity_manage_repo.xml b/app/src/main/res/layout/activity_manage_repo.xml index d870faff..1c0158dc 100644 --- a/app/src/main/res/layout/activity_manage_repo.xml +++ b/app/src/main/res/layout/activity_manage_repo.xml @@ -11,7 +11,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" - android:background="@drawable/color_surface_overlay_background" + android:paddingHorizontal="10dp" + android:background="@drawable/actionbar_overlay_background" app:background="@android:color/transparent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -43,7 +44,8 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:orientation="vertical" - android:padding="8dp" + android:paddingVertical="8dp" + android:paddingHorizontal="0dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -55,13 +57,16 @@ android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textColor="?attr/colorSecondary" android:textSize="12sp" + android:layout_marginHorizontal="16dp" tools:ignore="TextContrastCheck" /> - + android:orientation="horizontal" + android:paddingVertical="7dp" + android:layout_marginHorizontal="16dp"> - - @@ -106,18 +111,20 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/theme_pack_count" + android:layout_marginHorizontal="16dp" android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textColor="?attr/colorSecondary" android:textSize="12sp" tools:ignore="TextContrastCheck" /> - + tools:text="20" + android:paddingVertical="7dp" + android:layout_marginHorizontal="16dp"/> diff --git a/app/src/main/res/layout/activity_preferences.xml b/app/src/main/res/layout/activity_preferences.xml index bf755bdf..9c7a8cbc 100644 --- a/app/src/main/res/layout/activity_preferences.xml +++ b/app/src/main/res/layout/activity_preferences.xml @@ -20,17 +20,22 @@ diff --git a/app/src/main/res/layout/activity_share_flags.xml b/app/src/main/res/layout/activity_share_flags.xml index 3620f87e..8c61c8a2 100644 --- a/app/src/main/res/layout/activity_share_flags.xml +++ b/app/src/main/res/layout/activity_share_flags.xml @@ -11,7 +11,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" - android:background="@drawable/color_surface_overlay_background" + android:paddingHorizontal="10dp" + app:elevation="0dp" + android:background="@drawable/actionbar_overlay_background" app:background="@android:color/transparent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -33,6 +35,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" + android:background="?attr/colorSurface" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -41,7 +44,6 @@ @@ -22,6 +22,7 @@ android:fitsSystemWindows="true" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="?attr/colorSurface" android:minHeight="?attr/actionBarSize" android:textAlignment="center" android:theme="?attr/actionBarTheme"/> diff --git a/app/src/main/res/layout/chip_container.xml b/app/src/main/res/layout/chip_container.xml index 316c1031..8830770d 100644 --- a/app/src/main/res/layout/chip_container.xml +++ b/app/src/main/res/layout/chip_container.xml @@ -2,7 +2,9 @@ + android:layout_height="wrap_content" + android:layout_marginStart="10dp" + android:layout_marginEnd="16dp"> - + - + android:minHeight="73dp" + android:layout_marginHorizontal="16dp" + app:cardElevation="0dp" + app:strokeWidth="0dp"> + + - - \ No newline at end of file + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/more_rboard_apps_dialog.xml b/app/src/main/res/layout/more_rboard_apps_dialog.xml index 8e0a056d..298c36e5 100644 --- a/app/src/main/res/layout/more_rboard_apps_dialog.xml +++ b/app/src/main/res/layout/more_rboard_apps_dialog.xml @@ -5,8 +5,7 @@ + android:layout_height="wrap_content"> - - + + + android:layout_gravity="end|center_vertical" + android:gravity="end|center_vertical"> + + \ No newline at end of file diff --git a/app/src/main/res/layout/share_flag_item.xml b/app/src/main/res/layout/share_flag_item.xml index c14b3f7a..fed2af7f 100644 --- a/app/src/main/res/layout/share_flag_item.xml +++ b/app/src/main/res/layout/share_flag_item.xml @@ -1,46 +1,73 @@ - + xmlns:tools="http://schemas.android.com/tools"> - - - + + android:layout_height="match_parent" + android:layout_gravity="center_vertical"> + - - + - - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/switch_keyboard_widget_configure.xml b/app/src/main/res/layout/switch_keyboard_widget_configure.xml index 0c38bfa0..b7bc961b 100644 --- a/app/src/main/res/layout/switch_keyboard_widget_configure.xml +++ b/app/src/main/res/layout/switch_keyboard_widget_configure.xml @@ -9,10 +9,11 @@ @style/Dialog.RboardThemeManagerV3.MaterialAlertDialog + @style/Theme.RboardThemeManagerV3.Switch @style/Widget.CollapsingToolbar diff --git a/app/src/main/res/values-v31/themes.xml b/app/src/main/res/values-v31/themes.xml index 814e5195..d561bba3 100644 --- a/app/src/main/res/values-v31/themes.xml +++ b/app/src/main/res/values-v31/themes.xml @@ -15,6 +15,7 @@ @style/Widget.CollapsingToolbar + @style/Theme.RboardThemeManagerV3.Switch @style/Widget.App.Snackbar @style/Widget.App.SnackbarTextView @@ -42,7 +43,7 @@ @color/color_primary_0_10_overlay - diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 35850454..3096d5c0 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -4,29 +4,29 @@ 主题 下载 声音 - 糟糕, 发生了一个错误! - 更新准备好了, 您想要安装它吗? + 糟糕,发生了一个错误! + 更新准备好了,您想要安装它吗? 更新 - 您想要安装 Gboard 吗? + 您想要安装 Gboard 吗? 未安装 Gboard - 您不能在没有Root权限的情况下使用此应用 - 您的设备未root + 您不能在没有 Root 权限的情况下使用此应用 + 您的设备未 root 推送通知 供更新和参考。 下载通知 下载通知 下载更新 - 正在下载更新(%s) + 正在下载更新 (%s) 下载完成 下载时出错 重启 - 现在重启? + 现在重启? 您必须重启系统才能让模块工作 应用主题 应用自动主题 主题已应用 删除主题 - 您想要删除此主题吗? + 您想要删除此主题吗? 主题已删除 信息 主题计数 @@ -38,7 +38,7 @@ Android 版本 Root 版本 Gboard 版本 - 不受支持的ROM + 不受支持的 ROM 分享 @@ -53,10 +53,10 @@ 安装 已安装的主题 解压主题 - 您想要删除这些主题吗? + 您想要删除这些主题吗? 显示预安装的主题 表情符号兼容性修复 - Gboard flag值设置 + Gboard flag 值设置 主题 显示系统主题 启用摇杆删除 @@ -68,12 +68,12 @@ 启用按键边框 长按输入符号 显示建议 - 显示所有flag值 - 显示所有当前设置的flag值 - 所有flag值 + 显示所有 flag 值 + 显示所有当前设置的 flag 值 + 所有 flag 值 加载项目 默认使用 Silk 主题 - Monet主题 + Monet 主题 在所有设备上使用 Silk 主题 在所有 Pixel 上使用 Silk 主题 Silk 主题 @@ -81,7 +81,7 @@ 通用 Google 空格标志 在空格上显示 G 标志 - 在多窗口中自动启用悬浮键盘 + 自动启用悬浮键盘 药丸形按键 启用剪贴板截图 启用智能镜头 @@ -95,17 +95,17 @@ 更改主题仓库 应用 添加 - 您想要应用这些更改吗? + 您想要应用这些更改吗? 仓库 URL 仓库已添加 配置 添加小部件 键盘切换部件 - 切换flag值部件 - 已应用的flag值 + 切换 flag 值部件 + 已应用的 flag 值 这是一个主题包 描述 - 点击加快系统运行, 芜湖~~ + 点击加快系统运行,芜湖~ 过滤器设置 设置 选择所有 @@ -118,36 +118,36 @@ 深色 浅色 跟随系统 - %o 个flag值已加载 + %o 个 flag 值已加载 在主题部分显示预安装的主题 在主题部分显示系统主题 加速进程 关键字 - 此应用尚未发布, 某些功能可能无法工作。请不要向主群组报告任何错误。 + 此应用尚未发布,某些功能可能无法工作。请不要向主群组报告任何错误。 通知 - 已应用flag值 - 找到现有的主题路径, 您是否仍然想要安装模块? + 已应用 flag 值 + 找到现有的主题路径,您是否仍然想要安装模块? 安装模块 - 你想直接加载主题到 Gboard 吗? 或者继续使用模块 + 你想直接加载主题到 Gboard 吗?或者继续使用模块 使用 Magisk 模块而不是在 Gboard 中加载主题 模块 使用 Magisk 使用 Gboard - 只显示禁用的flag值 - 分享flag值 - 分享flag值 (%o) - 导入flag值 (%o) + 只显示禁用的 flag 值 + 分享 flag 值 + 分享 flag 值 (%o) + 导入 flag 值 (%o) 分享偏好选项 (%o) 导入偏好选项 (%o) 型号 - 处理flag值 - 加载flag值 - 发现旧的flag值备份。你想要加载它吗? + 处理 flag 值 + 加载 flag 值 + 发现旧的 flag 值备份。你想要加载它吗? 使用模糊 启用模糊效果 - 删除仓库? - 你想要删除这个仓库吗? - 你确定要删除这些仓库地址吗? + 删除仓库? + 你想要删除这个仓库吗? + 你确定要删除这些仓库地址吗? 管理资源仓库 链接 已启用 @@ -162,14 +162,14 @@ 启用 Bitmoji 不报告此错误。 菜单现在在底部面板中。 - 修复flag值 - 删除flag值并强制关闭 Gboard。 - flag值已修复 - Flag值文件已复制 - 尝试转到设置并单击\"修复flag值\" - flag值似乎已损坏 + 修复 flag 值 + 删除 flag 值并强制关闭 Gboard。 + flag 值已修复 + Flag 值文件已复制 + 尝试转到设置并单击 \"修复 flag 值 \" + flag 值似乎已损坏 按日期排序 - 返回以应用flag值 + 返回以应用 flag 值 声音已应用 主题已应用 所有首选项 @@ -210,21 +210,21 @@ 圆角半径 未设置 - 横屏-底部间距 - 横屏-左侧间距 - 横屏-右侧间距 - 竖屏-底部间距 - 竖屏-左侧间距 - 竖屏-右侧间距 + 横屏 - 底部间距 + 横屏 - 左侧间距 + 横屏 - 右侧间距 + 竖屏 - 底部间距 + 竖屏 - 左侧间距 + 竖屏 - 右侧间距 - 横屏-底部间距 - 横屏-左侧间距 - 横屏-右侧间距 - 竖屏-底部间距 - 竖屏-左侧间距 - 竖屏-右侧间距 + 横屏 - 底部间距 + 横屏 - 左侧间距 + 横屏 - 右侧间距 + 竖屏 - 底部间距 + 竖屏 - 左侧间距 + 竖屏 - 右侧间距 - 圆角半径-左 (底部) + 圆角半径 - 左 (底部) 圆角半径 (底部) 系统属性 其他属性 @@ -239,38 +239,37 @@ 帮助 获得 Bitmoji 卡片 启用「翻译」功能新界面 - 悬浮键盘V2版 + 悬浮键盘 V2 版 Silk 主题的按键反馈 Silk 主题气泡 Silk 气泡 Silk 主题的按键气泡 - 在键盘上启用 Google Sans 字体 + Google Sans 字体 Gboard 缓存已清除 清除 Gboard 缓存 清除缓存文件并强行关闭 Gboard - 清除emoji历史 - 清除最近使用过的emoji表情记录, 并强行关闭 Gboard - emoji历史记录已清除 + 清除 emoji 历史 + 清除最近使用过的 emoji 表情记录,并强行关闭 Gboard + emoji 历史记录已清除 显示语言切换键 类型 - @@ -249,32 +262,62 @@ 分享偏好项 主题修饰 分享主题 日志 打开日志页 - 复制flag值文件 - \"flag_override.xml\"]]> - 发现新的flag值 - App风格 + 复制 flag 值文件 + 复制 \"flag_value.xml\" -> \"flag_override.xml\" + 发现新的 flag 值 + App 风格 输入法测试 Rboard 输入法测试 - 不root怎么用? + 不 root 怎么用? 获取 Magisk 未检测到 Magisk - 尽管我们已尝试了各种办法, 目前没有root权限依然无法使用 - 我们提供两种安装途径\n你可以随时在设置中切换 + 尽管我们已尝试了各种办法,目前没有 root 权限依然无法使用 + 我们提供两种安装途径 \n 你可以随时在设置中切换 模块 Gboard 内置 为明暗模式分别设计的主题 @@ -301,7 +300,7 @@ 开启按键边框 长按相关的按键即可输入提示的符号 使用更圆滑的 Silk 主题气泡 - 在键盘上使用 Google Sans 字体, 需要ROM中自带该字体 + 在键盘上使用 Google Sans 字体,需要 ROM 中自带该字体 启用表情符号兼容性修复 在输入时提供电子邮件域名的补全建议 Rboard 主题修饰器 @@ -314,6 +313,16 @@ 顶部快捷栏按键数量 (有效值 3 至 8) 清除 Gboard 缓存 - 你确定要清除缓存文件, 并强行关闭 Gboard 吗? - 你确定要清除emoji表情使用记录, 并强行关闭 Gboard 吗? - + 你确定要清除缓存文件,并强行关闭 Gboard 吗? + 你确定要清除 emoji 表情使用记录,并强行关闭 Gboard 吗? + 请选择至少一个偏好项目 + 请选择至少一个 flag 值 + 重置深色主题 + 重置浅色主题 + 重置自动深浅主题 + 你确定要重置自动深浅主题,并强行关闭 Gboard 吗? + + 复制成功 + 文本预览 + 在键盘上方显示文本预览 + \ No newline at end of file diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 215ac65e..26b21632 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1,44 +1,44 @@ - 搜尋 + 搜索 主題 下載 聲音 - 糟糕, 發生了一個錯誤! - 更新準備好了, 您想要安裝它嗎? + 糟糕,發生了一個錯誤! + 更新準備好了,您想要安裝它嗎? 更新 - 您想要安裝 Gboard 嗎? + 您想要安裝 Gboard 嗎? 未安裝 Gboard - 您不能在沒有Root權限的情況下使用此應用 - 您的裝置未root + 您不能在沒有 Root 權限的情況下使用此應用 + 您的設備未 root 推送通知 供更新和參考。 下載通知 下載通知 下載更新 - 正在下載更新(%s) + 正在下載更新 (%s) 下載完成 下載時出錯 - 重啟 - 現在重啟? - 您必須重啟系統才能讓模組工作 + 重啓 + 現在重啓? + 您必須重啓系統才能讓模塊工作 應用主題 應用自動主題 主題已應用 刪除主題 - 您想要刪除此主題嗎? + 您想要刪除此主題嗎? 主題已刪除 - 資訊 + 信息 主題計數 主題路徑 安裝方法 其他 - Rboard 應用程式版本 - 裝置 + Rboard 應用程序版本 + 設備 Android 版本 Root 版本 Gboard 版本 - 不受支援的ROM + 不受支持的 ROM 分享 @@ -46,45 +46,45 @@ 名稱 作者 分享主題 - 選擇至少一個非預設主題 + 選擇至少一個非默認主題 Rboard 主題作者 正在下載包 安裝主題 (%s) 安裝 主題已安裝 解壓主題 - 您想要刪除這些主題嗎? + 您想要刪除這些主題嗎? 顯示預安裝的主題 - 表情符號相容性修復 - Gboard flag值設定 + 表情符號兼容性修復 + Gboard flag 值設置 主題 顯示系統主題 - 啟用搖桿刪除 - 在工具欄上顯示谷歌搜尋 + 啓用搖桿刪除 + 在工具欄上顯示谷歌搜索 快捷分享按鈕 導航欄顏色 電子郵件域名建議 按鍵氣泡 v2 - 啟用按鍵邊框 + 啓用按鍵邊框 長按輸入符號 顯示建議 - 顯示所有flag值 - 顯示所有當前設定的flag值 - 所有flag值 - 載入專案 - 預設使用 Silk 主題 - Monet主題 - 在所有裝置上使用 Silk 主題 + 顯示所有 flag 值 + 顯示所有當前設置的 flag 值 + 所有 flag 值 + 加載項目 + 默認使用 Silk 主題 + Monet 主題 + 在所有設備上使用 Silk 主題 在所有 Pixel 上使用 Silk 主題 Silk 主題 Android 12 通用 Google 空格標誌 在空格上顯示 G 標誌 - 在多視窗中自動啟用懸浮鍵盤 + 自動啓用懸浮鍵盤 藥丸形按鍵 - 啟用剪貼簿截圖 - 啟用智慧鏡頭 + 啓用剪貼板截圖 + 啓用智能鏡頭 Google 品牌標誌 G 標誌顯示間隔 秒 G 標誌淡出延遲 @@ -94,63 +94,63 @@ 刪除主題倉庫 更改主題倉庫 應用 - 新增 - 您想要應用這些更改嗎? + 添加 + 您想要應用這些更改嗎? 倉庫 URL - 倉庫已新增 + 倉庫已添加 配置 - 新增小部件 - 鍵盤開關部件 - 切換flag值部件 - 已應用的flag值 + 添加小部件 + 鍵盤切換部件 + 切換 flag 值部件 + 已應用的 flag 值 這是一個主題包 描述 - 點按加快系統的執行速度~~ - 過濾器設定 - 設定 + 點擊加快系統運行,Woohuuu~ + 過濾器設置 + 設置 選擇所有 管理器 - 解除安裝 - 解除安裝模組並重啟 + 卸載 + 卸載模塊並重啓 應用深色主題 應用淺色主題 應用主題 深色 淺色 跟隨系統 - %o 個flag值已載入 + %o 個 flag 值已加載 在主題部分顯示預安裝的主題 在主題部分顯示系統主題 - 加速程序 + 加速進程 關鍵字 - 此應用尚未釋出, 某些功能可能無法工作。請不要向主群組報告任何錯誤。 + 此應用尚未發佈,某些功能可能無法工作。請不要向主羣組報告任何錯誤。 通知 - 已應用flag值 - 找到現有的主題路徑, 您是否仍然想要安裝模組? - 安裝模組 - 你想直接載入主題到 Gboard 嗎? 或者繼續使用模組 - 使用 Magisk 模組而不是在 Gboard 中載入主題 - 模組 + 已應用 flag 值 + 找到現有的主題路徑,您是否仍然想要安裝模塊? + 安裝模塊 + 你想直接加載主題到 Gboard 嗎?或者繼續使用模塊 + 使用 Magisk 模塊而不是在 Gboard 中加載主題 + 模塊 使用 Magisk 使用 Gboard - 只顯示停用的flag值 - 分享flag值 - 分享flag值 (%o) - 匯入flag值 (%o) + 只顯示禁用的 flag 值 + 分享 flag 值 + 分享 flag 值 (%o) + 導入 flag 值 (%o) 分享偏好選項 (%o) - 匯入偏好選項 (%o) + 導入偏好選項 (%o) 型號 - 處理flag值 - 載入flag值 - 發現舊的flag值備份。你想要載入它嗎? + 處理 flag 值 + 加載 flag 值 + 發現舊的 flag 值備份。你想要加載它嗎? 使用模糊 - 啟用模糊效果 - 刪除倉庫? - 你想要刪除這個倉庫嗎? - 你確定要刪除這些倉庫地址嗎? + 啓用模糊效果 + 刪除倉庫? + 你想要刪除這個倉庫嗎? + 你確定要刪除這些倉庫地址嗎? 管理資源倉庫 - 連結 - 已啟用 + 鏈接 + 已啓用 主題 無效的倉庫 無效的倉庫地址。請再次檢查網址。 @@ -159,30 +159,30 @@ 主題包 關閉按鍵陰影 - 啟用 Bitmoji + 啓用 Bitmoji 不報告此錯誤。 - 選單現在在底部面板中。 - 修復flag值 - 刪除flag值並強制關閉 Gboard。 - flag值已修復 - Flag值檔案已複製 - 嘗試轉到設定並點選\"修復flag值\" - flag值似乎已損壞 + 菜單現在在底部面板中。 + 修復 flag 值 + 刪除 flag 值並強制關閉 Gboard。 + flag 值已修復 + Flag 值文件已複製 + 嘗試轉到設置並單擊 \"修復 flag 值 \" + flag 值似乎已損壞 按日期排序 - 返回以應用flag值 + 返回以應用 flag 值 聲音已應用 主題已應用 所有首選項 - 顯示所有偏好設定 - 顯示所有 Gboard 偏好設定 + 顯示所有偏好設置 + 顯示所有 Gboard 偏好設置 團隊 所有者 & 主題設計 開發者 & 主題設計 首席開發者 - 群組版主 - 連結 + 羣組版主 + 鏈接 Telegram 頻道 - Telegram 群組 + Telegram 羣組 關於 XDA 討論串 GitHub 倉庫 @@ -205,10 +205,10 @@ 2.00 最高 間距 橫屏間距 - 摺疊屏裝置間距 - 摺疊屏裝置橫屏間距 + 摺疊屏設備間距 + 摺疊屏設備橫屏間距 圓角半徑 - 未設定 + 未設置 橫屏-底部間距 橫屏-左側間距 @@ -231,83 +231,82 @@ 使用 resetprop 調整其他屬性 屬性已更改 重置 - 無效的連結 - 連結 + 無效的鏈接 + 鏈接 下載 包含的主題名字 有更新可用 (%s) 幫助 - 獲得 Bitmoji 卡片 - 啟用「翻譯」功能新介面 - 懸浮鍵盤V2版 + 啓用「翻譯」功能新界面 + 懸浮鍵盤 V2 版 Silk 主題的按鍵反饋 Silk 主題氣泡 Silk 氣泡 Silk 主題的按鍵氣泡 - 在鍵盤上啟用 Google Sans 字型 - Gboard 快取已清除 - 清除 Gboard 快取 - 清除快取檔案並強行關閉 Gboard - 清除emoji歷史 - 清除最近使用過的emoji表情記錄, 並強行關閉 Gboard - emoji歷史記錄已清除 + Google Sans 字體 + Gboard 緩存已清除 + 清除 Gboard 緩存 + 清除緩存文件並強行關閉 Gboard + 清除 emoji 歷史 + 清除最近使用過的 emoji 表情記錄,並強行關閉 Gboard + emoji 歷史記錄已清除 顯示語言切換鍵 - 型別 - 此項不能為空 - 只顯示已停用偏好項 + 類型 + 此項不能爲空 + 只顯示已禁用偏好項 分享偏好項 主題修飾 分享主題 日誌 - 開啟日誌頁 - 複製flag值檔案 - \"flag_override.xml\"]]> - 發現新的flag值 - App風格 + 打開日誌頁 + 複製 flag 值文件 + 複製 \"flag_value.xml\" -> \"flag_override.xml\" + 發現新的 flag 值 + App 風格 輸入法測試 Rboard 輸入法測試 - 沒有root怎麼用? + 不 root 怎麼用? 獲取 Magisk 未檢測到 Magisk - 儘管我們已嘗試了各種辦法, 目前沒有root權限依然無法使用 - 我們提供兩種安裝途徑\n你可以隨時在設定中切換 - 模組 - Gboard 內建 - 為明暗模式分別設計的主題 + 儘管我們已嘗試了各種辦法,目前沒有 root 權限依然無法使用 + 我們提供兩種安裝途徑 \n 你可以隨時在設置中切換 + 模塊 + Gboard 內置 + 爲明暗模式分別設計的主題 可以編輯圓角和邊框填充的屬性項 可以更改聲音 在 ColorOS 上無效 在 MIUI 上存在問題 主題的基本下載和安裝 - 無需 Magisk 模組 + 無需 Magisk 模塊 無法更改聲音 - 主題不會在 Gboard 設定中顯示 - 更好的相容性 - 雜湊值不匹配 + 主題不會在 Gboard 設置中顯示 + 更好的兼容性 + 哈希值不匹配 主題值 - 已複製到剪貼簿 + 已複製到剪貼板 主題值 - 值字首 + 值前綴 主題更換 Material 3 主題 - 啟用 Material 3 系統自動深色主題 + 啓用 Material 3 系統自動深色主題 顯示單獨的語言切換按鍵 在輸入時顯示建議欄 - 啟用藥丸形按鍵 - 在 Gboard 剪貼簿中顯示你的螢幕截圖 + 啓用藥丸形按鍵 + 在 Gboard 剪貼板中顯示你的屏幕截圖 移除按鍵的單獨陰影 - 在多個視窗間自動啟用懸浮鍵盤 + 在多個窗口間自動啓用懸浮鍵盤 在頂部快捷欄顯示「分享 Gboard」按鈕 - 開啟按鍵邊框 + 開啓按鍵邊框 長按相關的按鍵即可輸入提示的符號 使用更圓滑的 Silk 主題氣泡 - 在鍵盤上使用 Google Sans 字型, 需要ROM中自帶該字型 - 啟用表情符號相容性修復 + 在鍵盤上使用 Google Sans 字體,需要 ROM 中自帶該字體 + 啓用表情符號兼容性修復 在輸入時提供電子郵件域名的補全建議 Rboard 主題修飾器 - Rboard 連結 + Rboard 鏈接 Rboard 應用 更多我們的應用 下載更多 Rboard 應用 @@ -315,7 +314,17 @@ Monet 顏色提取器 頂部快捷欄按鍵數量 (有效值 3 至 8) - 清除 Gboard 快取 - 你確定要清除快取檔案, 並強行關閉 Gboard 嗎? - 你確定要清除emoji表情使用記錄, 並強行關閉 Gboard 嗎? + 清除 Gboard 緩存 + 你確定要清除緩存文件,並強行關閉 Gboard 嗎? + 你確定要清除 emoji 表情使用記錄,並強行關閉 Gboard 嗎? + 請選擇至少一個偏好項目 + 請選擇至少一個 flag 值 + 重置深色主題 + 重置淺色主題 + 重置自動深淺主題 + 你確定要重置自動深淺主題,並強行關閉 Gboard 嗎? + + 複製成功 + 文本預覽 + 在鍵盤上方顯示文本預覽 \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 178be3bb..16fa3b3b 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -8,7 +8,7 @@ - + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 65cd08bb..9f216d7c 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -65,7 +65,7 @@ @style/Widget.CollapsingToolbar - + @style/Theme.RboardThemeManagerV3.Switch @style/Widget.App.Snackbar @style/Widget.App.SnackbarTextView @style/Widget.App.SnackbarButton @@ -87,7 +87,7 @@ @android:color/transparent - diff --git a/colorutilsc b/colorutilsc index bda25ab9..880cb45e 160000 --- a/colorutilsc +++ b/colorutilsc @@ -1 +1 @@ -Subproject commit bda25ab9fde131ec27a188970f0709f2714bb0bb +Subproject commit 880cb45ee0fc842a754e4ee5edc52db9928be639 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 51287bdf..c8c2ed1f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,23 +4,21 @@ android-shell = "1.0.0" androidx-junit = "1.2.1" appcompat = "1.7.1" balloon = "1.6.12" -browser = "1.9.0-beta01" -commons-text = "1.13.1" +browser = "1.9.0-rc01" +commons-text = "1.14.0" constraintlayout = "2.2.1" core = "1.17.0-beta01" core-ktx = "1.17.0-beta01" desugar_jdk_libs_nio = "2.1.5" dotsIndicator = "5.1.0" -espresso-core = "3.7.0-beta01" -firebase-bom = "33.16.0" -firebase-analytics = "22.5.0" -firebase-analytics-ktx = "22.5.0" -firebase-messaging = "24.1.2" -firebase-messaging-ktx = "24.1.2" +espresso-core = "3.7.0-rc01" +firebase-bom = "34.0.0" +firebase-analytics = "23.0.0" +firebase-messaging = "25.0.0" flagkit-android = "1.0.3" fragment-ktx = "1.8.8" googleServices = "4.4.3" -gradle = "8.12.0-alpha08" +gradle = "8.13.0-alpha02" gson = "2.13.1" insetter = "0.6.1" junit = "4.13.2" @@ -29,15 +27,15 @@ ksp = "4.16.0" kspPlugin = "2.2.0-2.0.2" legacy-support-v4 = "1.0.0" libsuVersion = "6.0.0" -lifecycle-viewmodel-ktx = "2.9.1" -material = "1.14.0-alpha02" -navigation-fragment-ktx = "2.9.1" -navigation-ui-ktx = "2.9.1" +lifecycle-viewmodel-ktx = "2.9.2" +material = "1.14.0-alpha03" +navigation-fragment-ktx = "2.9.2" +navigation-ui-ktx = "2.9.2" prdownloader = "v0.6.0" preference-ktx = "1.2.1" protobuf-dynamic = "1.0.1" simple-item-decoration = "1.0.0" -ui-tooling = "1.9.0-beta02" +ui-tooling = "1.9.0-beta03" r8 = "8.13.0-dev" [libraries] @@ -60,9 +58,7 @@ core = { module = "com.github.topjohnwu.libsu:core", version.ref = "libsuVersion core-ktx = { module = "androidx.core:core-ktx", version.ref = "core-ktx" } firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase-bom" } firebase-analytics = { module = "com.google.firebase:firebase-analytics", version.ref = "firebase-analytics" } -firebase-analytics-ktx = { module = "com.google.firebase:firebase-analytics-ktx", version.ref = "firebase-analytics-ktx" } firebase-messaging = { module = "com.google.firebase:firebase-messaging", version.ref = "firebase-messaging" } -firebase-messaging-ktx = { module = "com.google.firebase:firebase-messaging-ktx", version.ref = "firebase-messaging-ktx" } flagkit-android = { module = "com.github.akospaha01:flagkit-android", version.ref = "flagkit-android" } glide = { module = "com.github.bumptech.glide:glide", version.ref = "ksp" } google-services = { module = "com.google.gms:google-services", version.ref = "googleServices" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b320edb0..9b4d737e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ -#Wed Jun 18 21:10:17 CEST 2025 +#Tue Jul 29 21:02:21 CEST 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-rc-1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/mathc b/mathc index e841ee88..b3ee9600 160000 --- a/mathc +++ b/mathc @@ -1 +1 @@ -Subproject commit e841ee88bc812a0caa51cc83435ba34b7a053de8 +Subproject commit b3ee9600c681d3a53cb4694200c30f451807da74 diff --git a/rboardcomponents b/rboardcomponents index 016ca739..fbd9a475 160000 --- a/rboardcomponents +++ b/rboardcomponents @@ -1 +1 @@ -Subproject commit 016ca739d2f0b0c444002d764ad46ee9cbb29db5 +Subproject commit fbd9a475a480c166270cb944da81c1c23d847b53