基于NotePad应用做功能扩展

基于NotePad应用做功能扩展

#写在前面,解决图片不能查看问题

因为有 墙 的存在,DNS污染了,存在不能查看GitHub上图片问题
​​基于NotePad应用做功能扩展

配置hosts文件,直接指向github的服务器。用ipaddress查一下GitHub: Where the world builds software · GitHub 的ip
基于NotePad应用做功能扩展
hosts文件win10目录:C:\Windows\System32\drivers\etc
基于NotePad应用做功能扩展
在文件尾部添加:

185.199.108.133 raw.githubusercontent.com
185.199.109.133 raw.githubusercontent.com
185.199.110.133 raw.githubusercontent.com
185.199.111.133 raw.githubusercontent.com
185.199.108.133 githubusercontent.com
185.199.109.133 githubusercontent.com
185.199.110.133 githubusercontent.com
185.199.111.133 githubusercontent.com

基于NotePad应用做功能扩展
保存,关闭,重新加载网页即可

NotePad

This is an AndroidStudio rebuild of google SDK sample NotePad

新增类,修改类(部分代码展示)

基于NotePad应用做功能扩展

• MyCursorAdapter.java

    public void bindView(View view, Context context, Cursor cursor){
    super.bindView(view, context, cursor);
    //从数据库中读取的cursor中获取笔记列表对应的颜色数据,并设置笔记颜色
    int x =               
   cursor.getInt(cursor.getColumnIndex(NotePad.Notes.COLUMN_NAME_BACK_COLOR));
    switch (x){
        case NotePad.Notes.DEFAULT_COLOR:
            view.setBackgroundColor(Color.rgb(255, 255, 255));
            break;
        case NotePad.Notes.YELLOW_COLOR:
            view.setBackgroundColor(Color.rgb(247, 216, 133));
            break;
        case NotePad.Notes.BLUE_COLOR:
            view.setBackgroundColor(Color.rgb(165, 202, 237));
            break;
        case NotePad.Notes.GREEN_COLOR:
            view.setBackgroundColor(Color.rgb(161, 214, 174));
            break;
        case NotePad.Notes.RED_COLOR:
            view.setBackgroundColor(Color.rgb(244, 149, 133));
            break;
        default:
            view.setBackgroundColor(Color.rgb(255, 255, 255));
            break;
    }
}

• NoteSearch.java

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.note_search_list);
    Intent intent = getIntent();
    if (intent.getData() == null) {
        intent.setData(NotePad.Notes.CONTENT_URI);
    }
    SearchView searchview = (SearchView)findViewById(R.id.search_view);
    searchview.setOnQueryTextListener(NoteSearch.this);  //为查询文本框注册监听器
}

• OutputText.java

    private void write()
{
    try
    {
        // 如果手机插入了SD卡,而且应用程序具有访问SD的权限
        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            // 获取SD卡的目录
            File sdCardDir = Environment.getExternalStorageDirectory();
            //创建文件目录
            File targetFile = new File(sdCardDir.getCanonicalPath() + "/" + mName.getText() + ".txt");
            //写文件
            PrintWriter ps = new PrintWriter(new OutputStreamWriter(new FileOutputStream(targetFile), "UTF-8"));
            ps.println(TITLE);
            ps.println(NOTE);
            ps.println("创建时间:" + CREATE_DATE);
            ps.println("最后一次修改时间:" + MODIFICATION_DATE);
            ps.close();
            Toast.makeText(this, "保存成功,保存位置:" + sdCardDir.getCanonicalPath() + "/" + mName.getText() + ".txt", Toast.LENGTH_LONG).show();
        }
    }

• NoteEditor.java
设置颜色

switch (x){
            case NotePad.Notes.DEFAULT_COLOR:
                mText.setBackgroundColor(Color.rgb(255, 255, 255));
                break;
            case NotePad.Notes.YELLOW_COLOR:
                mText.setBackgroundColor(Color.rgb(247, 216, 133));
                break;
            case NotePad.Notes.BLUE_COLOR:
                mText.setBackgroundColor(Color.rgb(165, 202, 237));
                break;
            case NotePad.Notes.GREEN_COLOR:
                mText.setBackgroundColor(Color.rgb(161, 214, 174));
                break;
            case NotePad.Notes.RED_COLOR:
                mText.setBackgroundColor(Color.rgb(244, 149, 133));
                break;
            default:
                mText.setBackgroundColor(Color.rgb(255, 255, 255));
                break;
        }

• NotePad.java
设置颜色

    public static final int DEFAULT_COLOR = 0; //白
    public static final int YELLOW_COLOR = 1;//黄
    public static final int BLUE_COLOR = 2;//蓝
    public static final int GREEN_COLOR = 3;//绿
    public static final int RED_COLOR = 4;//红

• NotesList.java
设置搜索,排序

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_add:
      /*
       * Launches a new Activity using an Intent. The intent filter for the Activity
       * has to have action ACTION_INSERT. No category is set, so DEFAULT is assumed.
       * In effect, this starts the NoteEditor Activity in NotePad.
       */
            startActivity(new Intent(Intent.ACTION_INSERT, getIntent().getData()));
            return true;
        case R.id.menu_paste:
      /*
       * Launches a new Activity using an Intent. The intent filter for the Activity
       * has to have action ACTION_PASTE. No category is set, so DEFAULT is assumed.
       * In effect, this starts the NoteEditor Activity in NotePad.
       */
            startActivity(new Intent(Intent.ACTION_PASTE, getIntent().getData()));
            return true;
        //添加搜素
        case R.id.menu_search:
            Intent intent = new Intent();
            intent.setClass(NotesList.this,NoteSearch.class);
            NotesList.this.startActivity(intent);
            return true;

        //创建时间排序
        case R.id.menu_sort1:
            cursor = managedQuery(
                    getIntent().getData(),            // Use the default content URI for the provider.
                    PROJECTION,                       // Return the note ID and title for each note. and modifcation date
                    null,                             // No where clause, return all records.
                    null,                             // No where clause, therefore no where column values.
                    NotePad.Notes._ID  // Use the default sort order.
            );
            adapter = new MyCursorAdapter(
                    this,
                    R.layout.noteslist_item,
                    cursor,
                    dataColumns,
                    viewIDs
            );
            setListAdapter(adapter);
            return true;

        //修改时间排序
        case R.id.menu_sort2:
            cursor = managedQuery(
                    getIntent().getData(),            // Use the default content URI for the provider.
                    PROJECTION,                       // Return the note ID and title for each note. and modifcation date
                    null,                             // No where clause, return all records.
                    null,                             // No where clause, therefore no where column values.
                    NotePad.Notes.DEFAULT_SORT_ORDER // Use the default sort order.
            );

            adapter = new MyCursorAdapter(
                    this,
                    R.layout.noteslist_item,
                    cursor,
                    dataColumns,
                    viewIDs
            );
            setListAdapter(adapter);
            return true;

        //颜色排序
        case R.id.menu_sort3:
            cursor = managedQuery(
                    getIntent().getData(),            // Use the default content URI for the provider.
                    PROJECTION,                       // Return the note ID and title for each note. and modifcation date
                    null,                             // No where clause, return all records.
                    null,                             // No where clause, therefore no where column values.
                    NotePad.Notes.COLUMN_NAME_BACK_COLOR // Use the default sort order.
            );
            adapter = new MyCursorAdapter(
                    this,
                    R.layout.noteslist_item,
                    cursor,
                    dataColumns,
                    viewIDs
            );
            setListAdapter(adapter);
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

新建布局,修改布局

基于NotePad应用做功能扩展

• note_color.xml
举例

基于NotePad应用做功能扩展

• note_srarch_list.xml

<ImageButton
    android:id="@+id/color_white"
    android:layout_width="0dp"
    android:layout_height="50dp"
    android:layout_weight="1"
    android:background="@color/colorWhite"
    android:onClick="white"/>

<ImageButton
    android:id="@+id/color_yellow"
    android:layout_width="0dp"
    android:layout_height="50dp"
    android:layout_weight="1"
    android:background="@color/colorYellow"
    android:onClick="yellow"/>

<ImageButton
    android:id="@+id/color_blue"
    android:layout_width="0dp"
    android:layout_height="50dp"
    android:layout_weight="1"
    android:background="@color/colorBlue"
    android:onClick="blue"/>

<ImageButton
    android:id="@+id/color_green"
    android:layout_width="0dp"
    android:layout_height="50dp"
    android:layout_weight="1"
    android:background="@color/colorGreen"
    android:onClick="green"/>

<ImageButton
    android:id="@+id/color_red"
    android:layout_width="0dp"
    android:layout_height="50dp"
    android:layout_weight="1"
    android:background="@color/colorRed"
    android:onClick="red"/>

基于NotePad应用做功能扩展

• output_text.xml

<EditText android:id="@+id/output_name"
    android:maxLines="1"
    android:layout_marginTop="2dp"
    android:layout_marginBottom="15dp"
    android:layout_width="wrap_content"
    android:ems="25"
    android:layout_height="wrap_content"
    android:autoText="true"
    android:capitalize="sentences"
    android:scrollHorizontally="true" />

<Button android:id="@+id/output_ok"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:text="@string/output_ok"
    android:onClick="OutputOk" />

基于NotePad应用做功能扩展

• colors.xml

基于NotePad应用做功能扩展

页面布局

基于NotePad应用做功能扩展

基本要求:

• NoteList中显示条目增加时间戳显示

基于NotePad应用做功能扩展

• 添加笔记查询功能(根据标题查询)
默认title为输入内容,可自行更改,但查询是按照title查询,若title与笔记内容则笔记内容便无法查询到

基于NotePad应用做功能扩展

基于NotePad应用做功能扩展

基于NotePad应用做功能扩展

附加功能:

• UI美化
我的排版参考PPT中的UI美化,将功能按键安排在上方

基于NotePad应用做功能扩展

• 更改记事本的背景
需要在笔记中设置,在笔记初始展示页以带背景颜色的横条表示

基于NotePad应用做功能扩展

基于NotePad应用做功能扩展

• 导出笔记

基于NotePad应用做功能扩展

基于NotePad应用做功能扩展

• 笔记排序
可以根据创建时间、修改时间和颜色进行排序

基于NotePad应用做功能扩展

基于NotePad应用做功能扩展

源码地址:源码

作者:陈巧蔓
原文链接:原文

上一篇:LeetCode Notes_#42_接雨水


下一篇:CharIndex的用法