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