From 92ce5196a8dce71a9933ee149674e9ead7850f77 Mon Sep 17 00:00:00 2001 From: SheYu <2893251844@qq.com> Date: Thu, 21 Dec 2023 00:56:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9NoteListActivity=20=E7=9A=84=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/~$便签的代码标注.docx | Bin 0 -> 162 bytes doc/小米便签的代码标注.docx | Bin 0 -> 17037 bytes .../java/net/micode/notes/data/Contact.java | 9 +- .../micode/notes/ui/NotesListActivity.java | 192 +++++++++++++----- .../net/micode/notes/ui/NotesListAdapter.java | 9 +- .../net/micode/notes/ui/NotesListItem.java | 9 +- .../notes/widget/NoteWidgetProvider.java | 1 + 7 files changed, 165 insertions(+), 55 deletions(-) create mode 100644 doc/~$便签的代码标注.docx create mode 100644 doc/小米便签的代码标注.docx diff --git a/doc/~$便签的代码标注.docx b/doc/~$便签的代码标注.docx new file mode 100644 index 0000000000000000000000000000000000000000..3bd99d5799d54275bbd40015dfd0fad3abd8c22a GIT binary patch literal 162 zcmZPz*FE|0@(Tvi01HDngDwMaQ->b|!*`(8ZF|F%kDOy*=ygIhhY8AsiA%Ne9|$+T c#kj2rqW-`7**74*8C2cm1xt*7)uWmL02_T81poj5 literal 0 HcmV?d00001 diff --git a/doc/小米便签的代码标注.docx b/doc/小米便签的代码标注.docx new file mode 100644 index 0000000000000000000000000000000000000000..12a48a7db80e01ba35a7c319fdb7c1191d8fdb93 GIT binary patch literal 17037 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 TSvLTH`1a@fHbHKAf4%#Ey7#+y literal 0 HcmV?d00001 diff --git a/src/Notes-master1/app/src/main/java/net/micode/notes/data/Contact.java b/src/Notes-master1/app/src/main/java/net/micode/notes/data/Contact.java index d97ac5d..1400dee 100644 --- a/src/Notes-master1/app/src/main/java/net/micode/notes/data/Contact.java +++ b/src/Notes-master1/app/src/main/java/net/micode/notes/data/Contact.java @@ -24,7 +24,14 @@ import android.telephony.PhoneNumberUtils; import android.util.Log; import java.util.HashMap; - +/** + * @Package: net.micode.notes.data + * @ClassName: Contact + * @Description: java类作用描述 + * @Author: WUSHUXIAN + * @CreateDate: 2023/12/20 23:26 + * @Version: 1.0 + */ public class Contact { private static HashMap sContactCache; private static final String TAG = "Contact"; diff --git a/src/Notes-master1/app/src/main/java/net/micode/notes/ui/NotesListActivity.java b/src/Notes-master1/app/src/main/java/net/micode/notes/ui/NotesListActivity.java index 2c99d72..6a00ab8 100644 --- a/src/Notes-master1/app/src/main/java/net/micode/notes/ui/NotesListActivity.java +++ b/src/Notes-master1/app/src/main/java/net/micode/notes/ui/NotesListActivity.java @@ -62,12 +62,16 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.HashSet; -//主界面,一进入就是这个界面 /** - * @author k - * + * @Package: net.micode.notes.ui + * @ClassName: NotesListActivity + * @Description: + * @Author: WUSHUXIAN + * @CreateDate: 2023/12/20 23:02 + * @Version: 1.0 */ -public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener { //没有用特定的标签加注释。。。感觉没有什么用 +public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener { + private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0; private static final int FOLDER_LIST_QUERY_TOKEN = 1; @@ -78,7 +82,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt private static final int MENU_FOLDER_CHANGE_NAME = 2; - private static final String PREFERENCE_ADD_INTRODUCTION = "net.micode.notes.introduction"; //单行超过80个字符 + private static final String PREFERENCE_ADD_INTRODUCTION = "net.micode.notes.introduction"; private enum ListEditState { NOTE_LIST, SUB_FOLDER, CALL_RECORD_FOLDER @@ -123,51 +127,68 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt private final static int REQUEST_CODE_OPEN_NODE = 102; private final static int REQUEST_CODE_NEW_NODE = 103; - @Override - // 创建类 - protected void onCreate(final Bundle savedInstanceState) { //需要是final类型 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 - // final类不能被继承,没有子类,final类中的方法默认是final的。 - //final方法不能被子类的方法覆盖,但可以被继承。 - //final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 - //final不能用于修饰构造方法。 + /** + * @method onCreate + * @description 需要是final类型 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 + * final类不能被继承,没有子类,final类中的方法默认是final的。 + * final方法不能被子类的方法覆盖,但可以被继承。 + * final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 + * final不能用于修饰构造方法。 + * @date: 2023/12/20 23:13 + * @author: WUSHUXIAN + * @param void + * @return void + */ + protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 调用父类的onCreate函数 setContentView(R.layout.note_list); initResources(); - - /** - * Insert an introduction when user firstly use this application - */ setAppInfoFromRawRes(); } @Override - // 返回一些子模块完成的数据交给主Activity处理 + /** + * @method onActivityResult + * @description: 返回一些子模块完成的数据交给主Activity处理 + * 参数: + * requestCode: + * resultCode: + * data; + * @date: 2023/12/20 23:26 + * @author: WUSHUXIAN + * @param void + * @return void + */ protected void onActivityResult(int requestCode, int resultCode, Intent data) { // 结果值 和 要求值 符合要求 if (resultCode == RESULT_OK && (requestCode == REQUEST_CODE_OPEN_NODE || requestCode == REQUEST_CODE_NEW_NODE)) { mNotesListAdapter.changeCursor(null); } else { - super.onActivityResult(requestCode, resultCode, data); - // 调用 Activity 的onActivityResult() + super.onActivityResult(requestCode, resultCode, data);// 调用 Activity 的onActivityResult() } } - + /** + * @method setAppInfoFromRawRes + * @description: + * @date: 2023/12/20 23:24 + * @author: WUSHUXIAN + * @param + * @return + */ private void setAppInfoFromRawRes() { - // Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。 - SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);// Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。 if (!sp.getBoolean(PREFERENCE_ADD_INTRODUCTION, false)) { StringBuilder sb = new StringBuilder(); InputStream in = null; try { - // 把资源文件放到应用程序的/raw/raw下,那么就可以在应用中使用getResources获取资源后, - // 以openRawResource方法(不带后缀的资源文件名)打开这个文件。 + // 把资源文件放到应用程序的/raw/raw下,那么就可以在应用中使用getResources获取资源后,以openRawResource方法(不带后缀的资源文件名)打开这个文件。 in = getResources().openRawResource(R.raw.introduction); if (in != null) { InputStreamReader isr = new InputStreamReader(in); BufferedReader br = new BufferedReader(isr); - char [] buf = new char[1024]; // 自行定义的数值,使用者不知道有什么意义 + char [] buf = new char[1024]; int len = 0; while ((len = br.read(buf)) > 0) { sb.append(buf, 0, len); @@ -210,8 +231,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt super.onStart(); startAsyncNotesListQuery(); } - - // 初始化资源 + /** + * @method initResources + * @description 初始化资源 + * @date: 2023/12/20 23:09 + * @author: WUSHUXIAN + * @param + * @return + */ private void initResources() { mContentResolver = this.getContentResolver(); // 获取应用程序的数据,得到类似数据表的东西 mBackgroundQueryHandler = new BackgroundQueryHandler(this.getContentResolver()); @@ -236,7 +263,15 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt mModeCallBack = new ModeCallback(); } - // 继承自ListView.MultiChoiceModeListener 和 OnMenuItemClickListener + // + /** + * @Package: net.micode.notes.ui + * @ClassName: ModeCallback + * @Description: 继承自ListView.MultiChoiceModeListener 和 OnMenuItemClickListener + * @Author: WUSHUXIAN + * @CreateDate: 2023/12/20 23:37 + * @Version: 1.0 + */ private class ModeCallback implements ListView.MultiChoiceModeListener, OnMenuItemClickListener { private DropdownMenu mDropDownMenu; private ActionMode mActionMode; @@ -274,8 +309,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt }); return true; } - - // 更新菜单 + /** + * @method updateMenu + * @description 更新菜单 + * @date: 2023/12/16 23:36 + * @author: WUSHUXIAN + * @param + * @return + */ private void updateMenu() { int selectedCount = mNotesListAdapter.getSelectedCount(); // Update dropdown menu @@ -318,7 +359,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt mNotesListAdapter.setCheckedItem(position, checked); updateMenu(); } - + /** + * @method onMenuItemClick + * @description: + * @date: 2023/12/20 23:39 + * @author: WUSHUXIAN + * @param + * @return + */ public boolean onMenuItemClick(MenuItem item) { if (mNotesListAdapter.getSelectedCount() == 0) { Toast.makeText(NotesListActivity.this, getString(R.string.menu_select_none), @@ -350,9 +398,8 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt return true; } } - + //接口的实现 private class NewNoteOnTouchListener implements OnTouchListener { - public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { @@ -412,22 +459,44 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } }; - + /** + * @method startAsyncNotesListQuery + * @description: 启动异步Notes列表查询 + * @date: 2023/12/20 23:45 + * @author: WUSHUXIAN + * @param + * @return + */ private void startAsyncNotesListQuery() { - String selection = (mCurrentFolderId == Notes.ID_ROOT_FOLDER) ? ROOT_FOLDER_SELECTION - : NORMAL_SELECTION; + String selection = (mCurrentFolderId == Notes.ID_ROOT_FOLDER) ? ROOT_FOLDER_SELECTION : NORMAL_SELECTION; mBackgroundQueryHandler.startQuery(FOLDER_NOTE_LIST_QUERY_TOKEN, null, - Notes.CONTENT_NOTE_URI, NoteItemData.PROJECTION, selection, new String[] { - String.valueOf(mCurrentFolderId) - }, NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC"); + Notes.CONTENT_NOTE_URI, NoteItemData.PROJECTION, selection, new String[] {String.valueOf(mCurrentFolderId)}, + NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC"); } - + /** + * @Package: net.micode.notes.ui + * @ClassName: BackgroundQueryHandler + * @Description: 对AsyncQueryHandler的拓展,背景查询处理 + * @Author: WUSHUXIAN + * @CreateDate: 2023/12/21 0:01 + * @Version: 1.0 + */ private final class BackgroundQueryHandler extends AsyncQueryHandler { public BackgroundQueryHandler(ContentResolver contentResolver) { super(contentResolver); } @Override + /** + * @method onQueryComplete + * @description: 在异步查询完成时调用。 + * @date: 2023/12/20 23:56 + * @author: WUSHUXIAN + * @param token 标识查询的令牌 + * @param cookie 传入的cookie对象 + * @param cursor 保存查询结果的光标 + * @return void + */ protected void onQueryComplete(int token, Object cookie, Cursor cursor) { switch (token) { case FOLDER_NOTE_LIST_QUERY_TOKEN: @@ -473,22 +542,29 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mCurrentFolderId); this.startActivityForResult(intent, REQUEST_CODE_NEW_NODE); } - + /** + * @method batchDelete + * @description: 删除便签操作 + * @date: 2023/12/21 0:14 + * @author: WUSHUXIAN + * @param + * @return void + */ @SuppressLint("StaticFieldLeak") private void batchDelete() { new AsyncTask>() { protected HashSet doInBackground(Void... unused) { HashSet widgets = mNotesListAdapter.getSelectedWidget(); + //如果没有同步,直接删除 if (!isSyncMode()) { - // if not synced, delete notes directly if (DataUtils.batchDeleteNotes(mContentResolver, mNotesListAdapter .getSelectedItemIds())) { } else { Log.e(TAG, "Delete notes error, should not happens"); } - } else { - // in sync mode, we'll move the deleted note into the trash - // folder + } + //已同步,将删除的便签移到垃圾桶 + else { if (!DataUtils.batchMoveToFolder(mContentResolver, mNotesListAdapter .getSelectedItemIds(), Notes.ID_TRASH_FOLER)) { Log.e(TAG, "Move notes to trash folder error, should not happens"); @@ -511,7 +587,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt } }.execute(); } - + /** + * @method deleteFolder + * @description: 删除文件夹 + * @date: 2023/12/21 0:32 + * @author: WUSHUXIAN + * @param folderId 文件标识 + * @return void + */ private void deleteFolder(long folderId) { if (folderId == Notes.ID_ROOT_FOLDER) { Log.e(TAG, "Wrong folder id, should not happen " + folderId); @@ -580,7 +663,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); } - + /** + * @method showCreateOrModifyFolderDialog + * @description: 创建或者修改文件夹时显示对话框 + * @date: 2023/12/21 0:39 + * @author: WUSHUXIAN + * @param create + * @return void + */ private void showCreateOrModifyFolderDialog(final boolean create) { final AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text, null); @@ -638,13 +728,10 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt dialog.dismiss(); } }); - + //如果便签名是空的,则禁用确认按钮 if (TextUtils.isEmpty(etName.getText())) { positive.setEnabled(false); } - /** - * When the name edit text is null, disable the positive button - */ etName.addTextChangedListener(new TextWatcher() { public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub @@ -671,7 +758,8 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt * 按返回键时根据情况更改类中的数据 */ @Override - public void onBackPressed() { switch (mState) { + public void onBackPressed() { + switch (mState) { case SUB_FOLDER: mCurrentFolderId = Notes.ID_ROOT_FOLDER; mState = ListEditState.NOTE_LIST; diff --git a/src/Notes-master1/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java b/src/Notes-master1/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java index 51c9cb9..ba80e67 100644 --- a/src/Notes-master1/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java +++ b/src/Notes-master1/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java @@ -30,7 +30,14 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; - +/** + * @Package: net.micode.notes.ui + * @ClassName: NotesListAdapter + * @Description: java类作用描述 + * @Author: WUSHUXIAN + * @CreateDate: 2023/12/20 23:04 + * @Version: 1.0 + */ public class NotesListAdapter extends CursorAdapter { private static final String TAG = "NotesListAdapter"; private Context mContext; diff --git a/src/Notes-master1/app/src/main/java/net/micode/notes/ui/NotesListItem.java b/src/Notes-master1/app/src/main/java/net/micode/notes/ui/NotesListItem.java index 1221e80..25dc2e4 100644 --- a/src/Notes-master1/app/src/main/java/net/micode/notes/ui/NotesListItem.java +++ b/src/Notes-master1/app/src/main/java/net/micode/notes/ui/NotesListItem.java @@ -29,7 +29,14 @@ import net.micode.notes.data.Notes; import net.micode.notes.tool.DataUtils; import net.micode.notes.tool.ResourceParser.NoteItemBgResources; - +/** + * @Package: net.micode.notes.ui + * @ClassName: NotesListItem + * @Description: java类作用描述 + * @Author: WUSHUXIAN + * @CreateDate: 2023/12/20 23:09 + * @Version: 1.0 + */ public class NotesListItem extends LinearLayout { private ImageView mAlert; private TextView mTitle; diff --git a/src/Notes-master1/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java b/src/Notes-master1/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java index ec6f819..9ca2603 100644 --- a/src/Notes-master1/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java +++ b/src/Notes-master1/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java @@ -39,6 +39,7 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider { NoteColumns.SNIPPET }; + public static final int COLUMN_ID = 0; public static final int COLUMN_BG_COLOR_ID = 1; public static final int COLUMN_SNIPPET = 2;