diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 04417f56..1d8ed60a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,22 +44,25 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
tools:ignore="UnusedAttribute">
+
-
+ android:label="@string/title_plugin_manage"
+ android:windowSoftInputMode="adjustResize" />
-
+ android:theme="@style/AppTheme.PhotoView"
+ android:windowSoftInputMode="adjustResize" />
+
= mutableListOf()
+ @RequiresApi(api = 28)
+ fun setWebViewPath(context: Context) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ val processName = getProcessName(context)
+ if (applicationContext.packageName != processName) { //判断不等于默认进程名称
+ WebView.setDataDirectorySuffix(processName!!)
+ }
+ }
+ }
+
+ private fun getProcessName(context: Context): String? {
+ val manager = context.getSystemService(ACTIVITY_SERVICE) as ActivityManager
+ for (processInfo in manager.runningAppProcesses) {
+ if (processInfo.pid == Process.myPid()) {
+ return processInfo.processName
+ }
+ }
+ return null
+ }
+
override fun onCreate() {
instance = this
super.onCreate()
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ setWebViewPath(this)
+ }
ThemeUtils.init(ThemeDelegate)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
LitePal.initialize(this)
@@ -177,6 +211,18 @@ class BaseApplication : Application(), IApp {
PluginManager.init(this)
}
+ //禁止app字体大小跟随系统字体大小调节
+ override fun getResources(): Resources {
+ val fontScale = appPreferences.fontScale
+ val resources = super.getResources()
+ if (resources.configuration.fontScale != fontScale) {
+ val configuration = resources.configuration
+ configuration.fontScale = fontScale
+ resources.updateConfiguration(configuration, resources.displayMetrics)
+ }
+ return resources
+ }
+
/**
* 添加Activity
*/
diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/AppFontSizeActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/AppFontSizeActivity.kt
new file mode 100644
index 00000000..f1848a0b
--- /dev/null
+++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/AppFontSizeActivity.kt
@@ -0,0 +1,127 @@
+package com.huanchengfly.tieba.post.activities
+
+import android.os.Bundle
+import android.util.TypedValue
+import android.widget.SeekBar
+import android.widget.TextView
+import androidx.appcompat.widget.Toolbar
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import butterknife.BindView
+import com.google.android.material.appbar.CollapsingToolbarLayout
+import com.huanchengfly.tieba.post.*
+import com.huanchengfly.tieba.post.adapters.ChatBubbleStyleAdapter
+import com.huanchengfly.tieba.post.components.MyLinearLayoutManager
+import com.huanchengfly.tieba.post.utils.ThemeUtil
+import com.huanchengfly.tieba.post.widgets.RulerSeekBar
+
+
+class AppFontSizeActivity : BaseActivity() {
+ @BindView(R.id.toolbar)
+ lateinit var toolbar: Toolbar
+
+ @BindView(R.id.collapsing_toolbar)
+ lateinit var collapsingToolbar: CollapsingToolbarLayout
+
+ @BindView(R.id.app_font_size_seekbar)
+ lateinit var seekBar: RulerSeekBar
+
+ @BindView(R.id.app_font_size_text)
+ lateinit var sizeText: TextView
+
+ @BindView(R.id.app_font_size_bubbles)
+ lateinit var chatBubblesRv: RecyclerView
+
+ var oldFontSize: Float = 0f
+ var finished: Boolean = false
+
+ private val bubblesAdapter: ChatBubbleStyleAdapter by lazy {
+ ChatBubbleStyleAdapter(
+ this,
+ listOf(
+ ChatBubbleStyleAdapter.Bubble(
+ getString(R.string.bubble_want_change_font_size),
+ ChatBubbleStyleAdapter.Bubble.POSITION_RIGHT
+ ),
+ ChatBubbleStyleAdapter.Bubble(getString(R.string.bubble_change_font_size))
+ )
+ )
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ ThemeUtil.setTranslucentThemeBackground(findViewById(R.id.background))
+ setSupportActionBar(toolbar)
+ supportActionBar?.apply {
+ setDisplayHomeAsUpEnabled(true)
+ title = this@AppFontSizeActivity.title
+ }
+ collapsingToolbar.title = title
+ oldFontSize = appPreferences.fontScale
+ chatBubblesRv.apply {
+ layoutManager =
+ MyLinearLayoutManager(this@AppFontSizeActivity, LinearLayoutManager.VERTICAL, false)
+ adapter = bubblesAdapter
+ }
+ val progress =
+ ((appPreferences.fontScale * 1000L - FONT_SCALE_MIN * 1000L).toInt()) / ((FONT_SCALE_STEP * 1000L).toInt())
+ seekBar.progress = progress
+ updateSizeText(progress)
+ seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
+ override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
+ val fontScale = FONT_SCALE_MIN + progress * FONT_SCALE_STEP
+ appPreferences.fontScale = fontScale
+ updatePreview(fontScale)
+ updateSizeText(progress)
+ }
+
+ override fun onStartTrackingTouch(seekBar: SeekBar?) {}
+
+ override fun onStopTrackingTouch(seekBar: SeekBar?) {}
+ })
+ }
+
+ override fun finish() {
+ if (!finished && oldFontSize != appPreferences.fontScale) {
+ finished = true
+ toastShort(R.string.toast_after_change_will_restart)
+ BaseApplication.instance.removeAllActivity()
+ goToActivity()
+ }
+ super.finish()
+ }
+
+ fun updateSizeText(progress: Int) {
+ val sizeTexts = SIZE_TEXT_MAPPING.filterValues {
+ progress in it
+ }
+ if (sizeTexts.isNotEmpty()) {
+ sizeText.setText(sizeTexts.map { it.key }[0])
+ }
+ }
+
+ fun updatePreview(fontScale: Float = appPreferences.fontScale) {
+ bubblesAdapter.bubblesFontSize = 15f.dpToPxFloat() * fontScale
+ sizeText.setTextSize(TypedValue.COMPLEX_UNIT_PX, 16f.dpToPxFloat() * fontScale)
+ }
+
+ override fun getLayoutId(): Int {
+ return R.layout.activity_app_font_size
+ }
+
+ companion object {
+ const val FONT_SCALE_MIN = 0.8f
+ const val FONT_SCALE_MAX = 1.3f
+ const val FONT_SCALE_STEP = 0.05f
+ const val DEFAULT_FONT_SCALE = 1f
+
+ val SIZE_TEXT_MAPPING = mapOf(
+ R.string.text_size_small to 0..1,
+ R.string.text_size_little_small to 2..3,
+ R.string.text_size_default to 4..4,
+ R.string.text_size_little_large to 5..6,
+ R.string.text_size_large to 7..8,
+ R.string.text_size_very_large to 9..10
+ )
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/BaseActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/BaseActivity.kt
index 33cb4af2..6e1ffea1 100644
--- a/app/src/main/java/com/huanchengfly/tieba/post/activities/BaseActivity.kt
+++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/BaseActivity.kt
@@ -6,6 +6,7 @@ import android.app.Activity
import android.app.Dialog
import android.content.Context
import android.content.res.ColorStateList
+import android.content.res.Resources
import android.graphics.Color
import android.os.Bundle
import android.text.TextUtils
@@ -60,6 +61,18 @@ abstract class BaseActivity : SwipeBackActivity(), ExtraRefreshable, CoroutineSc
Jzvd.releaseAllVideos()
}
+ //禁止app字体大小跟随系统字体大小调节
+ override fun getResources(): Resources {
+ val fontScale = appPreferences.fontScale
+ val resources = super.getResources()
+ if (resources.configuration.fontScale != fontScale) {
+ val configuration = resources.configuration
+ configuration.fontScale = fontScale
+ resources.updateConfiguration(configuration, resources.displayMetrics)
+ }
+ return resources
+ }
+
protected fun showDialog(dialog: Dialog): Boolean {
if (isActivityRunning) {
dialog.show()
diff --git a/app/src/main/java/com/huanchengfly/tieba/post/adapters/ChatBubbleStyleAdapter.kt b/app/src/main/java/com/huanchengfly/tieba/post/adapters/ChatBubbleStyleAdapter.kt
index 2396cf3e..f9d6c529 100644
--- a/app/src/main/java/com/huanchengfly/tieba/post/adapters/ChatBubbleStyleAdapter.kt
+++ b/app/src/main/java/com/huanchengfly/tieba/post/adapters/ChatBubbleStyleAdapter.kt
@@ -1,6 +1,8 @@
package com.huanchengfly.tieba.post.adapters
+import android.annotation.SuppressLint
import android.content.Context
+import android.util.TypedValue
import android.view.Gravity
import android.view.View
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
@@ -16,6 +18,13 @@ class ChatBubbleStyleAdapter(
context: Context,
bubbles: List
) : BaseSingleTypeAdapter(context, bubbles) {
+ var bubblesFontSize: Float = 0f
+ @SuppressLint("NotifyDataSetChanged")
+ set(value) {
+ field = value
+ notifyDataSetChanged()
+ }
+
override fun getItemLayoutId(): Int = R.layout.item_chat_bubble
override fun convert(viewHolder: MyViewHolder, item: Bubble, position: Int) {
@@ -34,12 +43,17 @@ class ChatBubbleStyleAdapter(
Gravity.START
}
}
- viewHolder.getView(R.id.chat_bubble_text).tintResId =
- if (item.position == POSITION_RIGHT) {
- R.color.default_color_on_accent
- } else {
- R.color.default_color_text
+ viewHolder.getView(R.id.chat_bubble_text).apply {
+ tintResId =
+ if (item.position == POSITION_RIGHT) {
+ R.color.default_color_on_accent
+ } else {
+ R.color.default_color_text
+ }
+ if (bubblesFontSize > 0f) {
+ setTextSize(TypedValue.COMPLEX_UNIT_PX, bubblesFontSize)
}
+ }
viewHolder.setText(R.id.chat_bubble_text, item.text)
val customView = item.customViewBuilder?.invoke(context, item.position)
if (customView != null) {
diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt
index 67405110..fde37395 100644
--- a/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt
+++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt
@@ -21,15 +21,29 @@ open class AppPreferencesUtils(context: Context) {
var customPrimaryColor by SharedPreferenceDelegates.string(key = "custom_primary_color")
- var customStatusBarFontDark by SharedPreferenceDelegates.boolean(defaultValue = false, key = "custom_status_bar_font_dark")
+ var customStatusBarFontDark by SharedPreferenceDelegates.boolean(
+ defaultValue = false,
+ key = "custom_status_bar_font_dark"
+ )
- var customToolbarPrimaryColor by SharedPreferenceDelegates.boolean(defaultValue = true, key = "custom_toolbar_primary_color")
+ var customToolbarPrimaryColor by SharedPreferenceDelegates.boolean(
+ defaultValue = true,
+ key = "custom_toolbar_primary_color"
+ )
- var defaultSortType by SharedPreferenceDelegates.string(key = "default_sort_type", defaultValue = "0")
+ var defaultSortType by SharedPreferenceDelegates.string(
+ key = "default_sort_type",
+ defaultValue = "0"
+ )
var darkTheme by SharedPreferenceDelegates.string(key = "dark_theme", defaultValue = "dark")
- var followSystemNight by SharedPreferenceDelegates.boolean(defaultValue = true, key = "follow_system_night")
+ var followSystemNight by SharedPreferenceDelegates.boolean(
+ defaultValue = true,
+ key = "follow_system_night"
+ )
+
+ var fontScale by SharedPreferenceDelegates.float(defaultValue = 1.0f)
var forumFabFunction by SharedPreferenceDelegates.string(defaultValue = "post")
@@ -39,7 +53,10 @@ open class AppPreferencesUtils(context: Context) {
var homePageScroll by SharedPreferenceDelegates.boolean(defaultValue = false)
- var imageLoadType by SharedPreferenceDelegates.string(key = "image_load_type", defaultValue = "0")
+ var imageLoadType by SharedPreferenceDelegates.string(
+ key = "image_load_type",
+ defaultValue = "0"
+ )
var listItemsBackgroundIntermixed by SharedPreferenceDelegates.boolean(defaultValue = true)
diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/TiebaUtil.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/TiebaUtil.kt
index 815ee9a5..84675c24 100644
--- a/app/src/main/java/com/huanchengfly/tieba/post/utils/TiebaUtil.kt
+++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/TiebaUtil.kt
@@ -63,13 +63,25 @@ object TiebaUtil {
fun startSign(context: Context) {
context.appPreferences.signDay = Calendar.getInstance()[Calendar.DAY_OF_MONTH]
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- context.startForegroundService(Intent(context, OKSignService::class.java)
+ context.startForegroundService(
+ Intent()
+ .setClassName(
+ context.packageName,
+ "${context.packageName}.services.OKSignService"
+ )
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- .setAction(OKSignService.ACTION_START_SIGN))
+ .setAction(OKSignService.ACTION_START_SIGN)
+ )
} else {
- context.startService(Intent(context, OKSignService::class.java)
+ context.startService(
+ Intent()
+ .setClassName(
+ context.packageName,
+ "${context.packageName}.services.OKSignService"
+ )
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- .setAction(OKSignService.ACTION_START_SIGN))
+ .setAction(OKSignService.ACTION_START_SIGN)
+ )
}
}
diff --git a/app/src/main/java/com/huanchengfly/tieba/post/widgets/RulerSeekBar.kt b/app/src/main/java/com/huanchengfly/tieba/post/widgets/RulerSeekBar.kt
new file mode 100644
index 00000000..684a2ff4
--- /dev/null
+++ b/app/src/main/java/com/huanchengfly/tieba/post/widgets/RulerSeekBar.kt
@@ -0,0 +1,195 @@
+package com.huanchengfly.tieba.post.widgets
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.graphics.Canvas
+import android.graphics.Color
+import android.graphics.Paint
+import android.util.AttributeSet
+import android.widget.AbsSeekBar
+import androidx.appcompat.widget.AppCompatSeekBar
+import com.huanchengfly.tieba.post.R
+import com.huanchengfly.tieba.post.dpToPxFloat
+
+class RulerSeekBar : AppCompatSeekBar {
+ /**
+ * 刻度线画笔
+ */
+ private lateinit var mRulerPaint: Paint
+
+ /**
+ * 刻度线的个数,等分数等于刻度线的个数加1
+ */
+ private var mRulerCount: Int = 0
+
+ /**
+ * 每条刻度线的宽度
+ */
+ private var mRulerSize: Float = 0f
+
+ /**
+ * 刻度线的颜色
+ */
+ private var mRulerColor: Int = Color.WHITE
+
+ /**
+ * 滑块上面是否要显示刻度线
+ */
+ private var isShowTopOfThumb: Boolean = false
+
+ /**
+ * 边缘是否要显示刻度线
+ */
+ private var rulerOnEdge: Boolean = false
+
+ constructor(context: Context) : this(context, null)
+
+ constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
+
+ constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
+ context,
+ attrs,
+ defStyleAttr
+ ) {
+ if (attrs != null) {
+ val array = getContext().obtainStyledAttributes(
+ attrs,
+ R.styleable.RulerSeekBar,
+ defStyleAttr,
+ 0
+ )
+ mRulerColor = array.getColor(R.styleable.RulerSeekBar_rulerColor, Color.WHITE)
+ mRulerCount = array.getInteger(R.styleable.RulerSeekBar_rulerCount, 5)
+ mRulerSize = array.getDimension(R.styleable.RulerSeekBar_rulerSize, 12f.dpToPxFloat())
+ isShowTopOfThumb = array.getBoolean(R.styleable.RulerSeekBar_rulerShowTopOfThumb, false)
+ rulerOnEdge = array.getBoolean(R.styleable.RulerSeekBar_rulerOnEdge, false)
+ array.recycle()
+ }
+ init()
+ }
+
+ /**
+ * 初始化
+ */
+ private fun init() {
+ //创建绘制刻度线的画笔
+ mRulerPaint = Paint()
+ mRulerPaint.color = mRulerColor
+ mRulerPaint.isAntiAlias = true
+
+ //Api21及以上调用,去掉滑块后面的背景
+ splitTrack = false
+ }
+
+ /**
+ * 重写onDraw方法绘制刻度线
+ *
+ * @param canvas
+ */
+ @SuppressLint("DiscouragedPrivateApi")
+ @Synchronized
+ override fun onDraw(canvas: Canvas) {
+ super.onDraw(canvas)
+
+ //极限条件校验
+ if (width <= 0 || mRulerCount <= 0) {
+ return
+ }
+
+ //计算刻度线的顶部坐标和底部坐标
+ val rulerTop = (height / 2 - minimumHeight / 2) * 1F
+ val rulerBottom = rulerTop + minimumHeight
+
+ val rulerCenterY = (rulerTop + rulerBottom) / 2
+
+ val rulerPadding = rulerCenterY - mRulerSize / 2 - rulerTop
+
+ //获取每一份的长度
+ val length = if (rulerOnEdge) {
+ (width - paddingLeft - paddingRight - (mRulerCount + 2) * mRulerSize - rulerPadding * 2) / (mRulerCount + 1)
+ } else {
+ (width - paddingLeft - paddingRight - mRulerCount * mRulerSize) / (mRulerCount + 1)
+ }
+ if (rulerOnEdge) {
+ canvas.drawCircle(
+ paddingLeft + rulerPadding + mRulerSize / 2,
+ rulerCenterY,
+ mRulerSize / 2,
+ mRulerPaint
+ )
+ canvas.drawCircle(
+ paddingLeft + rulerPadding + (mRulerCount + 1) * (length + mRulerSize) + mRulerSize / 2,
+ rulerCenterY,
+ mRulerSize / 2,
+ mRulerPaint
+ )
+ }
+ //绘制刻度线
+ for (i in 1..mRulerCount) {
+ //计算刻度线的左边坐标和右边坐标
+ val rulerLeft = if (rulerOnEdge) {
+ (i * length + i * mRulerSize + paddingLeft + rulerPadding) * 1F
+ } else {
+ (i * length + (i - 1) * mRulerSize + paddingLeft) * 1F
+ }
+ val rulerRight = rulerLeft + mRulerSize
+
+ val rulerCenterX = (rulerLeft + rulerRight) / 2
+
+ //进行绘制
+ canvas.drawCircle(rulerCenterX, rulerCenterY, mRulerSize / 2, mRulerPaint)
+ }
+ if (!isShowTopOfThumb) {
+ try {
+ val absSeekBarClazz = Class.forName("android.widget.AbsSeekBar")
+ val absSeekBarDrawThumbMethod =
+ absSeekBarClazz.getDeclaredMethod("drawThumb", Canvas::class.java)
+ absSeekBarDrawThumbMethod.isAccessible = true
+ absSeekBarDrawThumbMethod.invoke(this as AbsSeekBar, canvas)
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+ }
+
+ /**
+ * 设置刻度线的个数
+ *
+ * @param mRulerCount
+ */
+ fun setRulerCount(mRulerCount: Int) {
+ this.mRulerCount = mRulerCount
+ requestLayout()
+ }
+
+ /**
+ * 设置刻度线的宽度,单位(px)
+ *
+ * @param mRulerWidth
+ */
+ fun setRulerWidth(mRulerWidth: Int) {
+ this.mRulerSize = mRulerWidth.toFloat()
+ requestLayout()
+ }
+
+ /**
+ * 设置刻度线的颜色
+ *
+ * @param mRulerColor
+ */
+ fun setRulerColor(mRulerColor: Int) {
+ this.mRulerColor = mRulerColor
+ mRulerPaint.color = mRulerColor
+ requestLayout()
+ }
+
+ /**
+ * 滑块上面是否需要显示刻度线
+ *
+ * @param isShowTopOfThumb
+ */
+ fun setShowTopOfThumb(isShowTopOfThumb: Boolean) {
+ this.isShowTopOfThumb = isShowTopOfThumb
+ requestLayout()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/drawable_progress_font_size.xml b/app/src/main/res/drawable/drawable_progress_font_size.xml
new file mode 100644
index 00000000..4869e83a
--- /dev/null
+++ b/app/src/main/res/drawable/drawable_progress_font_size.xml
@@ -0,0 +1,18 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/drawable_thumb_font_size.xml b/app/src/main/res/drawable/drawable_thumb_font_size.xml
new file mode 100644
index 00000000..b39a9378
--- /dev/null
+++ b/app/src/main/res/drawable/drawable_thumb_font_size.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_round_font_download.xml b/app/src/main/res/drawable/ic_round_font_download.xml
new file mode 100644
index 00000000..8a05e3e8
--- /dev/null
+++ b/app/src/main/res/drawable/ic_round_font_download.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_app_font_size.xml b/app/src/main/res/layout/activity_app_font_size.xml
new file mode 100644
index 00000000..67a41c7b
--- /dev/null
+++ b/app/src/main/res/layout/activity_app_font_size.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_theme_color.xml b/app/src/main/res/layout/activity_theme_color.xml
index 43dff924..53adfb59 100644
--- a/app/src/main/res/layout/activity_theme_color.xml
+++ b/app/src/main/res/layout/activity_theme_color.xml
@@ -5,7 +5,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
app:backgroundTint="@color/default_color_window_background"
- android:id="@+id/background">
+ android:id="@+id/background"
+ tools:context=".activities.AppThemeActivity">
diff --git a/app/src/main/res/layout/item_chat_bubble.xml b/app/src/main/res/layout/item_chat_bubble.xml
index 9bd98b39..771bb579 100644
--- a/app/src/main/res/layout/item_chat_bubble.xml
+++ b/app/src/main/res/layout/item_chat_bubble.xml
@@ -16,7 +16,7 @@
diff --git a/app/src/main/res/layout/plugin_asoul_cnki_dialog_check_result.xml b/app/src/main/res/layout/plugin_asoul_cnki_dialog_check_result.xml
new file mode 100644
index 00000000..6c2659e4
--- /dev/null
+++ b/app/src/main/res/layout/plugin_asoul_cnki_dialog_check_result.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
index 58a4fcd2..93869948 100644
--- a/app/src/main/res/values/attrs.xml
+++ b/app/src/main/res/values/attrs.xml
@@ -163,6 +163,14 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 033241db..d3ac4b23 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -44,14 +44,14 @@
#FF31343C
#FFFFFFFF
#FF545967
- #FF65696C
+ #FFA8ADBB
#FFFFFFFF
#FF474B54
#FF545967
#FF4477E0
#E6F2F7FB
#6654585B
- #FFF3F7F9
+ #FFF3F7FA
#FF8D9194
#FFFFFFFF
#FFF3F7F9
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6edf43b2..a7a87ba6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -435,10 +435,7 @@
已收藏
关注
粉丝
- 标题样式
- Title
字体大小
- 永a
%1$s吧 ✓
%1$s吧 ✓ 经验 +%2$s
即将开始签到
@@ -468,4 +465,19 @@
查询发言
附加功能管理
v%1$s · 作者 %2$s
+ 枝网查重
+ 枝网文本复制检测报告(简洁)\n查重时间: %1$s\n总文字复制比: %2$s\n%3$s\n\n查重结果仅作参考,请注意辨别是否为原创
+ 相似小作文: %1$s\n作者: %2$s\n发表时间: %3$s
+ 总文本复制比: %1$s
+ 相似小作文 (%1$d)
+ 复制查重结果
+ 怎么调节应用内的字体大小呢?
+ 尝试着调节下方的控制条吧,可以在这里即时预览字体大小。
+ 小
+ 较小
+ 默认大小
+ 较大
+ 大
+ 极大
+ 修改已保存,即将重启 App 以应用设置
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 2fd88bd1..8cc10296 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -118,6 +118,7 @@
android:entries="@array/forum_fab_function_name_values"
android:defaultValue="post"
android:key="forumFabFunction"
+ android:icon="@drawable/ic_round_exit_to_app"
android:title="@string/settings_forum_fab_function" />
+
+
+
+