diff --git a/app/build.gradle b/app/build.gradle index e16d017..d1c93c5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,6 +10,7 @@ repositories { mavenCentral() jcenter() maven { url "https://www.jitpack.io" } + maven { url "http://dl.bintray.com/piasy/maven" } } apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' @@ -109,5 +110,6 @@ dependencies { compile 'net.danlew:android.joda:2.9.5' compile group: 'com.tencent.bugly', name: 'crashreport_upgrade', version: '1.2.1' compile 'com.elvishew:xlog:1.3.0' - + compile 'com.github.piasy:BigImageViewer:1.2.5' + compile 'com.github.piasy:GlideImageLoader:1.2.5' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2b2b770..2009a57 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,6 +45,8 @@ + enabledFormats); void onCursorChanged(Map enabledFormats); void linkTo(String url); + void onClickedImage(String url); } protected class EditorClient extends WebViewClient { diff --git a/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java b/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java index 4c516ca..bdfe178 100644 --- a/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java +++ b/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java @@ -156,6 +156,11 @@ public class RichTextEditor extends Editor implements TinnyMceCallback.TinnyMceL mListener.linkTo(url); } + @Override + public void onClickedImage(String url) { + mListener.onClickedImage(url); + } + @Override public void onCursorChanged(Map enabledFormats) { mListener.onCursorChanged(enabledFormats); diff --git a/app/src/main/java/org/houxg/leamonax/editor/TinnyMceCallback.java b/app/src/main/java/org/houxg/leamonax/editor/TinnyMceCallback.java index 1e94370..539b213 100644 --- a/app/src/main/java/org/houxg/leamonax/editor/TinnyMceCallback.java +++ b/app/src/main/java/org/houxg/leamonax/editor/TinnyMceCallback.java @@ -25,6 +25,8 @@ public class TinnyMceCallback { void linkTo(String url); + void onClickedImage(String url); + void onCursorChanged(Map enabledFormats); } @@ -43,6 +45,13 @@ public class TinnyMceCallback { } } + @JavascriptInterface + public void onClickedImage(String url) { + if (mListener != null) { + mListener.onClickedImage(url); + } + } + @JavascriptInterface public void onCursorChanged(String data) { XLog.i(TAG + data); diff --git a/app/src/main/java/org/houxg/leamonax/service/NoteFileService.java b/app/src/main/java/org/houxg/leamonax/service/NoteFileService.java index 54a7547..8a3e747 100644 --- a/app/src/main/java/org/houxg/leamonax/service/NoteFileService.java +++ b/app/src/main/java/org/houxg/leamonax/service/NoteFileService.java @@ -58,6 +58,20 @@ public class NoteFileService { return SCHEME.equals(uri.getScheme()) && IMAGE_PATH_WITH_SLASH.equals(uri.getPath()); } + public static String getImagePath(Uri uri) { + String localId = uri.getQueryParameter("id"); + NoteFile noteFile = AppDataBase.getNoteFileByLocalId(localId); + if (noteFile == null) { + return null; + } + if (!TextUtils.isEmpty(noteFile.getLocalPath())) { + File file = new File(noteFile.getLocalPath()); + return file.isFile() ? noteFile.getLocalPath() : null; + } else { + return null; + } + } + public static InputStream getImage(String localId) { NoteFile noteFile = AppDataBase.getNoteFileByLocalId(localId); if (noteFile == null) { diff --git a/app/src/main/java/org/houxg/leamonax/ui/PictureViewerActivity.java b/app/src/main/java/org/houxg/leamonax/ui/PictureViewerActivity.java new file mode 100644 index 0000000..63a4556 --- /dev/null +++ b/app/src/main/java/org/houxg/leamonax/ui/PictureViewerActivity.java @@ -0,0 +1,52 @@ +package org.houxg.leamonax.ui; + +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.text.TextUtils; + +import com.github.piasy.biv.view.BigImageView; + +import org.houxg.leamonax.R; + +import java.io.File; + +import butterknife.BindView; +import butterknife.ButterKnife; + +public class PictureViewerActivity extends BaseActivity { + + private static final String EXTRA_FILE_PATH = "extra.filePath"; + + @BindView(R.id.big_image) + BigImageView mBigImageView; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_picture_viewer); + ButterKnife.bind(this); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + getWindow().setStatusBarColor(getResources().getColor(R.color.black)); + } + + String path = getIntent().getStringExtra(EXTRA_FILE_PATH); + if (TextUtils.isEmpty(path)) { + finish(); + return; + } + Uri uri = Uri.fromFile(new File(path)); + mBigImageView.showImage(uri); + } + + public static Intent getOpenIntent(Context context, String path) { + Intent intent = new Intent(context, PictureViewerActivity.class); + intent.putExtra(EXTRA_FILE_PATH, path); + return intent; + } + + +} diff --git a/app/src/main/java/org/houxg/leamonax/ui/edit/EditorFragment.java b/app/src/main/java/org/houxg/leamonax/ui/edit/EditorFragment.java index e2d08dc..9c1f631 100644 --- a/app/src/main/java/org/houxg/leamonax/ui/edit/EditorFragment.java +++ b/app/src/main/java/org/houxg/leamonax/ui/edit/EditorFragment.java @@ -34,11 +34,14 @@ import org.houxg.leamonax.R; import org.houxg.leamonax.editor.Editor; import org.houxg.leamonax.editor.MarkdownEditor; import org.houxg.leamonax.editor.RichTextEditor; +import org.houxg.leamonax.service.NoteFileService; +import org.houxg.leamonax.ui.PictureViewerActivity; import org.houxg.leamonax.utils.CollectionUtils; import org.houxg.leamonax.utils.DialogUtils; import org.houxg.leamonax.utils.OpenUtils; import org.houxg.leamonax.widget.ToggleImageButton; +import java.io.File; import java.util.List; import java.util.Map; @@ -459,6 +462,14 @@ public class EditorFragment extends Fragment implements Editor.EditorListener { OpenUtils.openUrl(getActivity(), url); } + @Override + public void onClickedImage(String url) { + String path = NoteFileService.getImagePath(Uri.parse(url)); + if (!TextUtils.isEmpty(path)) { + startActivity(PictureViewerActivity.getOpenIntent(getActivity(), path)); + } + } + private void refreshFormatStatus(Map formatStatus) { for (Map.Entry entry : formatStatus.entrySet()) { switch (entry.getKey()) { diff --git a/app/src/main/res/layout/activity_picture_viewer.xml b/app/src/main/res/layout/activity_picture_viewer.xml new file mode 100644 index 0000000..10606fb --- /dev/null +++ b/app/src/main/res/layout/activity_picture_viewer.xml @@ -0,0 +1,14 @@ + + + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index e58e904..0d9c9f5 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -16,4 +16,5 @@ #F5F5F5 #00000000 #FFFFFF + #000