diff --git a/.gitignore b/.gitignore
index e3879fd..548e911 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
/src/.idea/
/src/Notes-master1/
/.idea/
+/MiNotes.iml/
\ No newline at end of file
diff --git a/MiNotes.iml b/MiNotes.iml
index a0a9b8c..81b0882 100644
--- a/MiNotes.iml
+++ b/MiNotes.iml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/doc/小米便签泛读、标注和维护报告文档.docx b/doc/小米便签泛读、标注和维护报告文档.docx
index 73adb30..efb0d8f 100644
Binary files a/doc/小米便签泛读、标注和维护报告文档.docx and b/doc/小米便签泛读、标注和维护报告文档.docx differ
diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index b6036d7..952d7c5 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -4,18 +4,25 @@
android:versionCode="1"
android:versionName="0.1">
+
-
-
-
-
-
+
+
+
+
+
-
+
+
+
+
+
");
- if (Flag1 != -1 && Flag2 != -1) {
- stringBuffer = stringBuffer.replace(Flag1, Flag2+1, "");
- }
- } while (Flag1 != -1 && Flag2 != -1);
+ private String textChange(String oriText) {
+ StringBuilder stringBuilder = new StringBuilder(oriText);
- do {//不计入换行字符
- Flag1 = stringBuffer.indexOf("\n");
+ // 移除所有<>
+ removeAngleBrackets(stringBuilder);
- if (Flag1 != -1){
- stringBuffer = stringBuffer.replace(Flag1, Flag1+1, "");
+ // 移除换行符和空格
+ for (int i = 0; i < stringBuilder.length(); i++) {
+ char c = stringBuilder.charAt(i);
+ if (c == '\n' || c == ' ') {
+ stringBuilder.deleteCharAt(i);
+ i--;
}
- } while (Flag1 != -1);
- do {//不计入空格字符
- Flag1 = stringBuffer.indexOf(" ");
+ }
- if (Flag1 != -1) {
- stringBuffer = stringBuffer.replace(Flag1, Flag1+1, "");
- }
- } while (Flag1 != -1);
- return stringBuffer.toString();
+ return stringBuilder.toString();
}
+ /**
+ * @method removeAngleBrackets
+ * @description 用以辅助移除<>>
+ * @date: 1/18/2024 7:22 PM
+ * @author: YangYizhe
+ * @param
+ * @return
+ */
+ private void removeAngleBrackets(StringBuilder stringBuilder) {
+ int startIndex = stringBuilder.indexOf("<");
+ int endIndex = stringBuilder.indexOf(">");
+ if (startIndex != -1 && endIndex != -1 && startIndex < endIndex) {
+ stringBuilder.delete(startIndex, endIndex + 1);
+ removeAngleBrackets(stringBuilder);
+ }
+ }
+
+
+
/**
* @method count
@@ -180,7 +433,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @date: 1/3/2024 9:09 AM
* @author: YangYizhe
*/
- private void count() {
+ /**private void count() {
mNoteEditor.addTextChangedListener(new TextWatcher() {
int currentLength = 0;
@Override
@@ -190,7 +443,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
- currentLength = Textchange(mNoteEditor.getText().toString()).length();
+ currentLength = textChange(mNoteEditor.getText().toString()).length();
}
@Override
@@ -198,7 +451,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
mNoteHeaderHolder.textNum.setText("字数:" + currentLength);
}
});
- }
+ }*/
/**
*在 Activity 创建时进行一些初始化工作,包括设置布局、初始化状态和资源等操作
@@ -212,7 +465,8 @@ public class NoteEditActivity extends Activity implements OnClickListener,
return;
}
initResources();
- count();
+ initRichEditor();
+ //count();
}
/**
@@ -332,13 +586,12 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @author: YangYizhe
*/
private void initNoteScreen() {
- mNoteEditor.setTextAppearance(this, TextAppearanceResources
- .getTexAppearanceResource(mFontSizeId));
+ mNoteEditor.setEditorFontSize(30);
if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {
switchToListMode(mWorkingNote.getContent());
} else {
- mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery));
- mNoteEditor.setSelection(mNoteEditor.getText().length());
+ mNoteEditor.setHtml(String.valueOf(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)));
+ //mNoteEditor.setSelection(mText.length());
}
for (Integer id : sBgSelectorSelectionMap.keySet()) {
findViewById(sBgSelectorSelectionMap.get(id)).setVisibility(View.GONE);
@@ -446,7 +699,18 @@ public class NoteEditActivity extends Activity implements OnClickListener,
mNoteHeaderHolder.ibSetBgColor = (ImageView) findViewById(R.id.btn_set_bg_color);
mNoteHeaderHolder.textNum = (TextView) findViewById(R.id.text_num);
mNoteHeaderHolder.ibSetBgColor.setOnClickListener(this);
- mNoteEditor = (EditText) findViewById(R.id.note_edit_view);
+ mNoteEditor = findViewById(R.id.note_edit_view);
+ mNoteEditor.setOnTextChangeListener(new RichEditor.OnTextChangeListener() {
+ @Override
+ public void onTextChange(String text) {
+ mText = text;
+ mNoteLength = textChange(mText).length();
+ mNoteHeaderHolder.tvModified.setText(DateUtils.formatDateTime(NoteEditActivity.this,
+ mWorkingNote.getModifiedDate(), DateUtils.FORMAT_SHOW_DATE
+ | DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_SHOW_TIME
+ | DateUtils.FORMAT_SHOW_YEAR)+"\n字符数:"+mNoteLength);
+ }
+ });
mNoteEditorPanel = findViewById(R.id.sv_note_edit);
mNoteBgColorSelector = findViewById(R.id.note_bg_color_selector);
for (int id : sBgSelectorBtnsMap.keySet()) {
@@ -526,8 +790,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
getWorkingText();
switchToListMode(mWorkingNote.getContent());
} else {
- mNoteEditor.setTextAppearance(this,
- TextAppearanceResources.getTexAppearanceResource(mFontSizeId));
+ mNoteEditor.setEditorFontSize(mFontSizeId);
}
mFontSizeSelector.setVisibility(View.GONE);
}
@@ -822,15 +1085,15 @@ public class NoteEditActivity extends Activity implements OnClickListener,
mEditTextList.setVisibility(View.VISIBLE);
}
/**
- * @method getHighlightQueryResult
+ * @param fullText 完整文本
+ * @param userQuery 用户查询关键词
+ * @return 带有高亮效果的 Spannable 对象
+ * @method getHighlightQueryResult
* @description 获取高亮查询结果
* @date: 12/24/2023 6:18 PM
* @author: YangYizhe
- * @param fullText 完整文本
- * @param userQuery 用户查询关键词
- * @return 带有高亮效果的 Spannable 对象
*/
- private Spannable getHighlightQueryResult(String fullText, String userQuery) {
+ private SpannableString getHighlightQueryResult(String fullText, String userQuery) {
SpannableString spannable = new SpannableString(fullText == null ? "" : fullText);
if (!TextUtils.isEmpty(userQuery)) {
mPattern = Pattern.compile(userQuery);
@@ -914,13 +1177,13 @@ public class NoteEditActivity extends Activity implements OnClickListener,
*/
public void onCheckListModeChanged(int oldMode, int newMode) {
if (newMode == TextNote.MODE_CHECK_LIST) {
- switchToListMode(mNoteEditor.getText().toString());
+ switchToListMode(mText.toString());
} else {
if (!getWorkingText()) {
mWorkingNote.setWorkingText(mWorkingNote.getContent().replace(TAG_UNCHECKED + " ",
""));
}
- mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery));
+ mNoteEditor.setHtml(String.valueOf(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)));
mEditTextList.setVisibility(View.GONE);
mNoteEditor.setVisibility(View.VISIBLE);
}
@@ -961,7 +1224,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
}
mWorkingNote.setWorkingText(sb.toString());//利用编辑好的字符串设置运行便签的内容
} else {// 若不是该模式直接用编辑器中的内容设置运行中标签的内容
- mWorkingNote.setWorkingText(mNoteEditor.getText().toString());
+ mWorkingNote.setWorkingText(mText.toString());
}
return hasChecked;
}
diff --git a/src/main/res/drawable-hdpi/bg.png b/src/main/res/drawable-hdpi/bg.png
new file mode 100644
index 0000000..edd0fa3
Binary files /dev/null and b/src/main/res/drawable-hdpi/bg.png differ
diff --git a/src/main/res/drawable-hdpi/bg_color.png b/src/main/res/drawable-hdpi/bg_color.png
new file mode 100644
index 0000000..c6bd0ef
Binary files /dev/null and b/src/main/res/drawable-hdpi/bg_color.png differ
diff --git a/src/main/res/drawable-hdpi/blockquote.png b/src/main/res/drawable-hdpi/blockquote.png
new file mode 100644
index 0000000..638a40c
Binary files /dev/null and b/src/main/res/drawable-hdpi/blockquote.png differ
diff --git a/src/main/res/drawable-hdpi/bold.png b/src/main/res/drawable-hdpi/bold.png
new file mode 100644
index 0000000..7184e00
Binary files /dev/null and b/src/main/res/drawable-hdpi/bold.png differ
diff --git a/src/main/res/drawable-hdpi/bullets.png b/src/main/res/drawable-hdpi/bullets.png
new file mode 100644
index 0000000..91a0fc0
Binary files /dev/null and b/src/main/res/drawable-hdpi/bullets.png differ
diff --git a/src/main/res/drawable-hdpi/check.png b/src/main/res/drawable-hdpi/check.png
new file mode 100644
index 0000000..59a56ae
Binary files /dev/null and b/src/main/res/drawable-hdpi/check.png differ
diff --git a/src/main/res/drawable-hdpi/h1.png b/src/main/res/drawable-hdpi/h1.png
new file mode 100644
index 0000000..774786c
Binary files /dev/null and b/src/main/res/drawable-hdpi/h1.png differ
diff --git a/src/main/res/drawable-hdpi/h2.png b/src/main/res/drawable-hdpi/h2.png
new file mode 100644
index 0000000..3715b7a
Binary files /dev/null and b/src/main/res/drawable-hdpi/h2.png differ
diff --git a/src/main/res/drawable-hdpi/h3.png b/src/main/res/drawable-hdpi/h3.png
new file mode 100644
index 0000000..4a8915c
Binary files /dev/null and b/src/main/res/drawable-hdpi/h3.png differ
diff --git a/src/main/res/drawable-hdpi/h4.png b/src/main/res/drawable-hdpi/h4.png
new file mode 100644
index 0000000..6781447
Binary files /dev/null and b/src/main/res/drawable-hdpi/h4.png differ
diff --git a/src/main/res/drawable-hdpi/h5.png b/src/main/res/drawable-hdpi/h5.png
new file mode 100644
index 0000000..682a91d
Binary files /dev/null and b/src/main/res/drawable-hdpi/h5.png differ
diff --git a/src/main/res/drawable-hdpi/h6.png b/src/main/res/drawable-hdpi/h6.png
new file mode 100644
index 0000000..dee7ff4
Binary files /dev/null and b/src/main/res/drawable-hdpi/h6.png differ
diff --git a/src/main/res/drawable-hdpi/html_edit.png b/src/main/res/drawable-hdpi/html_edit.png
new file mode 100644
index 0000000..3bbdedb
Binary files /dev/null and b/src/main/res/drawable-hdpi/html_edit.png differ
diff --git a/src/main/res/drawable-hdpi/indent.png b/src/main/res/drawable-hdpi/indent.png
new file mode 100644
index 0000000..77efb71
Binary files /dev/null and b/src/main/res/drawable-hdpi/indent.png differ
diff --git a/src/main/res/drawable-hdpi/insert_image.png b/src/main/res/drawable-hdpi/insert_image.png
new file mode 100644
index 0000000..3c88842
Binary files /dev/null and b/src/main/res/drawable-hdpi/insert_image.png differ
diff --git a/src/main/res/drawable-hdpi/insert_link.png b/src/main/res/drawable-hdpi/insert_link.png
new file mode 100644
index 0000000..e86e04c
Binary files /dev/null and b/src/main/res/drawable-hdpi/insert_link.png differ
diff --git a/src/main/res/drawable-hdpi/italic.png b/src/main/res/drawable-hdpi/italic.png
new file mode 100644
index 0000000..f1a1363
Binary files /dev/null and b/src/main/res/drawable-hdpi/italic.png differ
diff --git a/src/main/res/drawable-hdpi/justify_center.png b/src/main/res/drawable-hdpi/justify_center.png
new file mode 100644
index 0000000..450ce24
Binary files /dev/null and b/src/main/res/drawable-hdpi/justify_center.png differ
diff --git a/src/main/res/drawable-hdpi/justify_left.png b/src/main/res/drawable-hdpi/justify_left.png
new file mode 100644
index 0000000..5125d0e
Binary files /dev/null and b/src/main/res/drawable-hdpi/justify_left.png differ
diff --git a/src/main/res/drawable-hdpi/justify_right.png b/src/main/res/drawable-hdpi/justify_right.png
new file mode 100644
index 0000000..47be92b
Binary files /dev/null and b/src/main/res/drawable-hdpi/justify_right.png differ
diff --git a/src/main/res/drawable-hdpi/music.png b/src/main/res/drawable-hdpi/music.png
new file mode 100644
index 0000000..88ee22d
Binary files /dev/null and b/src/main/res/drawable-hdpi/music.png differ
diff --git a/src/main/res/drawable-hdpi/numbers.png b/src/main/res/drawable-hdpi/numbers.png
new file mode 100644
index 0000000..44d388e
Binary files /dev/null and b/src/main/res/drawable-hdpi/numbers.png differ
diff --git a/src/main/res/drawable-hdpi/outdent.png b/src/main/res/drawable-hdpi/outdent.png
new file mode 100644
index 0000000..3a953ce
Binary files /dev/null and b/src/main/res/drawable-hdpi/outdent.png differ
diff --git a/src/main/res/drawable-hdpi/redo.png b/src/main/res/drawable-hdpi/redo.png
new file mode 100644
index 0000000..eb9bf47
Binary files /dev/null and b/src/main/res/drawable-hdpi/redo.png differ
diff --git a/src/main/res/drawable-hdpi/strikethrough.png b/src/main/res/drawable-hdpi/strikethrough.png
new file mode 100644
index 0000000..7f3e464
Binary files /dev/null and b/src/main/res/drawable-hdpi/strikethrough.png differ
diff --git a/src/main/res/drawable-hdpi/subscript.png b/src/main/res/drawable-hdpi/subscript.png
new file mode 100644
index 0000000..34d4c57
Binary files /dev/null and b/src/main/res/drawable-hdpi/subscript.png differ
diff --git a/src/main/res/drawable-hdpi/superscript.png b/src/main/res/drawable-hdpi/superscript.png
new file mode 100644
index 0000000..0ad3576
Binary files /dev/null and b/src/main/res/drawable-hdpi/superscript.png differ
diff --git a/src/main/res/drawable-hdpi/txt_color.png b/src/main/res/drawable-hdpi/txt_color.png
new file mode 100644
index 0000000..7d0e2eb
Binary files /dev/null and b/src/main/res/drawable-hdpi/txt_color.png differ
diff --git a/src/main/res/drawable-hdpi/underline.png b/src/main/res/drawable-hdpi/underline.png
new file mode 100644
index 0000000..24d55a4
Binary files /dev/null and b/src/main/res/drawable-hdpi/underline.png differ
diff --git a/src/main/res/drawable-hdpi/undo.png b/src/main/res/drawable-hdpi/undo.png
new file mode 100644
index 0000000..9fa457a
Binary files /dev/null and b/src/main/res/drawable-hdpi/undo.png differ
diff --git a/src/main/res/drawable-hdpi/video.png b/src/main/res/drawable-hdpi/video.png
new file mode 100644
index 0000000..bbbc39e
Binary files /dev/null and b/src/main/res/drawable-hdpi/video.png differ
diff --git a/src/main/res/drawable-hdpi/youtube.png b/src/main/res/drawable-hdpi/youtube.png
new file mode 100644
index 0000000..0f35775
Binary files /dev/null and b/src/main/res/drawable-hdpi/youtube.png differ
diff --git a/src/main/res/layout/note_edit.xml b/src/main/res/layout/note_edit.xml
index 59415d7..74fe6cd 100644
--- a/src/main/res/layout/note_edit.xml
+++ b/src/main/res/layout/note_edit.xml
@@ -85,17 +85,17 @@
+ android:scrollbars="none">
-
@@ -395,14 +395,249 @@
+ android:focusable="false"
+ android:src="@drawable/selected"
+ android:visibility="gone" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+