Compare commits

...

96 Commits

Author SHA1 Message Date
eazzy 090e9f385f debug1
10 months ago
eazzy 819c5f9982 debug
10 months ago
eazzy ba5414ea0a PPT modified
10 months ago
eazzy f7bffe328c last commit
10 months ago
SheYu d371378787 代码合并
10 months ago
eazzy e1917b50e2 第一次维护以及报告的合并
10 months ago
eazzy cf6a8efe75 code
10 months ago
eazzy 56ca48d128 readme
10 months ago
eazzy 8a98e547eb code
10 months ago
SheYu 4fcbc12f13 功能维护--增加插入图片的功能
10 months ago
eazzy 9008c4526d 第一次维护以及报告的合并
10 months ago
eazzy 7d0eae3fdf 变更分支结构
10 months ago
eazzy d672783b0f 新的master结构
10 months ago
eazzy 1fe1aa5fd7 code
10 months ago
eazzy 4f0f4e776a readme
10 months ago
eazzy 10f8a7df8e code
10 months ago
eazzy c92b76170f 变更分支结构
10 months ago
eazzy c3482922f6 code
10 months ago
eazzy 19e899a303 readme
10 months ago
SheYu dac20f28b9 功能维护--增加插入图片的功能
10 months ago
eazzy 4d5bea472d 第一次维护以及报告的合并
10 months ago
eazzy ea6e0171c8 变更分支结构
10 months ago
eazzy 241c1ed616 code
10 months ago
eazzy b6a21b2c28 readme
10 months ago
eazzy fda229b7a8 code
10 months ago
SheYu 10f6cabfb9 代码合并
10 months ago
SheYu bdec42262d 最终代码合并
10 months ago
SheYu 61abc87349 冲突合并
10 months ago
eazzy b4fba26bda 第一次维护
10 months ago
eazzy e550189612 报告合并,第一次维护
10 months ago
SheYu c2a6fb6447 Merge remote-tracking branch 'origin/master'
11 months ago
SheYu 7482fe722d 第一次维护--代码合并
11 months ago
SheYu a5ff76fada 第一次维护--代码合并
11 months ago
eazzy c080e6d067 第一次维护以及报告的合并
11 months ago
eazzy 0a2a920cf5 变更分支结构
11 months ago
eazzy ceaef36550 新的master结构
11 months ago
eazzy 5cc19cbd41 code
11 months ago
eazzy ad6bffd649 readme
11 months ago
eazzy 620c0013b8 code
11 months ago
SheYu 4f79375f02 冲突合并
11 months ago
SheYu 067ad80963 功能维护--增加插入图片的功能
11 months ago
eazzy 8a29160380 质量分析报告完善
11 months ago
eazzy 13cc582595 第一次维护以及报告的合并
11 months ago
m6wf5oeyl 4d00a00c7c Delete 'doc/~$便签泛读、标注和维护报告文档.docx'
11 months ago
m6wf5oeyl 8cc4d234ec Delete 'doc/~$便签质量分析报告.docx'
11 months ago
m6wf5oeyl 1934fb7f6d Delete 'doc/~WRL2503.tmp'
11 months ago
eazzy 8760ce8499 质量分析报告完善
11 months ago
eazzy 8be5385837 第一次维护以及报告的合并
11 months ago
eazzy 6e4eccc89a 变更分支结构
11 months ago
eazzy 87b03f490e 新的master结构
11 months ago
eazzy 255e119686 code
11 months ago
eazzy 5c2af2687b readme
11 months ago
eazzy a5cacfb75b 新的master结构
11 months ago
eazzy d83cc703e2 code
11 months ago
SheYu 0a172a86dd 第一次维护--代码合并
11 months ago
eazzy 378a7eb409 第一次维护以及报告的合并
11 months ago
eazzy d1d977a0df 变更分支结构
11 months ago
eazzy 2ad810710d 新的master结构
11 months ago
eazzy 59aa9688bc code
11 months ago
eazzy edfd42d6e4 readme
11 months ago
eazzy b74abcc564 code
11 months ago
SheYu a189434268 冲突合并
11 months ago
SheYu e40102239f 冲突合并
11 months ago
SheYu 6d09dd2d27 功能维护--增加插入图片的功能
11 months ago
SheYu b42acdfeeb 功能维护--增加插入图片的功能
11 months ago
SheYu 96f452036f 功能维护--增加插入图片的功能
11 months ago
eazzy 26cd3da56e 第一次维护以及报告的合并
11 months ago
eazzy 8924f99c48 质量分析报告
11 months ago
SheYu 2532958700 功能维护--增加插入图片的功能
11 months ago
SheYu 45ccee3d86 冲突防止--文件名修改
11 months ago
SheYu 9f21234f50 质量分析--SonarQube分析
11 months ago
eazzy 7f3adc63f6 质量分析报告完善
11 months ago
eazzy d3729a9716 第一次维护以及报告的合并
11 months ago
eazzy 19cc0e54d1 质量分析报告完善
11 months ago
eazzy 1b5f0ad963 质量分析报告完善
11 months ago
m6wf5oeyl 30f2bc4561 Delete 'doc/~$便签泛读、标注和维护报告文档.docx'
11 months ago
m6wf5oeyl 181b7906a6 Delete 'doc/~$便签质量分析报告.docx'
11 months ago
m6wf5oeyl 6eb360298c Delete 'doc/~WRL2503.tmp'
11 months ago
eazzy eb0ff40ec5 第一次维护以及报告的合并
11 months ago
eazzy b54f6ba626 Merge branch 'master' of https://bdgit.educoder.net/m6wf5oeyl/MiNotes
11 months ago
eazzy 895e361ec5 变更分支结构
11 months ago
eazzy f26560fccd 新的master结构
11 months ago
eazzy 6b0b1950aa code
11 months ago
eazzy ba5188748a 手动解决冲突
11 months ago
m6wf5oeyl 943a05872b Merge pull request '代码标注大体完成' (#18) from develop into master
11 months ago
m6wf5oeyl 105feaab89 Merge pull request '代码标注报告' (#17) from develop into master
11 months ago
m6wf5oeyl 84433f145c Merge pull request '补全了ui的注释' (#12) from develop into master
11 months ago
eazzy 48a6d90854 变更分支结构
11 months ago
eazzy 0da2642959 Merge branch 'master' of https://bdgit.educoder.net/m6wf5oeyl/MiNotes
11 months ago
eazzy 37c432b7f4 新的master结构
11 months ago
m6wf5oeyl 4c6915fb90 Merge pull request '代码标注' (#8) from develop into master
11 months ago
eazzy b654a610b3 code
11 months ago
eazzy 99bac00be3 readme
11 months ago
m6wf5oeyl 17a7b9dada Merge pull request 'modified some contents' (#3) from develop into master
12 months ago
m6wf5oeyl 39d9d8d19b Merge pull request '泛读报告提交' (#2) from develop into master
12 months ago
m6wf5oeyl 2d12721ecd Merge pull request '源码提交' (#1) from develop into master
12 months ago

@ -1,56 +1,32 @@
<?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.
-->
<!--- 定义应用程序的名称和版本号 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.micode.notes"
android:versionCode="1"
android:versionName="0.1" >
<!--- 指定应用程序需要支持的最低的 Android SDK 版本 -->
android:versionName="0.1"> <!-- - 指定应用程序需要支持的最低的 Android SDK 版本 -->
<uses-sdk android:minSdkVersion="14" />
<!--- 权限声明 -->
<!--- 写入 SD 卡的权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--- 创建、删除有关快捷方式的权限 -->
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<!--- 访问网络的权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!--- 读取联系人的权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<!--- 账户管理的权限 -->
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<!--- 验证账户的权限 -->
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<!-- - 权限声明 -->
<!-- - 写入 SD 卡的权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!--- 创建、删除有关快捷方式的权限 -->
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> <!--- 访问网络的权限 -->
<uses-permission android:name="android.permission.INTERNET" /> <!--- 读取联系人的权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS" /> <!--- 账户管理的权限 -->
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <!--- 验证账户的权限 -->
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<!--- 开机自动运行权限 -->
<uses-permission android:name="android.permission.USE_CREDENTIALS" /> <!--- 开机自动运行权限 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!--- 存储的读写权限 -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" /> <!-- 网络权限 -->
<uses-permission android:name="android.permission.CAMERA" /> <!-- 相机权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 读取SD卡权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 写SD卡权限 -->
<!--- 应用程序组件声明 -->
<!--- 定义应用程序的图标和名称 -->
<application
android:icon="@drawable/icon_app"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true">
android:icon="@drawable/icon_app_1"
android:label="@string/app_name">
<activity
android:name=".ui.SplashActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
@ -62,35 +38,31 @@
</intent-filter>
</activity>
<!--- 应用程序的入口 NotesListActivity -->
<!-- - 应用程序的入口 NotesListActivity -->
<activity
android:name=".ui.NotesListActivity"
android:exported="true"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTop"
android:theme="@style/NoteTheme"
android:windowSoftInputMode="adjustPan" >
android:windowSoftInputMode="adjustPan">
<!--- 定义该 Activity 为启动器,即默认启动的 Activity -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--- 笔记编辑 Activity -->
<!-- - 笔记编辑 Activity -->
<activity
android:name=".ui.NoteEditActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTop"
android:theme="@style/NoteTheme" >
android:theme="@style/NoteTheme">
<!--- 笔记编辑 Activity 的 Intent Filter用于接收其他应用程序发送过来的消息 -->
<!-- - 笔记编辑 Activity 的 Intent Filter用于接收其他应用程序发送过来的消息 -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<!--- 笔记编辑 Activity 可以处理的 MIME 类型 -->
<!-- - 笔记编辑 Activity 可以处理的 MIME 类型 -->
<data
android:host="com.example.notes.provider"
android:mimeType="vnd.android.cursor.item/text_note"
@ -103,105 +75,88 @@
android:scheme="content" />
</intent-filter>
<!--- 笔记编辑 Activity 的 Intent Filter用于接收其他应用程序发送过来的消息 -->
<!-- - 笔记编辑 Activity 的 Intent Filter用于接收其他应用程序发送过来的消息 -->
<intent-filter>
<action android:name="android.intent.action.INSERT_OR_EDIT" />
<category android:name="android.intent.category.DEFAULT" />
<!--- 笔记编辑 Activity 可以处理的 MIME 类型 -->
<!-- - 笔记编辑 Activity 可以处理的 MIME 类型 -->
<data android:mimeType="vnd.android.cursor.item/text_note" />
<data android:mimeType="vnd.android.cursor.item/call_note" />
</intent-filter>
<!--- 搜索 Intent Filter用于响应搜索请求 -->
<!-- - 搜索 Intent Filter用于响应搜索请求 -->
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<!--- 搜索框的配置信息 -->
<!-- - 搜索框的配置信息 -->
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
<!--- 笔记供应器,用于共享笔记数据 -->
</activity> <!-- - 笔记供应器,用于共享笔记数据 -->
<provider
android:name="net.micode.notes.data.NotesProvider"
android:name=".data.NotesProvider"
android:authorities="micode_notes"
android:multiprocess="true" />
<!--- 笔记小部件,支持两种大小 -->
android:multiprocess="true" /> <!-- - 笔记小部件,支持两种大小 -->
<receiver
android:name=".widget.NoteWidgetProvider_2x"
android:label="@string/app_widget2x2" >
android:label="@string/app_widget2x2">
<!--- 笔记小部件的 Intent Filter用于接收系统广播和小部件更新操作 -->
<!-- - 笔记小部件的 Intent Filter用于接收系统广播和小部件更新操作 -->
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_DELETED" />
<action android:name="android.intent.action.PRIVACY_MODE_CHANGED" />
</intent-filter>
<!--- 笔记小部件的配置信息 -->
<!-- - 笔记小部件的配置信息 -->
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_2x_info" />
</receiver>
<receiver
android:name=".widget.NoteWidgetProvider_4x"
android:label="@string/app_widget4x4" >
android:label="@string/app_widget4x4">
<!--- 笔记小部件的 Intent Filter用于接收系统广播和小部件更新操作 -->
<!-- - 笔记小部件的 Intent Filter用于接收系统广播和小部件更新操作 -->
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_DELETED" />
<action android:name="android.intent.action.PRIVACY_MODE_CHANGED" />
</intent-filter>
<!--- 笔记小部件的配置信息 -->
<!-- - 笔记小部件的配置信息 -->
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_4x_info" />
</receiver>
<!--- 启动时需要初始化闹钟服务 -->
<receiver android:name=".ui.AlarmInitReceiver" >
</receiver> <!-- - 启动时需要初始化闹钟服务 -->
<receiver android:name=".ui.AlarmInitReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<!--- 闹钟服务 -->
</receiver> <!-- - 闹钟服务 -->
<receiver
android:name="net.micode.notes.ui.AlarmReceiver"
android:process=":remote" >
</receiver>
<!--- 闹钟提示 Activity -->
android:name=".ui.AlarmReceiver"
android:process=":remote"></receiver> <!-- - 闹钟提示 Activity -->
<activity
android:name=".ui.AlarmAlertActivity"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:theme="@android:style/Theme.Holo.Wallpaper.NoTitleBar" >
</activity>
<!--- 首选项 Activity -->
android:theme="@android:style/Theme.Holo.Wallpaper.NoTitleBar"></activity> <!-- - 首选项 Activity -->
<activity
android:name="net.micode.notes.ui.NotesPreferenceActivity"
android:name=".ui.NotesPreferenceActivity"
android:label="@string/preferences_title"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Holo.Light" >
</activity>
<!--- GTask 同步服务 -->
android:theme="@android:style/Theme.Holo.Light"></activity> <!-- - GTask 同步服务 -->
<service
android:name="net.micode.notes.gtask.remote.GTaskSyncService"
android:exported="false" >
</service>
<!--- 默认搜索 Activity -->
android:name=".gtask.remote.GTaskSyncService"
android:exported="false"></service> <!-- - 默认搜索 Activity -->
<meta-data
android:name="android.app.default_searchable"
android:value=".ui.NoteEditActivity" />
</application>
</manifest>
</manifest>

@ -19,8 +19,6 @@ import android.text.SpannableString;
import android.text.TextUtils;
import android.text.format.DateUtils;
import android.text.style.BackgroundColorSpan;
import android.text.Editable;// 引入textwatcher和Editable
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
@ -32,14 +30,11 @@ import android.view.WindowManager;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.core.app.ActivityCompat;
import net.micode.notes.R;
import net.micode.notes.data.Notes;
import net.micode.notes.data.Notes.TextNote;
@ -59,6 +54,8 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import jp.wasabeef.richeditor.RichEditor;
/**
* @Package: net.micode.notes.ui
* @ClassName: NoteEditActivity
@ -116,18 +113,17 @@ public class NoteEditActivity extends Activity implements OnClickListener,
sFontSelectorSelectionMap.put(ResourceParser.TEXT_SUPER, R.id.iv_super_select);
}
public static final int PHOTO_REQUEST = 1;//添加图片
private static final int REQUEST_EXTERNAL_STORAGE=1;//权限申请
private static String[] PERMISSIONS_STORAGE = {
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE" };//权限名称
private static final String TAG = "NoteEditActivity";
private HeadViewHolder mNoteHeaderHolder;
private View mHeadViewPanel;
private View mNoteBgColorSelector;
private View mFontSizeSelector;
private EditText mNoteEditor;
//private EditText mNoteEditor;
private RichEditor mNoteEditor;//富文本编辑器
private TextView mPreview;
private String mText;//mText和mNoteLength是给富文本编辑器的
private int mNoteLength;
private int mFontSize;
private View mNoteEditorPanel;
public WorkingNote mWorkingNote;
private SharedPreferences mSharedPrefs;
@ -145,42 +141,307 @@ public class NoteEditActivity extends Activity implements OnClickListener,
private String mUserQuery;
private Pattern mPattern;
/**
*
*
*/
public void initRichEditor(){
mNoteEditor.setEditorHeight(200);//设置编辑器界面高度
mNoteEditor.setEditorFontSize(22);//字体大小
mNoteEditor.setEditorFontColor(1);//字体颜色
mNoteEditor.setPadding(0, 0, 0, 0);//内边距
mNoteEditor.setPlaceholder("点击输入内容");//设置默认显示语句
mNoteEditor.setInputEnabled(true);//设置编辑器是否可用
mNoteEditor.setBackgroundResource(R.drawable.edit_yellow);//编辑背景
mNoteEditor.setOnTextChangeListener(new RichEditor.OnTextChangeListener() {
@Override
public void onTextChange(String text) {
mText = text;
mNoteLength = removeBlank(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);
}
});
findViewById(R.id.action_undo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.undo();
}
});
findViewById(R.id.action_redo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.redo();
}
});
findViewById(R.id.action_bold).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setBold();
}
});
findViewById(R.id.action_italic).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setItalic();
}
});
findViewById(R.id.action_subscript).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setSubscript();
}
});
findViewById(R.id.action_superscript).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setSuperscript();
}
});
findViewById(R.id.action_strikethrough).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setStrikeThrough();
}
});
findViewById(R.id.action_underline).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setUnderline();
}
});
findViewById(R.id.action_heading1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setHeading(1);
}
});
findViewById(R.id.action_heading2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setHeading(2);
}
});
findViewById(R.id.action_heading3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setHeading(3);
}
});
findViewById(R.id.action_heading4).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setHeading(4);
}
});
findViewById(R.id.action_heading5).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setHeading(5);
}
});
findViewById(R.id.action_heading6).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setHeading(6);
}
});
/**findViewById(R.id.action_txt_color).setOnClickListener(new View.OnClickListener() {
private boolean isChanged;
@Override
public void onClick(View v) {
mNoteEditor.setTextColor(isChanged ? Color.BLACK : Color.RED);
isChanged = !isChanged;
}
});*/
/**findViewById(R.id.action_bg_color).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {//设置点击响应方法
mNoteEditor.focusEditor();
new AlertDialog.Builder(NoteEditActivity.this).setTitle("选择字体背景颜色")//设置一个AlertDialog供用户选择具体的颜色
.setSingleChoiceItems(R.array.text_bg_color, 0,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
//红
case 0:
mNoteEditor.setTextBackgroundColor(Color.RED);
break;
//黄
case 1:
mNoteEditor.setTextBackgroundColor(Color.YELLOW);
break;
//蓝
case 2:
mNoteEditor.setTextBackgroundColor(Color.BLUE);
break;
//绿
case 3:
mNoteEditor.setTextBackgroundColor(Color.GREEN);
break;
//黑
case 4:
mNoteEditor.setTextBackgroundColor(Color.BLACK);
break;
case 5:
mNoteEditor.setTextBackgroundColor(Color.WHITE);
break;
}
}
}).show();
}
});*/
findViewById(R.id.action_indent).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setIndent();
}
});
findViewById(R.id.action_outdent).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setOutdent();
}
});
findViewById(R.id.action_align_left).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setAlignLeft();
}
});
findViewById(R.id.action_align_center).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setAlignCenter();
}
});
findViewById(R.id.action_align_right).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setAlignRight();
}
});
findViewById(R.id.action_blockquote).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setBlockquote();
}
});
findViewById(R.id.action_insert_bullets).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setBullets();
}
});
findViewById(R.id.action_insert_numbers).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.setNumbers();
}
});
/**findViewById(R.id.action_insert_link).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.insertLink("https://github.com/wasabeef", "wasabeef");
}
});*/
/**findViewById(R.id.action_insert_image).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.insertImage("https://raw.githubusercontent.com/wasabeef/art/master/chip.jpg",
"dachshund", 320);
}
});*/
findViewById(R.id.action_insert_checkbox).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNoteEditor.insertTodo();
}
});
}
/**
* @method Textchange
* @method textChange
* @description
* @date: 1/3/2024 8:48 AM
* @author: YangYizhe
* @param oriText
* @return
*/
private String Textchange(String oriText){
StringBuffer stringBuffer = new StringBuffer(oriText);
int Flag1 = -1;
int Flag2 = -1;
do {//不计入表示图片的字符
Flag1 = stringBuffer.indexOf("<img");
Flag2 = stringBuffer.indexOf(">");
if (Flag1 != -1 && Flag2 != -1) {
stringBuffer = stringBuffer.replace(Flag1, Flag2+1, "");
}
} while (Flag1 != -1 && Flag2 != -1);
do {//不计入换行字符
Flag1 = stringBuffer.indexOf("\n");
private String textChange(String oriText) {
StringBuilder stringBuilder = new StringBuilder(oriText);
// 移除所有<>
removeAngleBrackets(stringBuilder);
// 将&nbsp;替换为普通空格
int index = stringBuilder.indexOf("&nbsp;");
while (index != -1) {
stringBuilder.replace(index, index + 6, " ");
index = stringBuilder.indexOf("&nbsp;", index + 1);
}
return stringBuilder.toString();
}
if (Flag1 != -1){
stringBuffer = stringBuffer.replace(Flag1, Flag1+1, "");
private String removeBlank(String oriText) {
StringBuilder stringBuilder = new StringBuilder(oriText);
// 移除换行符和其他空格
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
@ -188,7 +449,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
@ -198,7 +459,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
@ -206,7 +467,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
mNoteHeaderHolder.textNum.setText("字数:" + currentLength);
}
});
}
}*/
/**
* Activity
@ -220,23 +481,8 @@ public class NoteEditActivity extends Activity implements OnClickListener,
return;
}
initResources();
final ImageButton add_img_btn = (ImageButton) findViewById(R.id.add_img_btn);//根据id获取添加图片按钮
//为点击图片按钮设置监听器
add_img_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "onClick: click add image button");
//ACTION_GET_CONTENT: 允许用户选择特殊种类的数据,并返回(特殊种类的数据:照一张相片或录一段音)
Intent loadImage = new Intent(Intent.ACTION_GET_CONTENT);
//Category属性用于指定当前动作Action被执行的环境.
//CATEGORY_OPENABLE; 用来指示一个ACTION_GET_CONTENT的intent
loadImage.addCategory(Intent.CATEGORY_OPENABLE);
loadImage.setType("image/*");
startActivityForResult(loadImage, PHOTO_REQUEST);
}
});
convertToImage();//将路径显示为图片
initRichEditor();
//count();
}
/**
@ -356,13 +602,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);
@ -380,7 +625,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* is not ready
*/
showAlertHeader();
convertToImage();//将路径转化未图片
}
/**
* @method showAlertHeader
@ -471,7 +715,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 = removeBlank(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()) {
@ -551,8 +806,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);
}
@ -847,15 +1101,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);
@ -939,13 +1193,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(textChange(mText));
} 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);
}
@ -986,7 +1240,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
}
mWorkingNote.setWorkingText(sb.toString());//利用编辑好的字符串设置运行便签的内容
} else {// 若不是该模式直接用编辑器中的内容设置运行中标签的内容
mWorkingNote.setWorkingText(mNoteEditor.getText().toString());
mWorkingNote.setWorkingText(textChange(mText));
}
return hasChecked;
}
@ -1000,6 +1254,10 @@ public class NoteEditActivity extends Activity implements OnClickListener,
private boolean saveNote() {
getWorkingText();
boolean saved = mWorkingNote.saveNote();
if (TextUtils.isEmpty(mWorkingNote.getContent())) {
deleteCurrentNote();//删除当前便签
saved = false; // 标记为未保存
}
//运行 getWorkingText()之后保存
if (saved) {
/**
@ -1075,7 +1333,6 @@ public class NoteEditActivity extends Activity implements OnClickListener,
private void showToast(int resId, int duration) {
Toast.makeText(this, resId, duration).show();
}
/**
* @method convertToImage
* @description: image
@ -1084,7 +1341,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @param: void
* @return: void
*/
private void convertToImage() {
/**private void convertToImage() {
NoteEditText noteEditText = (NoteEditText) findViewById(R.id.note_edit_view); //获取当前的edit
Editable editable = noteEditText.getText();//1.获取text
String noteText = editable.toString(); //2.将note内容转换为字符串
@ -1122,7 +1379,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
}
}
}
}
}*/
/**
* @method onActivityResult
@ -1132,7 +1389,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @param:
* @return: void
*/
@Override
/**@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
ContentResolver resolver = getContentResolver();
@ -1182,7 +1439,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
default:
break;
}
}
}*/
/**
* @method getPath
@ -1192,7 +1449,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @param:
* @return:
*/
public String getPath(final Context context, final Uri uri) {
/**public String getPath(final Context context, final Uri uri) {
final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
@ -1223,7 +1480,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
return uri.getPath();
}
return null;
}
}*/
/**
* @method isMediaDocument
@ -1233,7 +1490,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @param: uri
* @return:
*/
public boolean isMediaDocument(Uri uri) {
/**public boolean isMediaDocument(Uri uri) {
return "com.android.providers.media.documents".equals(uri.getAuthority());
}
@ -1245,7 +1502,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @param:
* @return:
*/
public String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {
/**public String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {
Cursor cursor = null;
final String column = "_data";
@ -1272,7 +1529,7 @@ public class NoteEditActivity extends Activity implements OnClickListener,
* @param: activity
* @return: void
*/
public static void checkStoragePermissions(Activity activity){
/**public static void checkStoragePermissions(Activity activity){
try{
//监测是否有写/读的权限
int permission= ActivityCompat.checkSelfPermission(activity,
@ -1292,4 +1549,14 @@ public class NoteEditActivity extends Activity implements OnClickListener,
e.printStackTrace();
}
}
/**
* @method textToSpeach
* @description:
* @date: 2024/1/16 20:21
* @author: WuShuxian
*/
/**private void textToSpeach(){
mTTS.speak(mNoteEditor.getText().toString(),TextToSpeech.QUEUE_FLUSH,null);
}*/
}

@ -17,8 +17,15 @@ import net.micode.notes.databinding.ActivitySplashBinding;
import net.micode.notes.R;
/**
* An example full-screen activity that shows and hides the system UI (i.e.
* status bar and navigation/system bar) with user interaction.
* @Package: net.micode.notes.ui
* @ClassName: SplashActivity
* @Description:
*
* AndroidManifestMain Activity
* Eazzy Note2sNotesListActivity
* @Author: YangYizhe
* @CreateDate: 1/19/2024 8:35 AM
* @Version: 1.0
*/
public class SplashActivity extends AppCompatActivity {
/**

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 615 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 825 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 840 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

@ -85,17 +85,17 @@
<ScrollView
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_gravity="left|top"
android:layout_weight="1"
android:scrollbars="none"
android:fadingEdgeLength="0dip"
android:overScrollMode="never"
android:layout_gravity="left|top"
android:fadingEdgeLength="0dip">
android:scrollbars="none">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<net.micode.notes.ui.NoteEditText
<jp.wasabeef.richeditor.RichEditor
android:id="@+id/note_edit_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
@ -111,8 +111,8 @@
android:id="@+id/note_edit_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="-10dip"
android:orientation="vertical"
android:visibility="gone" />
</LinearLayout>
</ScrollView>
@ -395,23 +395,249 @@
<ImageView
android:id="@+id/iv_super_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom|right"
android:focusable="false"
android:visibility="gone"
android:layout_marginRight="6dip"
android:layout_marginBottom="-7dip"
android:src="@drawable/selected" />
android:focusable="false"
android:src="@drawable/selected"
android:visibility="gone" />
</FrameLayout>
</LinearLayout>
<ImageButton
android:id="@+id/add_img_btn"
android:layout_width="51dp"
android:layout_height="54dp"
android:layout_marginLeft="7dp"
android:layout_marginTop="600dp"
android:layout_marginBottom="7dp"
android:src="@drawable/ic_menu_gallery_new" />
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageButton
android:id="@+id/action_undo"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/undo" />
<ImageButton
android:id="@+id/action_redo"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/redo" />
<ImageButton
android:id="@+id/action_bold"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/bold" />
<ImageButton
android:id="@+id/action_italic"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/italic" />
<ImageButton
android:id="@+id/action_subscript"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/subscript" />
<ImageButton
android:id="@+id/action_superscript"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/superscript" />
<ImageButton
android:id="@+id/action_strikethrough"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/strikethrough" />
<ImageButton
android:id="@+id/action_underline"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/underline" />
<ImageButton
android:id="@+id/action_heading1"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/h1" />
<ImageButton
android:id="@+id/action_heading2"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/h2" />
<ImageButton
android:id="@+id/action_heading3"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/h3" />
<ImageButton
android:id="@+id/action_heading4"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/h4" />
<ImageButton
android:id="@+id/action_heading5"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/h5" />
<ImageButton
android:id="@+id/action_heading6"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/h6" />
<ImageButton
android:id="@+id/action_indent"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/indent" />
<ImageButton
android:id="@+id/action_outdent"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/outdent" />
<ImageButton
android:id="@+id/action_align_left"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/justify_left" />
<ImageButton
android:id="@+id/action_align_center"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/justify_center" />
<ImageButton
android:id="@+id/action_align_right"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/justify_right" />
<ImageButton
android:id="@+id/action_insert_bullets"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/bullets" />
<ImageButton
android:id="@+id/action_insert_numbers"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/numbers" />
<ImageButton
android:id="@+id/action_blockquote"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/blockquote" />
<!--ImageButton
android:id="@+id/action_insert_image"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/insert_image" /-->
<!--ImageButton
android:id="@+id/action_insert_audio"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/music" />
<ImageButton
android:id="@+id/action_insert_video"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/video" />
<ImageButton
android:id="@+id/action_insert_youtube"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/youtube" />
<ImageButton
android:id="@+id/action_insert_link"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@drawable/insert_link" /-->
<ImageButton
android:id="@+id/action_insert_checkbox"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@null"
android:contentDescription="@null"
android:src="@android:drawable/checkbox_on_background" />
</LinearLayout>
</HorizontalScrollView>
</FrameLayout>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="menu_voice" type="id" />
</resources>

@ -39,7 +39,6 @@
<string name="file_name_txt_format">notes_%s.txt</string>
<!-- notes list string -->
<string name="format_folder_files_count">(%d)</string>
<string name="add_img_btn">Add picture</string>
<string name="menu_create_folder">New Folder</string>
<string name="menu_export_text">Export text</string>
<string name="menu_sync">Sync</string>

Loading…
Cancel
Save