针对UI界面疑修 #34

Merged
p5vjqsb6e merged 1 commits from luogang_branch into master 2 months ago

@ -0,0 +1,2 @@
#Wed Jan 28 16:05:26 CST 2026
gradle.version=9.2.0

File diff suppressed because one or more lines are too long

@ -290,7 +290,7 @@
</LinearLayout>
<ImageView
android:id="@+id/btn_set_bg_color"
android:id="@+id/iv_bg_color_btn_mask"
android:layout_height="43dip"
android:layout_width="wrap_content"
android:background="@drawable/bg_color_btn_mask"

@ -0,0 +1,148 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/note_item"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginTop="6dp"
android:layout_marginBottom="6dp"
android:background="@color/material_card_background"
android:elevation="4dp"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:paddingTop="16dp"
android:paddingBottom="16dp">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:orientation="horizontal">
<!-- 清单复选框,仅在清单模式下显示 -->
<CheckBox
android:id="@android:id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:focusable="false"
android:clickable="true"
android:visibility="gone" />
<LinearLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="0dip"
android:layout_weight="1"
android:textAppearance="@style/TextAppearancePrimaryItem"
android:textSize="16sp"
android:textStyle="bold"
android:visibility="gone" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal">
<!-- 使用FrameLayout来让标题可以相互替代 -->
<FrameLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1">
<!-- 笔记标题 TextView -->
<TextView
android:id="@+id/tv_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="@color/material_text_primary"
android:textStyle="normal"
android:singleLine="true"
android:lineSpacingMultiplier="1.2" />
<!-- 清单标题 EditText仅在清单模式下显示 -->
<EditText
android:id="@+id/et_checklist_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="?android:attr/textColorPrimary"
android:singleLine="true"
android:visibility="gone"
android:background="@null"
android:textAppearance="@style/TextAppearancePrimaryItem" />
</FrameLayout>
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:textSize="13sp"
android:textColor="@color/material_text_secondary"
android:textStyle="normal" />
</LinearLayout>
</LinearLayout>
<!-- 清单项完成状态指示器,仅在清单模式下显示 -->
<ImageView
android:id="@+id/iv_checklist_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:src="@drawable/selected"
android:visibility="gone" />
</LinearLayout>
<!-- Material风格左侧装饰条 -->
<View
android:layout_width="4dp"
android:layout_height="match_parent"
android:layout_gravity="start|center_vertical"
android:background="@color/material_accent_bar"
android:layout_marginStart="0dp"/>
<ImageView
android:id="@+id/iv_alert_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|end"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"/>
<ImageView
android:id="@+id/iv_encrypted_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|end"
android:layout_marginTop="4dp"
android:layout_marginEnd="28dp"
android:visibility="gone"/>
</FrameLayout>

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/note_item"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingStart="4dp"
android:paddingEnd="4dp"
android:paddingTop="4dp"
android:paddingBottom="4dp"
android:background="@color/minimal_background">
<!-- 极简风格底部分隔线 -->
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_gravity="bottom"
android:background="@color/minimal_divider"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="4dp"
android:paddingEnd="4dp"
android:paddingTop="6dp"
android:paddingBottom="6dp">
<!-- 清单复选框,仅在清单模式下显示 -->
<CheckBox
android:id="@android:id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:focusable="false"
android:clickable="true"
android:visibility="gone" />
<LinearLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="0dip"
android:layout_weight="1"
android:textAppearance="@style/TextAppearancePrimaryItem"
android:textSize="14sp"
android:visibility="gone" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal">
<!-- 使用FrameLayout来让标题可以相互替代 -->
<FrameLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1">
<!-- 笔记标题 TextView -->
<TextView
android:id="@+id/tv_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="13sp"
android:textColor="@color/minimal_text_primary"
android:textStyle="normal"
android:singleLine="true"
android:lineSpacingMultiplier="1.0" />
<!-- 清单标题 EditText仅在清单模式下显示 -->
<EditText
android:id="@+id/et_checklist_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="@android:color/black"
android:singleLine="true"
android:visibility="gone"
android:background="@null"
android:textAppearance="@style/TextAppearancePrimaryItem" />
</FrameLayout>
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:textSize="10sp"
android:textColor="@color/minimal_text_secondary"
android:textStyle="normal" />
</LinearLayout>
</LinearLayout>
<!-- 清单项完成状态指示器,仅在清单模式下显示 -->
<ImageView
android:id="@+id/iv_checklist_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:src="@drawable/selected"
android:visibility="gone" />
</LinearLayout>
<ImageView
android:id="@+id/iv_alert_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|end"/>
<ImageView
android:id="@+id/iv_encrypted_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|end"
android:layout_marginEnd="20dp"
android:visibility="gone"/>
</FrameLayout>

@ -17,6 +17,20 @@
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_ui_style"
android:title="@string/menu_ui_style"
android:icon="@android:drawable/ic_menu_preferences"/>
<item
android:id="@+id/menu_night_mode"
android:title="@string/menu_night_mode"
android:icon="@android:drawable/ic_menu_view"/>
<item
android:id="@+id/menu_setting"
android:title="@string/menu_setting" />
<item
android:id="@+id/menu_new_folder"
android:title="@string/menu_create_folder"/>
@ -29,9 +43,6 @@
android:id="@+id/menu_sync"
android:title="@string/menu_sync"/>
<item
android:id="@+id/menu_setting"
android:title="@string/menu_setting" />
<item
android:id="@+id/menu_trash"
android:title="@string/menu_trash"/>

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<!-- Material style colors - Dark theme -->
<color name="material_card_background">#1E1E1E</color>
<color name="material_card_elevation_color">#000000</color>
<color name="material_text_primary">#FFFFFF</color>
<color name="material_text_secondary">#B0B0B0</color>
<color name="material_accent_bar">#64B5F6</color>
<!-- Minimal style colors - Dark theme -->
<color name="minimal_background">#121212</color>
<color name="minimal_divider">#333333</color>
<color name="minimal_text_primary">#FFFFFF</color>
<color name="minimal_text_secondary">#AAAAAA</color>
<!-- Common colors - Dark theme -->
<color name="note_item_background_light">#1E1E1E</color>
<color name="note_item_text_primary_light">#FFFFFF</color>
<color name="note_item_text_secondary_light">#CCCCCC</color>
</resources>

@ -28,4 +28,16 @@
<item>Messaging</item>
<item>Email</item>
</string-array>
<string-array name="preferences_ui_style_entries">
<item>Classic</item>
<item>Material</item>
<item>Minimal</item>
</string-array>
<string-array name="preferences_ui_style_values">
<item>CLASSIC</item>
<item>MATERIAL</item>
<item>MINIMAL</item>
</string-array>
</resources>

@ -16,5 +16,11 @@
-->
<resources>
<color name="user_query_highlight">#335b5b5b</color>
<!-- Custom color attributes for note item layouts -->
<attr name="noteItemCardBackground" format="color" />
<attr name="noteItemTextPrimary" format="color" />
<attr name="noteItemTextSecondary" format="color" />
<attr name="noteItemAccentBar" format="color" />
<attr name="noteItemBackground" format="color" />
<attr name="noteItemDivider" format="color" />
</resources>

@ -17,4 +17,22 @@
<resources>
<color name="user_query_highlight">#335b5b5b</color>
<!-- Material style colors -->
<color name="material_card_background">#FFFFFF</color>
<color name="material_card_elevation_color">#000000</color>
<color name="material_text_primary">#212121</color>
<color name="material_text_secondary">#757575</color>
<color name="material_accent_bar">#2196F3</color>
<!-- Minimal style colors -->
<color name="minimal_background">#FAFAFA</color>
<color name="minimal_divider">#E0E0E0</color>
<color name="minimal_text_primary">#000000</color>
<color name="minimal_text_secondary">#9E9E9E</color>
<!-- Common colors -->
<color name="note_item_background_light">#FFFFFF</color>
<color name="note_item_text_primary_light">#000000</color>
<color name="note_item_text_secondary_light">#666666</color>
</resources>

@ -45,6 +45,9 @@
<string name="menu_sync">Sync</string>
<string name="menu_sync_cancel">Cancel syncing</string>
<string name="menu_setting">Settings</string>
<string name="menu_ui_style">UI Style</string>
<string name="menu_night_mode">Night Mode</string>
<string name="menu_day_mode">Day Mode</string>
<string name="menu_search">Search</string>
<string name="menu_delete">Delete</string>
<string name="menu_move">Move to folder</string>
@ -124,6 +127,11 @@
<string name="preferences_toast_cannot_change_account">Cannot change the account because sync is in progress</string>
<string name="preferences_toast_success_set_accout">%1$s has been set as the sync account</string>
<string name="preferences_bg_random_appear_title">New note background color random</string>
<string name="preferences_ui_style_title">UI Style</string>
<string name="preferences_ui_style_summary">Choose the visual style of the app</string>
<string name="preferences_ui_style_classic">Classic</string>
<string name="preferences_ui_style_material">Material</string>
<string name="preferences_ui_style_minimal">Minimal</string>
<string name="button_delete">Delete</string>
<string name="call_record_folder_name">Call notes</string>

@ -71,4 +71,54 @@
<item name="android:displayOptions" />
<item name="android:visibility">gone</item>
</style>
<!-- UI Style Themes for future switching -->
<!-- Classic theme: maintains visual identity with current NoteTheme -->
<style name="Theme.Notes.Classic" parent="Theme.AppCompat.DayNight">
<item name="actionBarStyle">@style/Widget.AppCompat.Light.ActionBar.Solid</item>
<item name="android:displayOptions">showHome|showTitle|useLogo</item>
<item name="windowActionBar">true</item>
<item name="windowNoTitle">false</item>
<item name="android:windowSoftInputMode">adjustResize</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<!-- Material theme: MaterialComponents-based with DayNight support -->
<style name="Theme.Notes.Material" parent="Theme.MaterialComponents.DayNight">
<item name="colorPrimary">@android:color/holo_blue_dark</item>
<item name="colorPrimaryVariant">@android:color/holo_blue_light</item>
<item name="colorOnPrimary">@android:color/white</item>
<item name="colorSecondary">@android:color/holo_orange_light</item>
<item name="colorOnSecondary">@android:color/black</item>
<item name="android:windowActionBar">true</item>
<item name="android:windowNoTitle">false</item>
<item name="android:windowSoftInputMode">adjustResize</item>
<item name="android:windowContentOverlay">@null</item>
<!-- Custom color attributes for Material style -->
<item name="noteItemCardBackground">@color/material_card_background</item>
<item name="noteItemTextPrimary">@color/material_text_primary</item>
<item name="noteItemTextSecondary">@color/material_text_secondary</item>
<item name="noteItemAccentBar">@color/material_accent_bar</item>
<item name="noteItemBackground">@color/material_card_background</item>
<item name="noteItemDivider">@color/material_text_secondary</item>
</style>
<!-- Minimal theme: DayNight compatible, no action bar, minimal colors -->
<style name="Theme.Notes.Minimal" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="colorPrimary">@android:color/white</item>
<item name="colorAccent">@android:color/darker_gray</item>
<item name="android:windowBackground">@color/minimal_background</item>
<item name="android:textColorPrimary">@color/minimal_text_primary</item>
<item name="android:textColorSecondary">@color/minimal_text_secondary</item>
<item name="android:windowSoftInputMode">adjustResize</item>
<item name="android:windowContentOverlay">@null</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<!-- Custom color attributes for Minimal style -->
<item name="noteItemBackground">@color/minimal_background</item>
<item name="noteItemDivider">@color/minimal_divider</item>
<item name="noteItemTextPrimary">@color/minimal_text_primary</item>
<item name="noteItemTextSecondary">@color/minimal_text_secondary</item>
</style>
</resources>

@ -1,7 +0,0 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Base.Theme.Notesmaster" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your dark theme here. -->
<!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
</style>
</resources>

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<style name="NoteTheme" parent="@android:style/Theme.Material.Light">
<item name="android:actionBarStyle">@android:style/Widget.Material.Light.ActionBar</item>
<item name="android:displayOptions">showHome|showTitle|useLogo</item>
<item name="android:windowActionBar">true</item>
<item name="android:windowNoTitle">false</item>
<item name="android:windowSoftInputMode">adjustResize</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
</resources>

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<string-array name="menu_share_ways">
<item>短信</item>
<item>邮件</item>
</string-array>
</resources>

@ -1,154 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">小米便签</string>
<string name="app_widget2x2">便签2x2</string>
<string name="app_widget4x4">便签4x4</string>
<string name="widget_havenot_content">没有关联内容,点击新建便签。</string>
<string name="widget_under_visit_mode">访客模式下,便签内容不可见</string>
<string name="notelist_string_info">...</string>
<string name="notelist_menu_new">新建便签</string>
<string name="delete_remind_time_message">成功删除提醒</string>
<string name="set_remind_time_message">创建提醒</string>
<string name="note_alert_expired">已过期</string>
<string name="format_date_ymd">yyyyMMdd</string>
<string name="format_datetime_mdhm">MM月dd日 kk:mm</string>
<string name="notealert_ok">知道了</string>
<string name="notealert_enter">查看</string>
<string name="note_link_tel">呼叫电话</string>
<string name="note_link_email">发送邮件</string>
<string name="note_link_web">浏览网页</string>
<string name="note_link_other">打开地图</string>
<!-- Text export file information -->
<string name="file_path">/MIUI/notes/</string>
<string name="file_name_txt_format">notes_%s.txt</string>
<!-- note list string -->
<string name="format_folder_files_count">(%d)</string>
<string name="menu_create_folder">新建文件夹</string>
<string name="menu_export_text">导出文本</string>
<string name="menu_sync">同步</string>
<string name="menu_sync_cancel">取消同步</string>
<string name="menu_setting">设置</string>
<string name="menu_search">搜索</string>
<string name="menu_trash">回收站</string>
<string name="button_return">返回</string>
<string name="menu_delete">删除</string>
<string name="button_clean_all">清空</string>
<string name="button_recovery">恢复</string>
<string name="menu_success">成功</string>
<string name="menu_move">移动到文件夹</string>
<string name="menu_select_title">选中了 %d 项</string>
<string name="menu_select_none">没有选中项,操作无效</string>
<string name="menu_select_all">全选</string>
<string name="menu_deselect_all">取消全选</string>
<string name="menu_font_size">文字大小</string>
<string name="menu_font_small"></string>
<string name="menu_font_normal">正常</string>
<string name="menu_font_large"></string>
<string name="menu_font_super">超大</string>
<string name="menu_list_mode">进入清单模式</string>
<string name="menu_normal_mode">退出清单模式</string>
<string name="menu_folder_view">查看文件夹</string>
<string name="menu_folder_delete">刪除文件夹</string>
<string name="menu_folder_change_name">修改文件夹名称</string>
<string name="folder_exist">文件夹 %1$s 已存在,请重新命名</string>
<string name="menu_share">分享</string>
<string name="menu_send_to_desktop">发送到桌面</string>
<string name="menu_alert">提醒我</string>
<string name="menu_remove_remind">删除提醒</string>
<string name="menu_title_select_folder">选择文件夹</string>
<string name="menu_move_parent_folder">上一级文件夹</string>
<string name="info_note_enter_desktop">已添加到桌面</string>
<string name="info_image_inserted">图片插入成功</string> <!-- OMO -->
<string name="alert_title_delete">删除</string>
<string name="alert_message_delete_notes">确认要删除所选的 %d 条便签吗?</string>
<string name="alert_message_delete_note">确认要删除该条便签吗?</string>
<string name="alert_message_delete_folder">确认删除文件夹及所包含的便签吗?</string>
<string name="alert_message_clear_all_trash">确认清空回收站中的所有便签吗?此操作无法撤销。</string>
<string name="format_move_notes_to_folder">已将所选 %1$d 条便签移到 %2$s 文件夹</string>
<!-- export text -->
<string name="error_sdcard_unmounted">SD卡被占用不能操作</string>
<string name="error_sdcard_export">导出文本时发生错误请检查SD卡</string>
<string name="error_note_not_exist">要查看的便签不存在</string>
<string name="error_note_empty_for_clock">不能为空便签设置闹钟提醒</string>
<string name="error_note_empty_for_send_to_desktop">不能将空便签发送到桌面</string>
<string name="error_permission_denied">权限被拒绝,无法访问图片</string>
<string name="error_image_insert_failed">插入图片失败,请重试</string>
<string name="success_sdcard_export">导出成功</string>
<string name="failed_sdcard_export">导出失败</string>
<string name="format_exported_file_location">已将文本文件(%1$s)输出至SD卡(%2$s)目录</string>
<!-- Sync -->
<string name="ticker_syncing">同步便签...</string>
<string name="ticker_success">同步成功</string>
<string name="ticker_fail">同步失败</string>
<string name="ticker_cancel">同步已取消</string>
<string name="success_sync_account">与%1$s同步成功</string>
<string name="error_sync_network">同步失败,请检查网络和帐号设置</string>
<string name="error_sync_internal">同步失败,发生内部错误</string>
<string name="error_sync_cancelled">同步已取消</string>
<string name="sync_progress_login">登录%1$s...</string>
<string name="sync_progress_init_list">正在获取服务器便签列表...</string>
<string name="sync_progress_syncing">正在同步本地便签...</string>
<!-- Preferences -->
<string name="preferences_title">设置</string>
<string name="preferences_account_title">同步账号</string>
<string name="preferences_account_summary">与google task同步便签记录</string>
<string name="preferences_last_sync_time">上次同步于 %1$s</string>
<string name="preferences_add_account">添加账号</string>
<string name="preferences_menu_change_account">更换账号</string>
<string name="preferences_menu_remove_account">删除账号</string>
<string name="preferences_menu_cancel">取消</string>
<string name="preferences_button_sync_immediately">立即同步</string>
<string name="preferences_button_sync_cancel">取消同步</string>
<string name="preferences_dialog_change_account_title">当前帐号 %1$s</string>
<string name="preferences_dialog_change_account_warn_msg">如更换同步帐号,过去的帐号同步信息将被清空,再次切换的同时可能会造成数据重复</string>
<string name="preferences_dialog_select_account_title">同步便签</string>
<string name="preferences_dialog_select_account_tips">请选择google帐号便签将与该帐号的google task内容同步。</string>
<string name="preferences_toast_cannot_change_account">正在同步中,不能修改同步帐号</string>
<string name="preferences_toast_success_set_accout">同步帐号已设置为%1$s</string>
<string name="preferences_bg_random_appear_title">新建便签背景颜色随机</string>
<string name="preferences_last_sync_time_format">yyyy-MM-dd hh:mm:ss</string>
<string name="button_delete">删除</string>
<string name="formatting_bold">粗体</string>
<string name="formatting_italic">斜体</string>
<string name="formatting_underline">下划线</string>
<string name="call_record_folder_name">通话便签</string>
<string name="hint_foler_name">请输入名称</string>
<string name="search_label">正在搜索便签</string>
<string name="search_hint">搜索便签</string>
<string name="search_setting_description">便签中的文字</string>
<string name="search">便签</string>
<string name="datetime_dialog_ok">设置</string>
<string name="datetime_dialog_cancel">取消</string>
<!-- Password protection -->
<string name="password_input_title">请输入密码</string>
<string name="password_hint">密码</string>
<string name="return_button">返回</string>
<string name="confirm_button">确认</string>
<string name="encrypt_note_dialog_title">加密便签</string>
<string name="encrypt_note_dialog_message">是否将此便签设置为加密便签?</string>
<string name="password_set_dialog_title">设置密码</string>
<string name="password_set_dialog_message">请输入密码</string>
<string name="password_error">密码错误,请重试</string>
<string name="password_empty">密码不能为空</string>
<plurals name="search_results_title">
<item quantity="other"><xliff:g id="NUMBER">%1$s</xliff:g> 条符合“<xliff:g id="SEARCH">%2$s</xliff:g>”的搜索结果</item>
</plurals>
</resources>

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<string-array name="menu_share_ways">
<item>短信</item>
<item>郵件</item>
</string-array>
</resources>

@ -1,127 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">便簽</string>
<string name="app_widget2x2">便簽2x2</string>
<string name="app_widget4x4">便簽4x4</string>
<string name="widget_havenot_content">沒有關聯內容,點擊新建便簽。</string>
<string name="widget_under_visit_mode">訪客模式下,便籤內容不可見</string>
<string name="notelist_string_info">...</string>
<string name="notelist_menu_new">新建便簽</string>
<string name="delete_remind_time_message">成功刪除提醒</string>
<string name="set_remind_time_message">創建提醒</string>
<string name="note_alert_expired">已過期</string>
<string name="format_date_ymd">yyyyMMdd</string>
<string name="format_datetime_mdhm">MM月dd日 kk:mm</string>
<string name="notealert_ok">知道了</string>
<string name="notealert_enter">查看</string>
<string name="note_link_tel">呼叫電話</string>
<string name="note_link_email">發送郵件</string>
<string name="note_link_web">浏覽網頁</string>
<string name="note_link_other">打開地圖</string>
<string name="format_move_notes_to_folder">已將所選 %1$d 便籤移到 %2$s 文件夾</string>
<!-- note list string -->
<string name="menu_create_folder">新建文件夾</string>
<string name="menu_export_text">導出文本</string>
<string name="menu_sync">同步</string>
<string name="menu_sync_cancel">取消同步</string>
<string name="menu_setting">設置</string>
<string name="menu_search">搜尋</string>
<string name="menu_delete">刪除</string>
<string name="menu_move">移動到文件夾</string>
<string name="menu_select_title">選中了 %d 項</string>
<string name="menu_select_none">沒有選中項,操作無效</string>
<string name="menu_select_all">全選</string>
<string name="menu_deselect_all">取消全選</string>
<string name="menu_font_size">文字大小</string>
<string name="menu_font_small"></string>
<string name="menu_font_normal">正常</string>
<string name="menu_font_large"></string>
<string name="menu_font_super">超大</string>
<string name="menu_list_mode">進入清單模式</string>
<string name="menu_normal_mode">退出清單模式</string>
<string name="menu_folder_view">查看文件夾</string>
<string name="menu_folder_delete">刪除文件夾</string>
<string name="menu_folder_change_name">修改文件夾名稱</string>
<string name="folder_exist">文件夾 %1$s 已存在,請重新命名</string>
<string name="menu_share">分享</string>
<string name="menu_send_to_desktop">發送到桌面</string>
<string name="menu_alert">提醒我</string>
<string name="menu_remove_remind">刪除提醒</string>
<string name="menu_title_select_folder">選擇文件夾</string>
<string name="menu_move_parent_folder">上一級文件夾</string>
<string name="info_note_enter_desktop">已添加到桌面</string>
<string name="alert_title_delete">刪除</string>
<string name="alert_message_delete_notes">确认要刪除所選的 %d 條便籤嗎?</string>
<string name="alert_message_delete_note">确认要删除該條便籤嗎?</string>
<string name="alert_message_delete_folder">確認刪除檔夾及所包含的便簽嗎?</string>
<string name="error_sdcard_unmounted">SD卡被佔用不能操作</string>
<string name="error_sdcard_export">導出TXT時發生錯誤請檢查SD卡</string>
<string name="error_note_not_exist">要查看的便籤不存在</string>
<string name="error_note_empty_for_clock">不能爲空便籤設置鬧鐘提醒</string>
<string name="error_note_empty_for_send_to_desktop">不能將空便籤發送到桌面</string>
<string name="success_sdcard_export">導出成功</string>
<string name="failed_sdcard_export">導出失敗</string>
<string name="format_exported_file_location">已將文本文件(%1$s)導出至SD(%2$s)目錄</string>
<!-- Sync -->
<string name="ticker_syncing">同步便簽...</string>
<string name="ticker_success">同步成功</string>
<string name="ticker_fail">同步失敗</string>
<string name="ticker_cancel">同步已取消</string>
<string name="success_sync_account">與%1$s同步成功</string>
<string name="error_sync_network">同步失敗,請檢查網絡和帳號設置</string>
<string name="error_sync_internal">同步失敗,發生內部錯誤</string>
<string name="error_sync_cancelled">同步已取消</string>
<string name="sync_progress_login">登陸%1$s...</string>
<string name="sync_progress_init_list">正在獲取服務器便籤列表...</string>
<string name="sync_progress_syncing">正在同步本地便籤...</string>
<!-- Preferences -->
<string name="preferences_title">設置</string>
<string name="preferences_account_title">同步賬號</string>
<string name="preferences_account_summary">与google task同步便簽記錄</string>
<string name="preferences_last_sync_time">上次同步于 %1$s</string>
<string name="preferences_add_account">添加賬號</string>
<string name="preferences_menu_change_account">更換賬號</string>
<string name="preferences_menu_remove_account">刪除賬號</string>
<string name="preferences_menu_cancel">取消</string>
<string name="preferences_button_sync_immediately">立即同步</string>
<string name="preferences_button_sync_cancel">取消同步</string>
<string name="preferences_dialog_change_account_title">當前帳號 %1$s</string>
<string name="preferences_dialog_change_account_warn_msg">如更換同步帳號,過去的帳號同步信息將被清空,再次切換的同時可能會造成數據重復</string>
<string name="preferences_dialog_select_account_title">同步便簽</string>
<string name="preferences_dialog_select_account_tips">請選擇google帳號便簽將與該帳號的google task內容同步。</string>
<string name="preferences_toast_cannot_change_account">正在同步中,不能修改同步帳號</string>
<string name="preferences_toast_success_set_accout">同步帳號已設置為%1$s</string>
<string name="preferences_bg_random_appear_title">新建便籤背景顏色隨機</string>
<string name="button_delete">刪除</string>
<string name="call_record_folder_name">通話便籤</string>
<string name="hint_foler_name">請輸入名稱</string>
<string name="search_label">正在搜索便籤</string>
<string name="search_hint">搜索便籤</string>
<string name="search_setting_description">便籤中的文字</string>
<string name="search">便籤</string>
<string name="datetime_dialog_ok">設置</string>
<string name="datetime_dialog_cancel">取消</string>
<plurals name="search_results_title">
<item quantity="other"><xliff:g id="NUMBER">%1$s</xliff:g> 條符合”<xliff:g id="SEARCH">%2$s</xliff:g>“的搜尋結果</item>
</plurals>
</resources>

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<!-- Backup format -->
<string-array name="format_for_exported_note">
<item>-%s</item> <!-- format_folder_name -->
<item>--%s</item> <!-- format_folder_note_date -->
<item>--%s</item> <!-- format_note_date -->
<item>--%s</item> <!-- format_note_content -->
</string-array>
<string-array name="menu_share_ways">
<item>Messaging</item>
<item>Email</item>
</string-array>
</resources>

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<dimen name="text_font_size_super">33sp</dimen>
<dimen name="text_font_size_large">26sp</dimen>
<dimen name="text_font_size_medium">20sp</dimen>
<dimen name="text_font_size_normal">17sp</dimen>
<dimen name="text_font_size_small">14sp</dimen>
</resources>

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 定义退出搜索菜单项的ID -->
<item name="menu_exit_search" type="id" />
</resources>

@ -1,173 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">Notes</string>
<string name="app_widget2x2">Notes 2x2</string>
<string name="app_widget4x4">Notes 4x4</string>
<string name="widget_havenot_content">No associated note found, click to create associated note.</string>
<string name="widget_under_visit_mode">Privacy modecan not see note content</string>
<string name="notelist_string_info">...</string>
<string name="notelist_menu_new">Add note</string>
<string name="delete_remind_time_message">Delete reminder successfully</string>
<string name="set_remind_time_message">Set reminder</string>
<string name="note_alert_expired">Expired</string>
<string name="format_date_ymd">yyyyMMdd</string>
<string name="format_datetime_mdhm">MMMd kk:mm</string>
<string name="notealert_ok">Got it</string>
<string name="notealert_enter">Take a look</string>
<string name="note_link_tel">Call</string>
<string name="note_link_email">Send email</string>
<string name="note_link_web">Browse web</string>
<string name="note_link_other">Open map</string>
<!-- Text export file information -->
<string name="file_path">/MIUI/notes/</string>
<string name="file_name_txt_format">notes_%s.txt</string>
<!-- notes list string -->
<string name="format_folder_files_count">(%d)</string>
<string name="menu_create_folder">New Folder</string>
<string name="menu_export_text">Export text</string>
<string name="menu_sync">Sync</string>
<string name="menu_sync_cancel">Cancel syncing</string>
<string name="menu_setting">Settings</string>
<string name="menu_search">Search</string>
<string name="menu_delete">Delete</string>
<string name="menu_move">Move to folder</string>
<string name="menu_trash">Trash</string>
<string name="button_return">Return</string>
<string name="button_clean_all">Clean All</string>
<string name="button_recovery">Recovery</string>
<string name="menu_success">Success</string>
<string name="menu_select_title">%d selected</string>
<string name="menu_select_none">Nothing selected, the operation is invalid</string>
<string name="menu_select_all">Select all</string>
<string name="menu_deselect_all">Deselect all</string>
<string name="menu_font_size">Font size</string>
<string name="menu_font_small">Small</string>
<string name="menu_font_normal">Medium</string>
<string name="menu_font_large">Large</string>
<string name="menu_font_super">Super</string>
<string name="menu_list_mode">Enter check list</string>
<string name="menu_normal_mode">Leave check list</string>
<string name="menu_folder_view">View folder</string>
<string name="menu_folder_delete">Delete folder</string>
<string name="menu_folder_change_name">Change folder name</string>
<string name="folder_exist">The folder %1$s exist, please rename</string>
<string name="menu_share">Share</string>
<string name="menu_send_to_desktop">Send to home</string>
<string name="menu_alert">Remind me</string>
<string name="menu_remove_remind">Delete reminder</string>
<string name="menu_title_select_folder">Select folder</string>
<string name="menu_move_parent_folder">Parent folder</string>
<string name="info_note_enter_desktop">Note added to home</string>
<string name="info_image_inserted">Image inserted successfully</string> <!-- OMO -->
<string name="alert_message_delete_folder">Confirm to delete folder and its notes?</string>
<string name="alert_title_delete">Delete selected notes</string>
<string name="alert_message_clear_all_trash">Confirm to clear all notes from trash? This action cannot be undone.</string>
<string name="alert_message_delete_notes">Confirm to delete the selected %d notes?</string>
<string name="alert_message_delete_note">Confirm to delete this note?</string>
<string name="format_move_notes_to_folder">Have moved selected %1$d notes to %2$s folder</string>
<!-- Error information -->
<string name="error_sdcard_unmounted">SD card busy, not available now</string>
<string name="error_sdcard_export">Export failed, please check SD card</string>
<string name="error_note_not_exist">The note is not exist</string>
<string name="error_note_empty_for_clock">Sorry, can not set clock on empty note</string>
<string name="error_note_empty_for_send_to_desktop">Sorry, can not send and empty note to home</string>
<string name="error_permission_denied">Permission denied, cannot access images</string>
<string name="error_image_insert_failed">Failed to insert image, please try again</string>
<string name="success_sdcard_export">Export successful</string>
<string name="failed_sdcard_export">Export fail</string>
<string name="format_exported_file_location">Export text file (%1$s) to SD (%2$s) directory</string>
<!-- Sync -->
<string name="ticker_syncing">Syncing notes...</string>
<string name="ticker_success">Sync is successful</string>
<string name="ticker_fail">Sync is failed</string>
<string name="ticker_cancel">Sync is canceled</string>
<string name="success_sync_account">Sync is successful with account %1$s</string>
<string name="error_sync_network">Sync failed, please check network and account settings</string>
<string name="error_sync_internal">Sync failed, internal error occurs</string>
<string name="error_sync_cancelled">Sync is canceled</string>
<string name="sync_progress_login">Logging into %1$s...</string>
<string name="sync_progress_init_list">Getting remote note list...</string>
<string name="sync_progress_syncing">Synchronize local notes with Google Task...</string>
<!-- Preferences -->
<string name="preferences_title">Settings</string>
<string name="preferences_account_title">Sync account</string>
<string name="preferences_account_summary">Sync notes with google task</string>
<string name="preferences_last_sync_time">Last sync time %1$s</string>
<string name="preferences_last_sync_time_format">yyyy-MM-dd hh:mm:ss</string>
<string name="preferences_add_account">Add account</string>
<string name="preferences_menu_change_account">Change sync account</string>
<string name="preferences_menu_remove_account">Remove sync account</string>
<string name="preferences_menu_cancel">Cancel</string>
<string name="preferences_button_sync_immediately">Sync immediately</string>
<string name="preferences_button_sync_cancel">Cancel syncing</string>
<string name="preferences_dialog_change_account_title">Current account %1$s</string>
<string name="preferences_dialog_change_account_warn_msg">All sync related information will be deleted, which may result in duplicated items sometime</string>
<string name="preferences_dialog_select_account_title">Sync notes</string>
<string name="preferences_dialog_select_account_tips">Please select a google account. Local notes will be synced with google task.</string>
<string name="preferences_toast_cannot_change_account">Cannot change the account because sync is in progress</string>
<string name="preferences_toast_success_set_accout">%1$s has been set as the sync account</string>
<string name="preferences_bg_random_appear_title">New note background color random</string>
<string name="button_delete">Delete</string>
<string name="call_record_folder_name">Call notes</string>
<string name="hint_foler_name">Input name</string>
<string name="search_label">Searching Notes</string>
<string name="search_hint">Search notes</string>
<string name="search_setting_description">Text in your notes</string>
<string name="search">Notes</string>
<string name="datetime_dialog_ok">set</string>
<string name="datetime_dialog_cancel">cancel</string>
<!-- Password protection -->
<string name="password_input_title">Enter your password please</string>
<string name="password_hint">password</string>
<string name="return_button">Return</string>
<string name="confirm_button">Confirm</string>
<string name="encrypt_note_dialog_title">Encrypted note</string>
<string name="encrypt_note_dialog_message">Would you like to set the note as an encrypted note?</string>
<string name="password_set_dialog_title">Set password</string>
<string name="password_set_dialog_message">Enter password please</string>
<string name="password_error">Error, try again</string>
<string name="password_empty">The password can not be empty</string>
<string name="formatting_bold">Bold</string>
<string name="formatting_italic">Italic</string>
<string name="formatting_underline">Underline</string>
<plurals name="search_results_title">
<item quantity="one"><xliff:g id="number" example="1">%1$s</xliff:g> result for "<xliff:g id="search" example="???">%2$s</xliff:g>"</item>
<!-- Case of 0 or 2 or more results. -->
<item quantity="other"><xliff:g id="number" example="15">%1$s</xliff:g> results for "<xliff:g id="search" example="???">%2$s</xliff:g>"</item>
</plurals>
<!-- Voice to text -->
<string name="voice_recognition_ready">请开始说话...</string>
<string name="voice_recognition_not_available">语音识别不可用</string>
<string name="voice_recognition_prompt">请说出您要输入的内容</string>
<string name="voice_recognition_error_audio">音频错误</string>
<string name="voice_recognition_error_client">客户端错误</string>
<string name="voice_recognition_error_permissions">权限不足</string>
<string name="voice_recognition_error_network">网络错误</string>
<string name="voice_recognition_error_network_timeout">网络超时</string>
<string name="voice_recognition_error_no_match">未识别到语音</string>
<string name="voice_recognition_error_busy">识别器忙</string>
<string name="voice_recognition_error_server">服务器错误</string>
<string name="voice_recognition_error_timeout">语音超时</string>
<string name="voice_recognition_error_unknown">未知错误</string>
</resources>

@ -1,74 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<style name="TextAppearanceSuper">
<item name="android:textSize">@dimen/text_font_size_super</item>
<item name="android:textColorLink">#0000ff</item>
</style>
<style name="TextAppearanceLarge">
<item name="android:textSize">@dimen/text_font_size_large</item>
<item name="android:textColorLink">#0000ff</item>
</style>
<style name="TextAppearanceMedium">
<item name="android:textSize">@dimen/text_font_size_medium</item>
<item name="android:textColorLink">#0000ff</item>
</style>
<style name="TextAppearanceNormal">
<item name="android:textSize">@dimen/text_font_size_normal</item>
<item name="android:textColorLink">#0000ff</item>
</style>
<style name="TextAppearancePrimaryItem">
<item name="android:textSize">@dimen/text_font_size_normal</item>
<item name="android:textColor">@color/primary_text_dark</item>
</style>
<style name="TextAppearanceSecondaryItem">
<item name="android:textSize">@dimen/text_font_size_small</item>
<item name="android:textColor">@color/secondary_text_dark</item>
</style>
<style name="TextAppearanceUnderMenuIcon">
<item name="android:textSize">@dimen/text_font_size_normal</item>
<item name="android:textColor">@android:color/black</item>
</style>
<style name="HighlightTextAppearancePrimary">
<item name="android:textSize">@dimen/text_font_size_normal</item>
<item name="android:textColor">@color/primary_text_dark</item>
</style>
<style name="HighlightTextAppearanceSecondary">
<item name="android:textSize">@dimen/text_font_size_small</item>
<item name="android:textColor">@color/secondary_text_dark</item>
</style>
<style name="NoteTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@android:style/Widget.Holo.Light.ActionBar</item>
<item name="android:displayOptions">showHome|showTitle|useLogo</item>
<item name="android:windowActionBar">true</item>
<item name="android:windowNoTitle">false</item>
<item name="android:windowSoftInputMode">adjustResize</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="NoteActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid">
<item name="android:displayOptions" />
<item name="android:visibility">gone</item>
</style>
</resources>

@ -1,9 +0,0 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Base.Theme.Notesmaster" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your light theme here. -->
<!-- <item name="colorPrimary">@color/my_light_primary</item> -->
</style>
<style name="Theme.Notesmaster" parent="Base.Theme.Notesmaster" />
</resources>

@ -27,4 +27,14 @@
android:title="@string/preferences_bg_random_appear_title"
android:defaultValue="false" />
</PreferenceCategory>
<PreferenceCategory>
<ListPreference
android:key="pref_key_ui_style"
android:title="@string/preferences_ui_style_title"
android:summary="@string/preferences_ui_style_summary"
android:entries="@array/preferences_ui_style_entries"
android:entryValues="@array/preferences_ui_style_values"
android:defaultValue="CLASSIC" />
</PreferenceCategory>
</PreferenceScreen>

@ -16,7 +16,6 @@
package net.micode.notes.ui;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
@ -48,7 +47,7 @@ import java.io.IOException;
*
*
*/
public class AlarmAlertActivity extends Activity implements OnClickListener, OnDismissListener {
public class AlarmAlertActivity extends BaseActivity implements OnClickListener, OnDismissListener {
/**
* ID
*/

@ -0,0 +1,44 @@
/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.micode.notes.ui;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
/**
* Activity
* ActivityUI
*/
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// 在super.onCreate()之前应用主题和夜间模式
ThemeUtils.applyTheme(this);
applyNightMode();
super.onCreate(savedInstanceState);
}
/**
*
*/
private void applyNightMode() {
boolean nightMode = NotesPreferenceActivity.getNightMode(this);
int mode = nightMode ? AppCompatDelegate.MODE_NIGHT_YES : AppCompatDelegate.MODE_NIGHT_NO;
AppCompatDelegate.setDefaultNightMode(mode);
}
}

@ -0,0 +1,33 @@
/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.micode.notes.ui;
import android.os.Bundle;
import android.preference.PreferenceActivity;
/**
* PreferenceActivity
* PreferenceActivityUI
*/
public abstract class BasePreferenceActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// 在super.onCreate()之前应用主题
ThemeUtils.applyTheme(this);
super.onCreate(savedInstanceState);
}
}

@ -16,7 +16,6 @@
package net.micode.notes.ui;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
@ -119,7 +118,7 @@ import net.micode.notes.widget.NoteWidgetProvider_4x;
*
*
*/
public class NoteEditActivity extends Activity implements OnClickListener,
public class NoteEditActivity extends BaseActivity implements OnClickListener,
NoteSettingChangedListener, OnTextViewChangeListener, VoskRecognitionService.RecognitionListener {
/**
*

@ -102,7 +102,7 @@ import java.lang.reflect.Field;
*
*
*/
public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener {
public class NotesListActivity extends BaseActivity implements OnClickListener, OnItemLongClickListener {
private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0;
private static final int FOLDER_LIST_QUERY_TOKEN = 1;
@ -1411,6 +1411,12 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
// set sync or sync_cancel
menu.findItem(R.id.menu_sync).setTitle(
GTaskSyncService.isSyncing() ? R.string.menu_sync_cancel : R.string.menu_sync);
// 更新夜间模式菜单项标题
MenuItem nightModeItem = menu.findItem(R.id.menu_night_mode);
if (nightModeItem != null) {
boolean isNightMode = NotesPreferenceActivity.getNightMode(this);
nightModeItem.setTitle(isNightMode ? R.string.menu_day_mode : R.string.menu_night_mode);
}
} else if (mState == ListEditState.SUB_FOLDER) {
getMenuInflater().inflate(R.menu.sub_folder, menu);
} else if (mState == ListEditState.CALL_RECORD_FOLDER) {
@ -1428,6 +1434,16 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_ui_style: {
// 打开设置界面以切换UI样式
startPreferenceActivity();
break;
}
case R.id.menu_night_mode: {
// 切换夜间模式
toggleNightMode();
break;
}
case R.id.menu_new_folder: {
showCreateOrModifyFolderDialog(true);
break;
@ -1674,6 +1690,25 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
from.startActivityIfNeeded(intent, -1);
}
/**
*
*/
private void toggleNightMode() {
boolean currentMode = NotesPreferenceActivity.getNightMode(this);
boolean newMode = !currentMode;
// 保存新的夜间模式设置
NotesPreferenceActivity.setNightMode(this, newMode);
// 应用夜间模式
androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode(
newMode ? androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES
: androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_NO);
// 重新创建Activity以应用新主题
recreate();
}
private class OnListItemClickListener implements OnItemClickListener {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

@ -112,7 +112,8 @@ public class NotesListItem extends LinearLayout {
super(context);
mContext = context;
// 填充布局
inflate(context, R.layout.note_item, this);
int layoutResId = UiLayoutResolver.getNoteListItemLayout(context);
inflate(context, layoutResId, this);
// 获取视图组件
mAlert = (ImageView) findViewById(R.id.iv_alert_icon);
mEncryptedIcon = (ImageView) findViewById(R.id.iv_encrypted_icon);

@ -28,7 +28,9 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
@ -55,7 +57,7 @@ import net.micode.notes.gtask.remote.GTaskSyncService;
/**
*
*/
public class NotesPreferenceActivity extends PreferenceActivity {
public class NotesPreferenceActivity extends BasePreferenceActivity {
/** 偏好设置文件名 */
public static final String PREFERENCE_NAME = "notes_preferences";
@ -68,6 +70,12 @@ public class NotesPreferenceActivity extends PreferenceActivity {
/** 设置背景颜色的偏好键 */
public static final String PREFERENCE_SET_BG_COLOR_KEY = "pref_key_bg_random_appear";
/** UI样式存储键 */
public static final String PREFERENCE_UI_STYLE_KEY = "pref_key_ui_style";
/** 夜间模式存储键 */
public static final String PREFERENCE_NIGHT_MODE_KEY = "pref_key_night_mode";
/** 同步账户的偏好键 */
private static final String PREFERENCE_SYNC_ACCOUNT_KEY = "pref_sync_account_key";
@ -95,7 +103,9 @@ public class NotesPreferenceActivity extends PreferenceActivity {
super.onCreate(icicle);
/* 使用应用图标作为导航 */
getActionBar().setDisplayHomeAsUpEnabled(true);
if (getActionBar() != null) {
getActionBar().setDisplayHomeAsUpEnabled(true);
}
// 从资源文件加载偏好设置
addPreferencesFromResource(R.xml.preferences);
@ -111,6 +121,9 @@ public class NotesPreferenceActivity extends PreferenceActivity {
// 加载设置头部布局
View header = LayoutInflater.from(this).inflate(R.layout.settings_header, null);
getListView().addHeaderView(header, null, true);
// 设置UI样式偏好监听器
setupUiStylePreference();
}
/**
@ -256,6 +269,60 @@ public class NotesPreferenceActivity extends PreferenceActivity {
loadSyncButton();
}
/**
* UI
*/
private void setupUiStylePreference() {
ListPreference uiStylePref = (ListPreference) findPreference(PREFERENCE_UI_STYLE_KEY);
if (uiStylePref != null) {
// 设置当前值摘要
UiStyle currentStyle = getUiStyle(this);
uiStylePref.setValue(currentStyle.name());
updateUiStyleSummary(uiStylePref, currentStyle);
// 设置变化监听器
uiStylePref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String styleName = (String) newValue;
try {
UiStyle style = UiStyle.valueOf(styleName);
// 保存UI样式
setUiStyle(NotesPreferenceActivity.this, style);
// 更新摘要
updateUiStyleSummary((ListPreference) preference, style);
// 重新创建Activity以应用新主题
recreate();
return true;
} catch (IllegalArgumentException e) {
return false;
}
}
});
}
}
/**
* UI
* @param preference ListPreference
* @param style UI
*/
private void updateUiStyleSummary(ListPreference preference, UiStyle style) {
String summary = "";
switch (style) {
case CLASSIC:
summary = getString(R.string.preferences_ui_style_classic);
break;
case MATERIAL:
summary = getString(R.string.preferences_ui_style_material);
break;
case MINIMAL:
summary = getString(R.string.preferences_ui_style_minimal);
break;
}
preference.setSummary(summary);
}
/**
*
*/
@ -472,6 +539,66 @@ public class NotesPreferenceActivity extends PreferenceActivity {
return settings.getLong(PREFERENCE_LAST_SYNC_TIME, 0);
}
/**
* UI
* @param context
* @return UICLASSIC
*/
public static UiStyle getUiStyle(Context context) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME,
Context.MODE_PRIVATE);
String styleName = settings.getString(PREFERENCE_UI_STYLE_KEY, null);
if (styleName == null) {
return UiStyle.CLASSIC;
}
try {
return UiStyle.valueOf(styleName);
} catch (IllegalArgumentException e) {
// 如果存储的值无效,返回默认值
return UiStyle.CLASSIC;
}
}
/**
* UI
* @param context
* @param style UI
*/
public static void setUiStyle(Context context, UiStyle style) {
if (style == null) {
style = UiStyle.CLASSIC;
}
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME,
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString(PREFERENCE_UI_STYLE_KEY, style.name());
editor.commit();
}
/**
*
* @param context
* @return truefalse
*/
public static boolean getNightMode(Context context) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME,
Context.MODE_PRIVATE);
return settings.getBoolean(PREFERENCE_NIGHT_MODE_KEY, false);
}
/**
*
* @param context
* @param nightMode truefalse
*/
public static void setNightMode(Context context, boolean nightMode) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME,
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(PREFERENCE_NIGHT_MODE_KEY, nightMode);
editor.commit();
}
/**
* 广UI
*/

@ -16,7 +16,6 @@
package net.micode.notes.ui;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
@ -40,7 +39,7 @@ import net.micode.notes.ui.NoteEditActivity;
* 3.
* 4. 便
*/
public class PasswordInputActivity extends Activity {
public class PasswordInputActivity extends BaseActivity {
/** 日志标签,用于调试和日志输出 */
private static final String TAG = "PasswordInputActivity";

@ -0,0 +1,54 @@
/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.micode.notes.ui;
import android.app.Activity;
import net.micode.notes.R;
/**
*
* UI
*/
public class ThemeUtils {
/**
* UI
* @param activity Activity
*/
public static void applyTheme(Activity activity) {
UiStyle style = NotesPreferenceActivity.getUiStyle(activity);
int themeResId = getThemeResourceId(style);
activity.setTheme(themeResId);
}
/**
* UIID
* @param style UI
* @return ID
*/
private static int getThemeResourceId(UiStyle style) {
switch (style) {
case CLASSIC:
return R.style.Theme_Notes_Classic;
case MATERIAL:
return R.style.Theme_Notes_Material;
case MINIMAL:
return R.style.Theme_Notes_Minimal;
default:
return R.style.Theme_Notes_Classic;
}
}
}

@ -16,7 +16,6 @@
package net.micode.notes.ui;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.AsyncQueryHandler;
import android.content.ContentResolver;
@ -47,7 +46,7 @@ import net.micode.notes.tool.DataUtils;
* 3. 便
* 4. 便
*/
public class TrashActivity extends Activity implements OnClickListener {
public class TrashActivity extends BaseActivity implements OnClickListener {
/** 日志标签,用于调试和日志输出 */
private static final String TAG = "TrashActivity";

@ -0,0 +1,45 @@
/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.micode.notes.ui;
import android.content.Context;
import net.micode.notes.R;
/**
* UI
* UIID
*/
public class UiLayoutResolver {
/**
* ID
* @param context
* @return ID
*/
public static int getNoteListItemLayout(Context context) {
UiStyle style = NotesPreferenceActivity.getUiStyle(context);
switch (style) {
case CLASSIC:
return R.layout.note_item;
case MATERIAL:
return R.layout.note_item_material;
case MINIMAL:
return R.layout.note_item_minimal;
default:
return R.layout.note_item;
}
}
}

@ -0,0 +1,38 @@
/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.micode.notes.ui;
/**
* UI
* UI
*/
public enum UiStyle {
/**
*
*/
CLASSIC,
/**
* Material
*/
MATERIAL,
/**
*
*/
MINIMAL
}
Loading…
Cancel
Save