首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 記事本圖文混排儲存:圖片存路徑、文字存內容、自定義分隔符還原

     編輯:程式設計綜合問答

EditText 插入圖片實為 ImageSpan,無法直接序列化。主流做法:**圖片存本地/伺服器路徑,文字存純文字,用特殊分隔符組合**。

儲存流程

  1. 使用者插入圖片 → 選擇圖片 → 複製到 App 專屬目錄 (getFilesDir()/images/) → 取得絕對路徑 /data/user/0/pkg/files/images/abc.jpg。
  2. 在 EditText 光標處插入佔位符,如 [[IMG:/data/user/0/pkg/files/images/abc.jpg]]。
  3. 儲存時取得 editText.getText().toString(),直接存入 SQLite TEXT 欄位。

讀取還原

String content = cursor.getString(colIdx);
SpannableStringBuilder ssb = new SpannableStringBuilder(content);
Pattern p = Pattern.compile("\\[\\[IMG:(.+?)\\]\\]");
Matcher m = p.matcher(content);
while (m.find()) {
    String path = m.group(1);
    Bitmap bmp = BitmapFactory.decodeFile(path);
    if (bmp != null) {
        Drawable d = new BitmapDrawable(getResources(), bmp);
        d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
        ssb.setSpan(new ImageSpan(d), m.start(), m.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
}
editText.setText(ssb);

分隔符選擇建議

  • 不易出現在正文:[[IMG:...]]、###IMG###、|||IMG|||。
  • 若需支援多種媒體,可擴展為 [[MEDIA:type:path]]。

進階:資料庫正規化

大量圖文建議拆表:notes(id, text) + note_images(note_id, path, sort_order),查詢時 JOIN 組裝。

核心模式:**圖片落地存路徑,文字存佔位符,讀取時正則替換為 ImageSpan**。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved