feat(dark mode): 统一深色模式适配,所有窗体使用attrs.xml主题属性

## 核心变更
- 所有布局文件文本颜色统一使用 ?attr/* 主题属性引用
- 普通模式文本颜色: #000000 (黑色)
- 暗黑模式文本颜色: #E0E0E0 (灰色)

## attrs.xml 属性统一 (libappbase)
- 新增 AboutView 样式属性 (AboutView、AboutViewStyle)
- 新增 ButtonStyle 样式属性 (buttonBackgroundColor、buttonTextColor)
- 新增 DialogStyle 样式属性 (dialogBackgroundColor、dialogTextColor)
- 新增通用窗体属性 (activityBackgroundColor、activityTextColor、toolbarBackgroundColor 等)
- 移除 appbase/src/main/res/values/attrs.xml,合并到 libappbase

## styles.xml 主题配置
- 普通模式:背景色 #F5F5F5,文本色 #000000,工具栏/按钮背景色 #00B322
- 暗黑模式 (values-night):背景色 #0D1B2A,文本色 #E0E0E0,工具栏/按钮背景色 #1E3A5F

## 布局适配
- 所有窗体使用 ?attr/activityBackgroundColor / ?attr/activityTextColor
- 所有工具栏使用 ?attr/toolbarBackgroundColor
- 所有按钮使用 ?attr/buttonBackgroundColor / ?attr/buttonTextColor
- 所有对话框使用 ?attr/dialogBackgroundColor / ?attr/dialogTextColor
- AboutView 使用 ?attr/aboutViewBackgroundColor 等

## Java代码适配
- GlobalCrashReportView.java: 默认颜色改为黑色 (Color.BLACK)
- CrashHandler.java: 添加 isNightMode 判断,动态设置文本颜色
- AboutView.java: 深色模式标题颜色调整为 gray_500
This commit is contained in:
2026-05-10 07:22:06 +08:00
parent 54f77a8d87
commit 24af31d51d
40 changed files with 1056 additions and 154 deletions

View File

@@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/activityBackgroundColor">
<RelativeLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="34dp"
android:layout_alignParentTop="true"
android:background="?attr/toolbarBackgroundColor"
android:id="@+id/viewlogRelativeLayoutToolbar">
<Button
android:layout_width="@dimen/log_button_width"
android:layout_height="@dimen/log_button_height"
android:textSize="@dimen/log_text_size"
android:text="Clean"
android:textColor="?attr/buttonTextColor"
android:backgroundTint="?attr/buttonBackgroundColor"
android:layout_centerVertical="true"
android:id="@+id/viewlogButtonClean"
android:layout_marginLeft="5dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="20dp"
android:textSize="@dimen/log_text_size"
android:padding="@dimen/log_text_padding"
android:text="LV:"
android:layout_toRightOf="@+id/viewlogButtonClean"
android:layout_centerVertical="true"
android:id="@+id/viewlogTextView1"
android:background="?attr/buttonBackgroundColor"
android:textColor="?attr/buttonTextColor"/>
<cc.winboll.studio.libappbase.widget.LogTagSpinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/viewlogTextView1"
android:layout_centerVertical="true"
android:id="@+id/viewlogSpinner1"
android:padding="@dimen/log_spinner_text_padding"/>
<CheckBox
android:layout_width="@dimen/log_checkbox_width"
android:layout_height="@dimen/log_checkbox_height"
android:textSize="@dimen/log_text_size"
android:layout_toLeftOf="@+id/viewlogButtonCopy"
android:layout_centerVertical="true"
android:text="Selectable"
android:background="?attr/buttonBackgroundColor"
android:id="@+id/viewlogCheckBoxSelectable"
android:padding="@dimen/log_text_padding"
android:textColor="?attr/buttonTextColor"/>
<Button
android:layout_width="@dimen/log_button_width"
android:layout_height="@dimen/log_button_height"
android:textSize="@dimen/log_text_size"
android:textColor="?attr/buttonTextColor"
android:backgroundTint="?attr/buttonBackgroundColor"
android:text="Copy"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:id="@+id/viewlogButtonCopy"
android:layout_marginRight="5dp"/>
</RelativeLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="@dimen/log_button_height"
android:layout_below="@+id/viewlogRelativeLayoutToolbar"
android:id="@+id/viewlogLinearLayout1"
android:gravity="center_vertical"
android:background="?attr/toolbarBackgroundColor">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="@dimen/log_button_height"
android:textSize="@dimen/log_text_size"
android:text="ALL"
android:padding="2dp"
android:id="@+id/viewlogCheckBox1"
android:background="?attr/buttonBackgroundColor"
android:textColor="?attr/buttonTextColor"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"/>
<EditText
android:layout_width="50dp"
android:ems="10"
android:layout_height="@dimen/log_button_height"
android:textSize="@dimen/log_text_size"
android:textColor="?attr/activityTextColor"
android:background="?attr/buttonBackgroundColor"
android:singleLine="true"
android:id="@+id/tagsearch_et"/>
<HorizontalScrollView
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="?attr/buttonBackgroundColor"
android:scrollbars="none"
android:padding="2dp"
android:layout_weight="1.0"
android:id="@+id/viewlogHorizontalScrollView1">
<cc.winboll.studio.libappbase.views.HorizontalListView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/tags_listview"/>
</HorizontalScrollView>
</LinearLayout>
<RelativeLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:layout_alignParentBottom="true"
android:layout_below="@+id/viewlogLinearLayout1">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/activityBackgroundColor"
android:id="@+id/viewlogScrollViewLog">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="@dimen/log_text_size"
android:text="Text"
android:textColor="#FF00FF00"
android:textIsSelectable="true"
android:id="@+id/viewlogTextViewLog"/>
</ScrollView>
</RelativeLayout>
</RelativeLayout>