增设撤回功能,优化布局

LL
1172104155@qq.com 3 years ago
parent 246d7b6795
commit c26250484b

@ -86,11 +86,14 @@ import net.micode.notes.ui.NoteEditText.OnTextViewChangeListener;
import net.micode.notes.widget.NoteWidgetProvider_2x;
import net.micode.notes.widget.NoteWidgetProvider_4x;
import org.w3c.dom.Text;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Locale;
import java.util.Map;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -177,7 +180,7 @@ public class NoteEditActivity extends AppCompatActivity implements OnClickListen
private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10;
private static final int PHOTO_REQUEST=1;
private boolean mIsRvoke=false;
public static final String TAG_CHECKED = String.valueOf('\u221A');
public static final String TAG_UNCHECKED = String.valueOf('\u25A1');
@ -190,6 +193,7 @@ public class NoteEditActivity extends AppCompatActivity implements OnClickListen
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -220,6 +224,32 @@ public class NoteEditActivity extends AppCompatActivity implements OnClickListen
}
});
final ImageButton revoke = (ImageButton) findViewById(R.id.revoke);
revoke.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
doRevoke();
return;
}
});
mNoteEditor.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {//文本更改后
if(!mIsRvoke) {
saveMyChanged();
}else {
mIsRvoke = false;
}
}
});
}
/**
@ -1182,7 +1212,33 @@ public class NoteEditActivity extends AppCompatActivity implements OnClickListen
}while (flag1 != -1);
return stringBuffer.toString();
}
private String Text_revoke(String oriText){
StringBuffer stringBuffer = new StringBuffer(oriText);
int flag1 = -1;
int flag2 = -1;
do{//不计入表示图片的字符
flag1 = stringBuffer.indexOf("/n");
flag2 = stringBuffer.indexOf("[/local]")+7;
if (flag1 != -1 && flag2 != -1){
stringBuffer = stringBuffer.replace(flag1,flag2+1,"");
}
}while (flag1 != -1 && flag2 != -1);
do{//不计入换行字符
flag1 = stringBuffer.indexOf("\n");
if (flag1 != -1){
stringBuffer = stringBuffer.replace(flag1,flag1+1,"");
}
}while (flag1 != -1);
do{//不计入空格字符
flag1 = stringBuffer.indexOf(" ");
if (flag1 != -1){
stringBuffer = stringBuffer.replace(flag1,flag1+1,"");
}
}while (flag1 != -1);
return stringBuffer.toString();
}
/*
便
@ -1416,5 +1472,40 @@ public class NoteEditActivity extends AppCompatActivity implements OnClickListen
}
return null;
}
private static final int MAX_TIME_OF_RVOKE_TIME=100;
private int MAX_OF_RVOKE_TIME=100;
private Vector<SpannableString> mChanged = new Vector<SpannableString>(MAX_OF_RVOKE_TIME);
private void saveMyChanged(){
SpannableString text = new SpannableString(mNoteEditor.getText());//用getText方法获取每次编辑的内容
if(mChanged.size()>=MAX_TIME_OF_RVOKE_TIME){//如果栈中的数据大于最大撤销次数,就把第一次修改的内容删除
mChanged.removeElementAt(0);
}
mChanged.add(text);//然后把本次修改的内容加入栈中
}
private void doRevoke(){
int size = mChanged.size();//获取当前栈大小
AlertDialog.Builder dialog = new AlertDialog.Builder(this);//创建一个alertdialog窗口
dialog.setTitle(R.string.tips_of_revoke);//设置title信息
dialog.setCancelable(true);//设置为可取消
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {//只需要设置一个OK键即可
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
mIsRvoke = true;//把是否已执行撤销的标记设置为true
if(size<=1){//如果栈中元素过少,打印提示信息
dialog.setMessage(R.string.have_not_input_anything);//提示用户您还没有输入任何信息
dialog.show();//显示当前alertdialog
return;
}
else {
mNoteEditor.setText((CharSequence) mChanged.elementAt(size-2));//在textview中设置撤销的内容
mNoteEditor.setSelection(mNoteEditor.length());
mChanged.removeElementAt(size-1);//删除元素
if(size==2){
dialog.setMessage(R.string.can_not_revoke);//如果只有一次操作,那么提示用户不能再撤销了
dialog.show();//显示当前alertdialog
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

@ -42,6 +42,13 @@
android:layout_marginRight="8dip"
android:textAppearance="@style/TextAppearanceSecondaryItem" />
<ImageView
android:id="@+id/iv_alert_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:background="@drawable/title_alert" />
<ImageButton
android:id="@+id/add_img_btn"
android:layout_width="30dp"
@ -51,19 +58,15 @@
android:layout_gravity="center|center_vertical"
android:layout_marginHorizontal="@dimen/text_font_size_large"/>
<ImageButton
android:id="@+id/read_note"
android:id="@+id/revoke"
android:layout_width="25dp"
android:layout_height="25dp"
android:background="@drawable/laba1"
android:layout_marginLeft="7dp"
android:background="@drawable/cehui3"
android:layout_gravity="center|center_vertical"
android:layout_marginHorizontal="@dimen/text_font_size_large" />
android:layout_marginHorizontal="@dimen/text_font_size_large"/>
<ImageView
android:id="@+id/iv_alert_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:background="@drawable/title_alert" />
<TextView
android:id="@+id/tv_alert_date"
@ -140,7 +143,9 @@
android:orientation="vertical"
android:layout_marginLeft="-10dip"
android:visibility="gone" />
</LinearLayout>
</ScrollView>
<ImageView
@ -149,7 +154,13 @@
android:background="@drawable/bg_color_btn_mask" />
</LinearLayout>
</LinearLayout>
<ImageButton
android:id="@+id/read_note"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/laba1"
android:layout_gravity="bottom|left"
android:layout_marginHorizontal="@dimen/text_font_size_large" />
<LinearLayout
android:id="@+id/note_bg_color_selector"
android:layout_width="wrap_content"

@ -37,6 +37,9 @@
<string name="note_link_web">Browse web</string>
<string name="note_link_other">Open map</string>
<!-- Text export file information -->
<string name="tips_of_revoke">提示</string>
<string name="can_not_revoke">您不能再执行撤销了</string>
<string name="have_not_input_anything">您还没有输入任何内容</string>
<string name="read_note">read_note</string>
<string name="file_path">/MIUI/notes/</string>
<string name="file_name_txt_format">notes_%s.txt</string>

Loading…
Cancel
Save