pull/28/head
whale 2 months ago
parent 12f835c2af
commit e67bf174c8

@ -131,21 +131,33 @@ public class DataUtils {
}
// 检查目标ID是否是一个文件夹TYPE_FOLDER或TYPE_SYSTEM
Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, folderId),
new String[] { NoteColumns.TYPE },
null,
null,
null);
boolean isFolder = false;
if (cursor != null) {
if (cursor.moveToFirst()) {
int type = cursor.getInt(0);
if (type == Notes.TYPE_FOLDER || type == Notes.TYPE_SYSTEM) {
isFolder = true;
// 特殊处理系统文件夹ID它们是逻辑ID不是实际的数据库记录ID
if (folderId == Notes.ID_ROOT_FOLDER ||
folderId == Notes.ID_TEMPARAY_FOLDER ||
folderId == Notes.ID_CALL_RECORD_FOLDER ||
folderId == Notes.ID_TRASH_FOLER ||
folderId == Notes.ID_PRIVACY_SPACE_FOLDER) {
isFolder = true;
Log.d(TAG, "Target is a system folder: " + folderId);
} else {
// 对于非系统文件夹,查询数据库验证
Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, folderId),
new String[] { NoteColumns.TYPE },
null,
null,
null);
if (cursor != null) {
if (cursor.moveToFirst()) {
int type = cursor.getInt(0);
if (type == Notes.TYPE_FOLDER || type == Notes.TYPE_SYSTEM) {
isFolder = true;
}
}
cursor.close();
}
cursor.close();
}
if (!isFolder) {
@ -456,4 +468,52 @@ public class DataUtils {
}
return snippet;
}
/**
* 便
* <p>
* 便
* </p>
*
* @param resolver ContentResolver
* @param folderId ID
* @return 便
*/
public static int getNoteCount(ContentResolver resolver, long folderId) {
Cursor cursor = resolver.query(
Notes.CONTENT_NOTE_URI,
new String[] { "COUNT(*)" },
NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "=?",
new String[] { String.valueOf(Notes.TYPE_NOTE), String.valueOf(folderId) },
null
);
int count = 0;
if (cursor != null) {
if (cursor.moveToFirst()) {
try {
count = cursor.getInt(0);
} catch (IndexOutOfBoundsException e) {
Log.e(TAG, "get note count failed:" + e.toString());
} finally {
cursor.close();
}
}
}
return count;
}
/**
* 便
* <p>
* 便便
* </p>
*
* @param resolver ContentResolver
* @return 便
*/
public static int getUncategorizedNoteCount(ContentResolver resolver) {
// 未分类的便签就是直接在根文件夹中的便签
return getNoteCount(resolver, Notes.ID_ROOT_FOLDER);
}
}

@ -833,6 +833,8 @@ public class NoteEditActivity extends Activity implements OnClickListener,
saveNote();
super.onBackPressed();
// 添加返回动画效果
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
}
/**

File diff suppressed because it is too large Load Diff

@ -0,0 +1,142 @@
package net.micode.notes.ui;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import net.micode.notes.R;
import java.util.List;
public class SidebarAdapter extends BaseAdapter {
private Context mContext;
private List<SidebarItem> mItems;
public SidebarAdapter(Context context, List<SidebarItem> items) {
mContext = context;
mItems = items;
}
@Override
public int getCount() {
return mItems != null ? mItems.size() : 0;
}
@Override
public Object getItem(int position) {
return mItems != null ? mItems.get(position) : null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.sidebar_item, parent, false);
}
SidebarItem item = mItems.get(position);
TextView titleTextView = convertView.findViewById(R.id.item_title);
TextView countTextView = convertView.findViewById(R.id.item_count);
titleTextView.setText(item.getTitle());
if (item.getCount() > 0) {
countTextView.setVisibility(View.VISIBLE);
countTextView.setText(String.valueOf(item.getCount()));
} else {
countTextView.setVisibility(View.GONE);
}
if (item.isSelected()) {
convertView.setBackgroundColor(mContext.getResources().getColor(R.color.primary, null));
titleTextView.setTextColor(mContext.getResources().getColor(R.color.onPrimary, null));
countTextView.setTextColor(mContext.getResources().getColor(R.color.onPrimary, null));
} else {
convertView.setBackgroundColor(mContext.getResources().getColor(R.color.surface, null));
titleTextView.setTextColor(mContext.getResources().getColor(R.color.onSurface, null));
countTextView.setTextColor(mContext.getResources().getColor(R.color.primary, null));
}
return convertView;
}
public static class SidebarItem {
private String mTitle;
private int mCount;
private boolean mSelected;
private String mTag;
private long mCategoryId;
private QuickViewType mQuickViewType;
public SidebarItem(String title) {
mTitle = title;
mCount = 0;
mSelected = false;
}
public SidebarItem(String title, int count) {
mTitle = title;
mCount = count;
mSelected = false;
}
public SidebarItem(String title, int count, long categoryId) {
mTitle = title;
mCount = count;
mSelected = false;
mCategoryId = categoryId;
}
public SidebarItem(String title, int count, String tag) {
mTitle = title;
mCount = count;
mSelected = false;
mTag = tag;
}
public SidebarItem(String title, int count, QuickViewType type) {
mTitle = title;
mCount = count;
mSelected = false;
mQuickViewType = type;
}
public String getTitle() {
return mTitle;
}
public int getCount() {
return mCount;
}
public boolean isSelected() {
return mSelected;
}
public void setSelected(boolean selected) {
mSelected = selected;
}
public String getTag() {
return mTag;
}
public long getCategoryId() {
return mCategoryId;
}
public QuickViewType getQuickViewType() {
return mQuickViewType;
}
public enum QuickViewType {
ALL, PINNED, TODAY, UNTAGGED
}
}
}

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator">
<scale
android:fromXScale="0.9"
android:toXScale="1.0"
android:fromYScale="0.9"
android:toYScale="1.0"
android:duration="280"
android:pivotX="50%"
android:pivotY="50%" />
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="280" />
</set>

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<scale
android:fromXScale="1.0"
android:toXScale="0.9"
android:fromYScale="1.0"
android:toYScale="0.9"
android:duration="280"
android:pivotX="50%"
android:pivotY="50%" />
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="280" />
</set>

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator">
<scale
android:fromXScale="0.9"
android:toXScale="1.0"
android:fromYScale="0.9"
android:toYScale="1.0"
android:duration="280"
android:pivotX="50%"
android:pivotY="50%" />
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="280" />
</set>

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<scale
android:fromXScale="1.0"
android:toXScale="0.9"
android:fromYScale="1.0"
android:toYScale="0.9"
android:duration="280"
android:pivotX="50%"
android:pivotY="50%" />
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="280" />
</set>

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="#F5F5F5" />
<corners android:radius="4dp" />
<stroke android:width="1dp" android:color="#BDBDBD" />
</shape>
</item>
<item android:gravity="center">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#F57C00"
android:pathData="M7,4L5,4L5,6L7,6L7,4ZM19,4L17,4L17,6L19,6L19,4ZM6,5L6,7L4,7L4,5L6,5ZM18,5L18,7L20,7L20,5L18,5ZM4,8L6,8L6,16L4,16L4,8ZM20,8L18,8L18,16L20,16L20,8ZM7,18L5,18L5,20L7,20L7,18ZM19,18L17,18L17,20L19,20L19,18ZM12,8L8,12L12,16L16,12L12,8ZM12,10L14,12L12,14L10,12L12,10Z"/>
</vector>
</item>
</layer-list>
</item>
<item>
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="#FFFFFF" />
<corners android:radius="4dp" />
<stroke android:width="1dp" android:color="#E0E0E0" />
</shape>
</item>
<item android:gravity="center">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF9800"
android:pathData="M7,4L5,4L5,6L7,6L7,4ZM19,4L17,4L17,6L19,6L19,4ZM6,5L6,7L4,7L4,5L6,5ZM18,5L18,7L20,7L20,5L18,5ZM4,8L6,8L6,16L4,16L4,8ZM20,8L18,8L18,16L20,16L20,8ZM7,18L5,18L5,20L7,20L7,18ZM19,18L17,18L17,20L19,20L19,18ZM12,8L8,12L12,16L16,12L12,8ZM12,10L14,12L12,14L10,12L12,10Z"/>
</vector>
</item>
</layer-list>
</item>
</selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/surfaceVariant" />
<corners android:radius="12dp" />
<stroke
android:width="1dp"
android:color="@color/primary"
android:alpha="0.3" />
</shape>

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/onSurfaceVariant"
android:pathData="M10,4L12,6L20,6C21.1,6 22,6.9 22,8L22,18C22,19.1 21.1,20 20,20L4,20C2.89,20 2,19.1 2,18L2,6C2,4.89 2.89,4 4,4L10,4ZM10,4L12,6L10,6L10,4ZM11,14L8,14L8,11L6,11L6,14L3,14L3,16L6,16L6,19L8,19L8,16L11,16L11,14Z" />
</vector>

@ -1,3 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:fillColor="#000000" android:pathData="M6,5v14h2V5H6zm5,0v14h2V5h-2zm5,0v14h2V5h-2z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

@ -1,4 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:fillColor="#FFFF00" android:pathData="M6,5h12v14H6V5z"/>
<path android:fillColor="#000000" android:pathData="M8,7h8v10H8V7z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -1,4 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:fillColor="#000000" android:pathData="M6,5v14h2V5H6zm5,0v14h2V5h-2zm5,0v14h2V5h-2z"/>
<path android:fillColor="#FF0000" android:pathData="M12,3v2h8V3H12zm0,18h8v-2h-8v2z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -1,3 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:fillColor="#000000" android:pathData="M10,5v14l-5-7l5-7z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -1,3 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:fillColor="#000000" android:pathData="M6,5h12v2H6V5zm0,10h12v2H6V15z"/>
</vector>

@ -33,7 +33,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/surface"
android:padding="8dp"
android:padding="1dp"
android:elevation="4dp"
android:gravity="center_vertical">
@ -43,7 +43,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="left|center_vertical"
android:layout_marginRight="8dip"
android:layout_marginRight="4dip"
android:textAppearance="@style/TextAppearanceSecondaryItem" />
<ImageView
@ -59,67 +59,62 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="2dip"
android:layout_marginRight="8dip"
android:layout_marginRight="4dip"
android:textAppearance="@style/TextAppearanceSecondaryItem" />
<ImageButton
android:id="@+id/btn_undo"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="28dp"
android:layout_height="28dp"
android:layout_gravity="center"
android:background="@android:color/transparent"
android:padding="8dp"
android:padding="3dp"
android:contentDescription="@string/menu_undo"
android:src="@drawable/ic_undo"
android:tint="@color/onSurface"
android:alpha="0.8" />
<ImageButton
android:id="@+id/btn_redo"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="28dp"
android:layout_height="28dp"
android:layout_gravity="center"
android:layout_marginLeft="8dp"
android:layout_marginLeft="4dp"
android:background="@android:color/transparent"
android:padding="8dp"
android:padding="3dp"
android:contentDescription="@string/menu_redo"
android:src="@drawable/ic_redo"
android:tint="@color/onSurface"
android:alpha="0.8" />
<ImageButton
android:id="@+id/btn_set_bg_color"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="28dp"
android:layout_height="28dp"
android:layout_gravity="center"
android:layout_marginLeft="8dp"
android:background="@android:color/transparent"
android:padding="8dp"
android:layout_marginLeft="4dp"
android:background="@drawable/bg_btn_set_color"
android:padding="3dp"
android:contentDescription="设置背景颜色"
android:src="@drawable/ic_format_color_fill"
android:tint="@color/primary" />
android:alpha="0.8" />
<ImageButton
android:id="@+id/add_img_btn"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="28dp"
android:layout_height="28dp"
android:layout_gravity="center"
android:layout_marginLeft="8dp"
android:background="@android:color/transparent"
android:padding="8dp"
android:layout_marginLeft="4dp"
android:background="@drawable/bg_btn_insert_image"
android:padding="3dp"
android:contentDescription="@string/menu_insert_image"
android:src="@android:drawable/ic_menu_camera"
android:tint="@color/onSurface"
android:alpha="0.8" />
<ImageButton
android:id="@+id/extract_img_btn"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="28dp"
android:layout_height="28dp"
android:layout_gravity="center"
android:layout_marginLeft="8dp"
android:layout_marginRight="4dp"
android:background="@android:color/transparent"
android:padding="8dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="1dp"
android:background="@drawable/bn_btn_extract_image"
android:padding="3dp"
android:contentDescription="提取图片内容"
android:src="@android:drawable/ic_menu_camera"
android:tint="@color/onSurface"
android:alpha="0.8" />
</LinearLayout>
@ -129,13 +124,13 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp"
android:padding="12dp"
android:background="@color/surface">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="4dp">
android:padding="2dp">
<EditText
android:id="@+id/et_title"
android:layout_width="0dip"
@ -143,10 +138,10 @@
android:layout_weight="1"
android:hint="@string/note_title_placeholder"
android:maxLength="50"
android:textSize="20sp"
android:textSize="18sp"
android:textColor="@color/onSurface"
android:background="@null"
android:padding="8dp"
android:padding="6dp"
android:singleLine="true"
android:fontFamily="sans-serif-medium" />
<TextView
@ -154,10 +149,10 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0/50"
android:textSize="14sp"
android:textSize="12sp"
android:textColor="@color/onSurface"
android:alpha="0.6"
android:layout_marginLeft="8dp"
android:layout_marginLeft="6dp"
android:gravity="center_vertical" />
</LinearLayout>
<View
@ -172,73 +167,68 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="8dp"
android:padding="2dp"
android:background="@color/surface"
android:elevation="2dp">
<!-- 加粗按钮 -->
<ImageButton
android:id="@+id/btn_bold"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_gravity="center"
android:background="@android:color/transparent"
android:padding="12dp"
android:background="@drawable/ic_format_color_bold"
android:padding="3dp"
android:contentDescription="@string/menu_bold"
android:src="@drawable/ic_format_bold"
android:tint="@color/onSurface" />
android:alpha="0.8" />
<!-- 斜体按钮 -->
<ImageButton
android:id="@+id/btn_italic"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_gravity="center"
android:layout_marginLeft="8dp"
android:background="@android:color/transparent"
android:padding="12dp"
android:layout_marginLeft="4dp"
android:background="@drawable/ic_format_italic"
android:padding="3dp"
android:contentDescription="@string/menu_italic"
android:src="@drawable/ic_format_italic"
android:tint="@color/onSurface" />
android:alpha="0.8" />
<!-- 下划线按钮 -->
<ImageButton
android:id="@+id/btn_underline"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_gravity="center"
android:layout_marginLeft="8dp"
android:background="@android:color/transparent"
android:padding="12dp"
android:layout_marginLeft="4dp"
android:background="@drawable/ic_format_underlined"
android:padding="3dp"
android:contentDescription="@string/menu_underline"
android:src="@drawable/ic_format_underlined"
android:tint="@color/onSurface" />
android:alpha="0.8" />
<!-- 文本颜色按钮 -->
<ImageButton
android:id="@+id/btn_text_color"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_gravity="center"
android:layout_marginLeft="8dp"
android:background="@android:color/transparent"
android:padding="12dp"
android:layout_marginLeft="4dp"
android:background="@drawable/ic_format_color_text"
android:padding="3dp"
android:contentDescription="@string/menu_text_color"
android:src="@drawable/ic_format_color_text"
android:tint="@color/onSurface" />
android:alpha="0.8" />
<!-- 高亮按钮 -->
<ImageButton
android:id="@+id/btn_highlight"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_gravity="center"
android:layout_marginLeft="8dp"
android:background="@android:color/transparent"
android:padding="12dp"
android:layout_marginLeft="4dp"
android:background="@drawable/ic_format_color_fill"
android:padding="3dp"
android:contentDescription="@string/menu_highlight"
android:src="@drawable/ic_format_color_fill"
android:tint="@color/onSurface" />
android:alpha="0.8" />
</LinearLayout>
<LinearLayout

@ -15,175 +15,221 @@
limitations under the License.
-->
<RelativeLayout
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/note_list_root"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background"
android:fitsSystemWindows="true">
<LinearLayout
android:id="@+id/main_content"
<!-- 主内容区域 -->
<RelativeLayout
android:id="@+id/main_content_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_above="@+id/view_switcher">
android:layout_height="match_parent">
<!-- 搜索栏 -->
<LinearLayout
android:id="@+id/search_bar"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_above="@+id/view_switcher">
<!-- 顶部栏 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingHorizontal="16dp"
android:paddingTop="16dp"
android:paddingBottom="8dp">
<Button
android:id="@+id/btn_sidebar_toggle"
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@android:drawable/ic_menu_sort_by_size"
android:layout_marginRight="16dp"
android:elevation="4dp" />
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="小米便签"
android:textSize="20sp"
android:textColor="@color/onSurface"
android:fontFamily="sans-serif-medium" />
</LinearLayout>
<!-- 搜索栏 -->
<LinearLayout
android:id="@+id/search_bar"
android:layout_width="match_parent"
android:layout_height="54dp"
android:layout_margin="16dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:background="@color/surface"
android:elevation="4dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="16dp"
android:radius="12dp">
<ImageView
android:id="@+id/search_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginRight="12dp"
android:alpha="0.6"
android:src="@android:drawable/ic_menu_search"
android:tint="@color/onSurface" />
<EditText
android:id="@+id/search_edit_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:alpha="0.6"
android:background="@null"
android:hint="搜索便签..."
android:imeOptions="actionSearch"
android:inputType="text"
android:singleLine="true"
android:textColor="@color/onSurface"
android:textColorHint="@color/onSurface"
android:textSize="16sp" />
<ImageView
android:id="@+id/search_clear"
android:layout_width="24dp"
android:layout_height="24dp"
android:alpha="0.6"
android:src="@android:drawable/ic_menu_close_clear_cancel"
android:tint="@color/onSurface"
android:visibility="gone" />
<!-- 标签选择按钮 -->
<ImageView
android:id="@+id/search_tags_button"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="12dp"
android:alpha="0.6"
android:clickable="true"
android:contentDescription="标签"
android:focusable="true"
android:src="@android:drawable/ic_menu_more"
android:tint="@color/onSurface" />
<ImageView
android:id="@+id/search_button"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginLeft="12dp"
android:clickable="true"
android:contentDescription="搜索"
android:focusable="true"
android:src="@android:drawable/ic_menu_search"
android:tint="@color/primary" />
</LinearLayout>
<ListView
android:id="@+id/notes_list"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:cacheColorHint="@null"
android:listSelector="@android:color/transparent"
android:divider="@null"
android:dividerHeight="8dp"
android:padding="8dp"
android:fadingEdge="@null" />
</LinearLayout>
<!-- 界面切换栏 -->
<LinearLayout
android:id="@+id/view_switcher"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/surface"
android:padding="16dp"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_margin="16dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="8dp"
android:elevation="4dp"
android:radius="12dp">
<ImageView
android:id="@+id/search_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@android:drawable/ic_menu_search"
android:tint="@color/onSurface"
android:alpha="0.6"
android:layout_marginRight="12dp" />
<EditText
android:id="@+id/search_edit_text"
android:gravity="center_horizontal"
android:padding="8dp"
android:layout_alignParentBottom="true"
android:elevation="8dp">
<TextView
android:id="@+id/notes_tab"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@null"
android:hint="搜索便签..."
android:layout_weight="1"
android:text="便签"
android:textSize="16sp"
android:singleLine="true"
android:imeOptions="actionSearch"
android:inputType="text"
android:textColorHint="@color/onSurface"
android:alpha="0.6"
android:textColor="@color/onSurface" />
<ImageView
android:id="@+id/search_clear"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@android:drawable/ic_menu_close_clear_cancel"
android:tint="@color/onSurface"
android:alpha="0.6"
android:visibility="gone" />
<!-- 标签选择按钮 -->
<ImageView
android:id="@+id/search_tags_button"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@android:drawable/ic_menu_more"
android:tint="@color/onSurface"
android:alpha="0.6"
android:layout_marginLeft="12dp"
android:textColor="@color/primary"
android:gravity="center"
android:padding="16dp"
android:background="@drawable/selected_tab_bg"
android:clickable="true"
android:focusable="true"
android:contentDescription="标签" />
<ImageView
android:id="@+id/search_button"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@android:drawable/ic_menu_search"
android:tint="@color/primary"
android:layout_marginLeft="12dp"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/todo_tab"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="代办"
android:textSize="16sp"
android:textColor="@color/onSurface"
android:alpha="0.6"
android:gravity="center"
android:padding="16dp"
android:background="@drawable/unselected_tab_bg"
android:clickable="true"
android:focusable="true"
android:contentDescription="搜索" />
android:fontFamily="sans-serif-medium" />
</LinearLayout>
<ListView
android:id="@+id/notes_list"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:cacheColorHint="@null"
android:listSelector="@android:color/transparent"
android:divider="@null"
android:dividerHeight="8dp"
android:padding="8dp"
android:fadingEdge="@null" />
<!-- 圆形加号按钮 -->
<Button
android:id="@+id/btn_add_note"
android:background="@drawable/ic_add_circle"
android:layout_width="64dp"
android:layout_height="64dp"
android:focusable="false"
android:layout_alignParentRight="true"
android:layout_above="@+id/view_switcher"
android:layout_marginRight="24dp"
android:layout_marginBottom="24dp"
android:elevation="8dp"
android:stateListAnimator="@anim/btn_add_note_elevation" />
</LinearLayout>
<!-- 界面切换栏 -->
<LinearLayout
android:id="@+id/view_switcher"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/surface"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:padding="8dp"
android:layout_alignParentBottom="true"
android:elevation="8dp">
<TextView
android:id="@+id/notes_tab"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="便签"
android:textSize="16sp"
<!-- 隐私空间返回按钮 -->
<Button
android:id="@+id/btn_privacy_back"
android:layout_width="120dp"
android:layout_height="48dp"
android:layout_alignParentLeft="true"
android:layout_above="@+id/view_switcher"
android:layout_marginLeft="24dp"
android:layout_marginBottom="24dp"
android:background="@color/surface"
android:elevation="4dp"
android:radius="24dp"
android:text="返回主界面"
android:textColor="@color/primary"
android:gravity="center"
android:padding="16dp"
android:background="@drawable/selected_tab_bg"
android:clickable="true"
android:focusable="true"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/todo_tab"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="代办"
android:textSize="16sp"
android:textColor="@color/onSurface"
android:alpha="0.6"
android:gravity="center"
android:padding="16dp"
android:background="@drawable/unselected_tab_bg"
android:clickable="true"
android:focusable="true"
android:visibility="gone"
android:fontFamily="sans-serif-medium" />
</LinearLayout>
<!-- 圆形加号按钮 -->
<Button
android:id="@+id/btn_add_note"
android:background="@drawable/ic_add_circle"
android:layout_width="64dp"
android:layout_height="64dp"
android:focusable="false"
android:layout_alignParentRight="true"
android:layout_above="@+id/view_switcher"
android:layout_marginRight="24dp"
android:layout_marginBottom="24dp"
android:elevation="8dp"
android:stateListAnimator="@anim/btn_add_note_elevation" />
<!-- 隐私空间返回按钮 -->
<Button
android:id="@+id/btn_privacy_back"
android:layout_width="120dp"
android:layout_height="48dp"
android:layout_alignParentLeft="true"
android:layout_above="@+id/view_switcher"
android:layout_marginLeft="24dp"
android:layout_marginBottom="24dp"
android:background="@color/surface"
android:elevation="4dp"
android:radius="24dp"
android:text="返回主界面"
android:textColor="@color/primary"
android:textSize="16sp"
android:gravity="center"
android:visibility="gone"
android:fontFamily="sans-serif-medium" />
</RelativeLayout>
</RelativeLayout>
<!-- 侧边栏 -->
<include
layout="@layout/sidebar_layout"
android:layout_width="280dp"
android:layout_height="match_parent"
android:layout_gravity="start" />
</androidx.drawerlayout.widget.DrawerLayout>

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingHorizontal="16dp"
android:paddingVertical="12dp">
<TextView
android:id="@+id/item_title"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@color/onSurface"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/item_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="@color/primary"
android:paddingLeft="8dp"
android:paddingRight="4dp"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:background="@drawable/count_badge"
android:visibility="gone" />
</LinearLayout>

@ -0,0 +1,155 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="280dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/surface"
android:elevation="8dp">
<!-- 侧边栏头部 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="56dp"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingHorizontal="16dp"
android:background="@color/primary">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="便签导航"
android:textSize="18sp"
android:textColor="@color/onPrimary"
android:fontFamily="sans-serif-medium" />
</LinearLayout>
<!-- 侧边栏内容区域 -->
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- 全部 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="16dp">
<LinearLayout
android:id="@+id/all_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/surface"
android:paddingHorizontal="16dp"
android:paddingVertical="12dp"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:id="@+id/all_title"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="全部"
android:textSize="16sp"
android:textColor="@color/onSurface"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/all_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="@color/primary"
android:paddingLeft="8dp"
android:paddingRight="4dp"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:background="@drawable/count_badge"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
<!-- 未分类 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/uncategorized_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/surface"
android:paddingHorizontal="16dp"
android:paddingVertical="12dp"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:id="@+id/uncategorized_title"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="未分类"
android:textSize="16sp"
android:textColor="@color/onSurface"
android:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/uncategorized_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="@color/primary"
android:paddingLeft="8dp"
android:paddingRight="4dp"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:background="@drawable/count_badge"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
<!-- 我的文件夹标题 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="48dp"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingHorizontal="16dp"
android:paddingTop="8dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我的文件夹"
android:textSize="14sp"
android:textColor="@color/onSurfaceVariant"
android:fontFamily="sans-serif-medium" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_folder_add"
android:layout_marginStart="8dp"
android:id="@+id/add_folder_button" />
</LinearLayout>
<!-- 用户文件夹 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/user_folder_list"
android:layout_width="match_parent"
android:layout_height="508dp"
android:divider="@null"
android:dividerHeight="0dp" />
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>

@ -50,4 +50,6 @@
<color name="alert_text">#FF9800</color>
<color name="divider_color">#E0E0E0</color>
<color name="disabled_color">#BDBDBD</color>
<color name="surfaceVariant">#E7E0EC</color>
<color name="onSurfaceVariant">#49454F</color>
</resources>

@ -242,6 +242,7 @@
<string name="error_translate_failed">Translation failed. Please check your network connection and try again.</string>
<string name="error_failed_to_load_image">Failed to load image</string>
<string name="dialog_title_extracted_content">Extracted Content</string>
<string name="dialog_message_extracting_content">正在提取内容...</string>
<string name="dialog_button_insert">Insert</string>
<string name="dialog_button_cancel">Cancel</string>
<string name="info_content_inserted">Content inserted successfully</string>

Loading…
Cancel
Save