From 1ed5af620c542f9676c897847ac6fd6bb33f5811 Mon Sep 17 00:00:00 2001 From: nuan1993 Date: Tue, 5 Nov 2019 14:23:43 +0800 Subject: [PATCH] =?UTF-8?q?lib=EF=BC=8C=E8=A7=A3=E5=86=B3=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=97=B6=E7=BD=91=E7=BB=9C=E5=9B=BE=E7=89=87=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=BC=82=E5=B8=B8=EF=BC=8C=E4=B8=8D=E8=83=BD=E8=87=AA?= =?UTF-8?q?=E9=80=82=E5=BA=94=E9=AB=98=E5=BA=A6=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20demo=EF=BC=8C=E8=A7=A3=E5=86=B3https=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?Glide=E8=AE=BE=E7=BD=AE=E7=9B=B8=E5=85=B3=EF=BC=8C=E4=B8=8E?= =?UTF-8?q?=E5=BA=93=E6=97=A0=E5=85=B3=20demo=EF=BC=8CXRichText=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E5=8A=A0=E8=BD=BD=E5=99=A8=E5=9C=A8Application?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 5 +- .../sendtion/xrichtextdemo/MyApplication.java | 61 ++++++++- .../xrichtextdemo/comm/MyAppGlideModule.java | 24 ++++ .../comm/UnsafeOkHttpClient.java | 61 +++++++++ .../xrichtextdemo/ui/MainActivity.java | 13 -- .../xrichtextdemo/ui/NewActivity.java | 6 +- build.gradle | 12 +- xrichtext/build.gradle | 4 +- .../com/sendtion/xrichtext/IImageLoader.java | 2 +- .../sendtion/xrichtext/RichTextEditor.java | 119 +++++------------- .../com/sendtion/xrichtext/RichTextView.java | 18 +-- .../com/sendtion/xrichtext/XRichText.java | 4 +- .../res/drawable-xxhdpi/img_load_fail.png | Bin 0 -> 379 bytes .../src/main/res/layout/edit_imageview.xml | 13 +- 14 files changed, 207 insertions(+), 135 deletions(-) create mode 100644 app/src/main/java/com/sendtion/xrichtextdemo/comm/MyAppGlideModule.java create mode 100644 app/src/main/java/com/sendtion/xrichtextdemo/comm/UnsafeOkHttpClient.java create mode 100644 xrichtext/src/main/res/drawable-xxhdpi/img_load_fail.png diff --git a/app/build.gradle b/app/build.gradle index db41339..5b0aebd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "com.sendtion.xrichtext" minSdkVersion 14 targetSdkVersion 22 - versionCode 12 - versionName "1.9.2" + versionCode 14 + versionName "1.9.4" } buildTypes { @@ -37,6 +37,7 @@ dependencies { //implementation 'com.github.bumptech.glide:glide:3.7.0' implementation 'com.github.bumptech.glide:glide:4.9.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0' + implementation 'com.github.bumptech.glide:okhttp3-integration:4.9.0' //implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support:design:28.0.0' diff --git a/app/src/main/java/com/sendtion/xrichtextdemo/MyApplication.java b/app/src/main/java/com/sendtion/xrichtextdemo/MyApplication.java index 044bfb4..25e6f64 100644 --- a/app/src/main/java/com/sendtion/xrichtextdemo/MyApplication.java +++ b/app/src/main/java/com/sendtion/xrichtextdemo/MyApplication.java @@ -1,13 +1,32 @@ package com.sendtion.xrichtextdemo; import android.app.Application; +import android.graphics.Bitmap; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.util.Log; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import com.bumptech.glide.Glide; +import com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader; +import com.bumptech.glide.load.model.GlideUrl; +import com.bumptech.glide.request.target.SimpleTarget; +import com.bumptech.glide.request.transition.Transition; +import com.sendtion.xrichtext.IImageLoader; +import com.sendtion.xrichtext.XRichText; +import com.sendtion.xrichtextdemo.comm.TransformationScale; +import com.sendtion.xrichtextdemo.comm.UnsafeOkHttpClient; import com.wenming.library.LogReport; import com.wenming.library.save.imp.CrashWriter; -import com.wenming.library.save.imp.LogWriter; import com.wenming.library.upload.email.EmailReporter; import com.wenming.library.upload.http.HttpReporter; +import java.io.InputStream; + +import okhttp3.OkHttpClient; + public class MyApplication extends Application { @Override @@ -22,6 +41,46 @@ public void onCreate() { // 使用以下方法,打印Log的同时,把Log信息保存到本地(保存的时候会附带线程名称,线程id,打印时间), // 并且随同崩溃日志一起,发送到特定的邮箱或者服务器上。帮助开发者还原用户的操作路径,更好的分析崩溃产生的原因 //LogWriter.writeLog("wenming", "打Log测试!!!!"); + + XRichText.getInstance().setImageLoader(new IImageLoader() { + @Override + public void loadImage(final String imagePath, final ImageView imageView, final int imageHeight) { + Log.e("---", "imageHeight: "+imageHeight); + //如果是网络图片 + if (imagePath.startsWith("http://") || imagePath.startsWith("https://")){ + Glide.with(getApplicationContext()).asBitmap().load(imagePath).dontAnimate() + .into(new SimpleTarget() { + @Override + public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { + if (imageHeight > 0) {//固定高度 + RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( + FrameLayout.LayoutParams.MATCH_PARENT, imageHeight);//固定图片高度,记得设置裁剪剧中 + lp.bottomMargin = 10;//图片的底边距 + imageView.setLayoutParams(lp); + Glide.with(getApplicationContext()).asBitmap().load(imagePath).centerCrop() + .placeholder(R.mipmap.img_load_fail).error(R.mipmap.img_load_fail).into(imageView); + } else {//自适应高度 + Glide.with(getApplicationContext()).asBitmap().load(imagePath) + .placeholder(R.mipmap.img_load_fail).error(R.mipmap.img_load_fail).into(new TransformationScale(imageView)); + } + } + }); + } else { //如果是本地图片 + if (imageHeight > 0) {//固定高度 + RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( + FrameLayout.LayoutParams.MATCH_PARENT, imageHeight);//固定图片高度,记得设置裁剪剧中 + lp.bottomMargin = 10;//图片的底边距 + imageView.setLayoutParams(lp); + + Glide.with(getApplicationContext()).asBitmap().load(imagePath).centerCrop() + .placeholder(R.mipmap.img_load_fail).error(R.mipmap.img_load_fail).into(imageView); + } else {//自适应高度 + Glide.with(getApplicationContext()).asBitmap().load(imagePath) + .placeholder(R.mipmap.img_load_fail).error(R.mipmap.img_load_fail).into(new TransformationScale(imageView)); + } + } + } + }); } private void initCrashReport() { diff --git a/app/src/main/java/com/sendtion/xrichtextdemo/comm/MyAppGlideModule.java b/app/src/main/java/com/sendtion/xrichtextdemo/comm/MyAppGlideModule.java new file mode 100644 index 0000000..d12881f --- /dev/null +++ b/app/src/main/java/com/sendtion/xrichtextdemo/comm/MyAppGlideModule.java @@ -0,0 +1,24 @@ +package com.sendtion.xrichtextdemo.comm; + +import android.content.Context; +import android.support.annotation.NonNull; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.Registry; +import com.bumptech.glide.annotation.GlideModule; +import com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader; +import com.bumptech.glide.load.model.GlideUrl; +import com.bumptech.glide.module.AppGlideModule; + +import java.io.InputStream; + +import okhttp3.OkHttpClient; + +@GlideModule +public final class MyAppGlideModule extends AppGlideModule { + @Override + public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { + OkHttpClient client = UnsafeOkHttpClient.getUnsafeOkHttpClient(); + registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(client)); + } +} diff --git a/app/src/main/java/com/sendtion/xrichtextdemo/comm/UnsafeOkHttpClient.java b/app/src/main/java/com/sendtion/xrichtextdemo/comm/UnsafeOkHttpClient.java new file mode 100644 index 0000000..365e5dc --- /dev/null +++ b/app/src/main/java/com/sendtion/xrichtextdemo/comm/UnsafeOkHttpClient.java @@ -0,0 +1,61 @@ +package com.sendtion.xrichtextdemo.comm; + +import java.security.cert.CertificateException; +import java.util.concurrent.TimeUnit; + +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSession; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; + +import okhttp3.OkHttpClient; + +/** + * 跳过HTTPs检测,能正常加载https图片 + */ +public class UnsafeOkHttpClient { + public static OkHttpClient getUnsafeOkHttpClient() { + try { + // Create a trust manager that does not validate certificate chains + final TrustManager[] trustAllCerts = new TrustManager[]{ + new X509TrustManager() { + @Override + public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return new java.security.cert.X509Certificate[]{}; + } + } + }; + + // Install the all-trusting trust manager + final SSLContext sslContext = SSLContext.getInstance("SSL"); + sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); + // Create an ssl socket factory with our all-trusting manager + final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); + + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + builder.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0]); + builder.hostnameVerifier(new HostnameVerifier() { + @Override + public boolean verify(String hostname, SSLSession session) { + return true; + } + }); + + builder.connectTimeout(20, TimeUnit.SECONDS); + builder.readTimeout(20,TimeUnit.SECONDS); + return builder.build(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/app/src/main/java/com/sendtion/xrichtextdemo/ui/MainActivity.java b/app/src/main/java/com/sendtion/xrichtextdemo/ui/MainActivity.java index 3060fa8..22ebb3e 100644 --- a/app/src/main/java/com/sendtion/xrichtextdemo/ui/MainActivity.java +++ b/app/src/main/java/com/sendtion/xrichtextdemo/ui/MainActivity.java @@ -49,19 +49,6 @@ private void initView() { Toolbar toolbar = findViewById(R.id.toolbar_main); setSupportActionBar(toolbar); - XRichText.getInstance().setImageLoader(new IImageLoader() { - @Override - public void loadImage(String imagePath, ImageView imageView, boolean centerCrop) { - if (centerCrop) { - Glide.with(MainActivity.this).asBitmap().load(imagePath).centerCrop() - .placeholder(R.mipmap.img_load_fail).error(R.mipmap.img_load_fail).into(imageView); - } else { - Glide.with(MainActivity.this).asBitmap().load(imagePath) - .placeholder(R.mipmap.img_load_fail).error(R.mipmap.img_load_fail).into(new TransformationScale(imageView)); - } - } - }); - noteDao = new NoteDao(this); RecyclerView rv_list_main = findViewById(R.id.rv_list_main); diff --git a/app/src/main/java/com/sendtion/xrichtextdemo/ui/NewActivity.java b/app/src/main/java/com/sendtion/xrichtextdemo/ui/NewActivity.java index 70cc1e4..e94f142 100644 --- a/app/src/main/java/com/sendtion/xrichtextdemo/ui/NewActivity.java +++ b/app/src/main/java/com/sendtion/xrichtextdemo/ui/NewActivity.java @@ -485,7 +485,9 @@ public void subscribe(ObservableEmitter emitter) { } // 测试插入网络图片 http://pics.sc.chinaz.com/files/pic/pic9/201904/zzpic17414.jpg - emitter.onNext("http://pics.sc.chinaz.com/files/pic/pic9/201903/zzpic16838.jpg"); + //emitter.onNext("http://pics.sc.chinaz.com/files/pic/pic9/201903/zzpic16838.jpg"); + emitter.onNext("http://b.zol-img.com.cn/sjbizhi/images/10/640x1136/1572123845476.jpg"); + emitter.onNext("https://img.ivsky.com/img/tupian/pre/201903/24/richu_riluo-013.jpg"); emitter.onComplete(); }catch (Exception e){ @@ -521,7 +523,7 @@ public void onSubscribe(Disposable d) { @Override public void onNext(String imagePath) { - et_new_content.insertImage(imagePath, et_new_content.getMeasuredWidth()); + et_new_content.insertImage(imagePath); } }); } diff --git a/build.gradle b/build.gradle index 0645352..e55c8ed 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,9 @@ buildscript { repositories { google() - jcenter() - //mavenCentral() - //maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'} + //jcenter() + mavenCentral() + maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'} } dependencies { classpath 'com.android.tools.build:gradle:3.1.2' @@ -23,9 +23,9 @@ buildscript { allprojects { repositories { google() - jcenter() - //mavenCentral() - //maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'} + //jcenter() + mavenCentral() + maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'} maven { url 'https://jitpack.io' } } } diff --git a/xrichtext/build.gradle b/xrichtext/build.gradle index ed61447..299f32d 100644 --- a/xrichtext/build.gradle +++ b/xrichtext/build.gradle @@ -7,8 +7,8 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 22 - versionCode 12 - versionName "1.9.2" + versionCode 14 + versionName "1.9.4" } buildTypes { diff --git a/xrichtext/src/main/java/com/sendtion/xrichtext/IImageLoader.java b/xrichtext/src/main/java/com/sendtion/xrichtext/IImageLoader.java index 90adac6..882ca9f 100644 --- a/xrichtext/src/main/java/com/sendtion/xrichtext/IImageLoader.java +++ b/xrichtext/src/main/java/com/sendtion/xrichtext/IImageLoader.java @@ -3,5 +3,5 @@ import android.widget.ImageView; public interface IImageLoader { - void loadImage(String imagePath, ImageView imageView, boolean centerCrop); + void loadImage(String imagePath, ImageView imageView, int imageHeight); } diff --git a/xrichtext/src/main/java/com/sendtion/xrichtext/RichTextEditor.java b/xrichtext/src/main/java/com/sendtion/xrichtext/RichTextEditor.java index eafc538..2e002b5 100644 --- a/xrichtext/src/main/java/com/sendtion/xrichtext/RichTextEditor.java +++ b/xrichtext/src/main/java/com/sendtion/xrichtext/RichTextEditor.java @@ -7,6 +7,8 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.TextUtils; @@ -303,21 +305,10 @@ private RelativeLayout createImageLayout() { return layout; } - /** - * 根据绝对路径添加view - */ - public void insertImage(String imagePath, int width) { - if (TextUtils.isEmpty(imagePath)){ - return; - } - Bitmap bmp = getScaledBitmap(imagePath, width); - insertImage(bmp, imagePath); - } - /** * 插入一张图片 */ - public void insertImage(Bitmap bitmap, String imagePath) { + public void insertImage(String imagePath) { //bitmap == null时,可能是网络图片,不能做限制 if (TextUtils.isEmpty(imagePath)){ return; @@ -333,16 +324,16 @@ public void insertImage(Bitmap bitmap, String imagePath) { if (lastEditStr.length() == 0) { //如果当前获取焦点的EditText为空,直接在EditText下方插入图片,并且插入空的EditText addEditTextAtIndex(lastEditIndex + 1, ""); - addImageViewAtIndex(lastEditIndex + 1, bitmap, imagePath); + addImageViewAtIndex(lastEditIndex + 1, imagePath); } else if (editStr1.length() == 0) { //如果光标已经顶在了editText的最前面,则直接插入图片,并且EditText下移即可 - addImageViewAtIndex(lastEditIndex, bitmap, imagePath); + addImageViewAtIndex(lastEditIndex, imagePath); //同时插入一个空的EditText,防止插入多张图片无法写文字 addEditTextAtIndex(lastEditIndex + 1, ""); } else if (editStr2.length() == 0) { // 如果光标已经顶在了editText的最末端,则需要添加新的imageView和EditText addEditTextAtIndex(lastEditIndex + 1, ""); - addImageViewAtIndex(lastEditIndex + 1, bitmap, imagePath); + addImageViewAtIndex(lastEditIndex + 1, imagePath); } else { //如果光标已经顶在了editText的最中间,则需要分割字符串,分割成两个EditText,并在两个EditText中间插入图片 //把光标前面的字符串保留,设置给当前获得焦点的EditText(此为分割出来的第一个EditText) @@ -352,7 +343,7 @@ public void insertImage(Bitmap bitmap, String imagePath) { //在第二个EditText的位置插入一个空的EditText,以便连续插入多张图片时,有空间写文字,第二个EditText下移 addEditTextAtIndex(lastEditIndex + 1, ""); //在空的EditText的位置插入图片布局,空的EditText下移 - addImageViewAtIndex(lastEditIndex + 1, bitmap, imagePath); + addImageViewAtIndex(lastEditIndex + 1, imagePath); } hideKeyBoard(); } catch (Exception e) { @@ -431,56 +422,6 @@ public void addEditTextAtIndex(final int index, CharSequence editStr) { } } - /** - * 在特定位置添加ImageView - */ - public void addImageViewAtIndex(final int index, Bitmap bmp, String imagePath) { - //bitmap == null时,可能是网络图片,不能做限制 - if (TextUtils.isEmpty(imagePath)){ - return; - } - try { - imagePaths.add(imagePath); - final RelativeLayout imageLayout = createImageLayout(); - DataImageView imageView = imageLayout.findViewById(R.id.edit_imageView); - imageView.setAbsolutePath(imagePath); - imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);//裁剪剧中 - XRichText.getInstance().loadImage(imagePath, imageView, true); - - // 调整imageView的高度,根据宽度等比获得高度 - int imageHeight ; //解决连续加载多张图片导致后续图片都跟第一张高度相同的问题 - if (rtImageHeight > 0) { - imageHeight = rtImageHeight; - } else { - int layoutWidth = allLayout.getWidth() - allLayout.getPaddingLeft() - allLayout.getPaddingRight(); - imageHeight = layoutWidth * bmp.getHeight() / bmp.getWidth(); - //imageHeight = allLayout.getWidth() * bmp.getHeight() / bmp.getWidth(); - } - //int imageHeight = allLayout.getWidth() * bmp.getHeight() / bmp.getWidth(); - RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( - LayoutParams.MATCH_PARENT, imageHeight);//TODO 固定图片高度500,考虑自定义属性 - lp.bottomMargin = rtImageBottom; - imageView.setLayoutParams(lp); - - if (rtImageHeight > 0){ - XRichText.getInstance().loadImage(imagePath, imageView, true); - } else { - XRichText.getInstance().loadImage(imagePath, imageView, false); - } - - // onActivityResult无法触发动画,此处post处理 - allLayout.addView(imageLayout, index); -// allLayout.postDelayed(new Runnable() { -// @Override -// public void run() { -// allLayout.addView(imageLayout, index); -// } -// }, 200); - } catch (Exception e) { - e.printStackTrace(); - } - } - /** * 在特定位置添加ImageView */ @@ -493,29 +434,29 @@ public void addImageViewAtIndex(final int index, final String imagePath) { final RelativeLayout imageLayout = createImageLayout(); DataImageView imageView = imageLayout.findViewById(R.id.edit_imageView); imageView.setAbsolutePath(imagePath); - imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);//裁剪剧中 - XRichText.getInstance().loadImage(imagePath, imageView, true); - - // 调整imageView的高度,根据宽度等比获得高度 - int imageHeight ; //解决连续加载多张图片导致后续图片都跟第一张高度相同的问题 - if (rtImageHeight > 0) { - imageHeight = rtImageHeight; - } else { - Bitmap bmp = BitmapFactory.decodeFile(imagePath); - int layoutWidth = allLayout.getWidth() - allLayout.getPaddingLeft() - allLayout.getPaddingRight(); - imageHeight = layoutWidth * bmp.getHeight() / bmp.getWidth(); - //imageHeight = allLayout.getWidth() * bmp.getHeight() / bmp.getWidth(); - } - RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( - LayoutParams.MATCH_PARENT, imageHeight);//固定图片高度,记得设置裁剪剧中 - lp.bottomMargin = rtImageBottom; - imageView.setLayoutParams(lp); - - if (rtImageHeight > 0){ - XRichText.getInstance().loadImage(imagePath, imageView, true); - } else { - XRichText.getInstance().loadImage(imagePath, imageView, false); - } + //imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);//裁剪剧中 + XRichText.getInstance().loadImage(imagePath, imageView, rtImageHeight); + +// // 调整imageView的高度,根据宽度等比获得高度 +// int imageHeight ; //解决连续加载多张图片导致后续图片都跟第一张高度相同的问题 +// if (rtImageHeight > 0) { +// imageHeight = rtImageHeight; +// } else { +// Bitmap bmp = BitmapFactory.decodeFile(imagePath); +// int layoutWidth = allLayout.getWidth() - allLayout.getPaddingLeft() - allLayout.getPaddingRight(); +// imageHeight = layoutWidth * bmp.getHeight() / bmp.getWidth(); +// //imageHeight = allLayout.getWidth() * bmp.getHeight() / bmp.getWidth(); +// } +// RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( +// LayoutParams.MATCH_PARENT, imageHeight);//固定图片高度,记得设置裁剪剧中 +// lp.bottomMargin = rtImageBottom; +// imageView.setLayoutParams(lp); +// +// if (rtImageHeight > 0){ +// XRichText.getInstance().loadImage(imagePath, imageView, true); +// } else { +// XRichText.getInstance().loadImage(imagePath, imageView, false); +// } // onActivityResult无法触发动画,此处post处理 allLayout.addView(imageLayout, index); diff --git a/xrichtext/src/main/java/com/sendtion/xrichtext/RichTextView.java b/xrichtext/src/main/java/com/sendtion/xrichtext/RichTextView.java index 0a3347f..5c49c0d 100644 --- a/xrichtext/src/main/java/com/sendtion/xrichtext/RichTextView.java +++ b/xrichtext/src/main/java/com/sendtion/xrichtext/RichTextView.java @@ -108,13 +108,6 @@ public void onClick(View v) { if (onRtImageClickListener != null){ onRtImageClickListener.onRtImageClick(imageView, imageView.getAbsolutePath()); } - - //点击图片预览 -// PhotoPreview.builder() -// .setPhotos(imagePaths) -// .setCurrentItem(currentItem) -// .setShowDeleteButton(false) -// .start(activity); } } }; @@ -253,11 +246,12 @@ public void addImageViewAtIndex(final int index, final String imagePath) { final DataImageView imageView = imageLayout.findViewById(R.id.edit_imageView); imageView.setAbsolutePath(imagePath); - if (rtImageHeight > 0) { - XRichText.getInstance().loadImage(imagePath, imageView, true); - } else { - XRichText.getInstance().loadImage(imagePath, imageView, false); - } +// if (rtImageHeight > 0) { +// XRichText.getInstance().loadImage(imagePath, imageView, true); +// } else { +// XRichText.getInstance().loadImage(imagePath, imageView, false); +// } + XRichText.getInstance().loadImage(imagePath, imageView, rtImageHeight); // onActivityResult无法触发动画,此处post处理 allLayout.addView(imageLayout, index); diff --git a/xrichtext/src/main/java/com/sendtion/xrichtext/XRichText.java b/xrichtext/src/main/java/com/sendtion/xrichtext/XRichText.java index e41df91..ee6393e 100644 --- a/xrichtext/src/main/java/com/sendtion/xrichtext/XRichText.java +++ b/xrichtext/src/main/java/com/sendtion/xrichtext/XRichText.java @@ -21,9 +21,9 @@ public void setImageLoader(IImageLoader imageLoader){ this.imageLoader = imageLoader; } - public void loadImage(String imagePath, ImageView imageView, boolean centerCrop){ + public void loadImage(String imagePath, ImageView imageView, int imageHeight){ if (imageLoader != null){ - imageLoader.loadImage(imagePath, imageView, centerCrop); + imageLoader.loadImage(imagePath, imageView, imageHeight); } } } diff --git a/xrichtext/src/main/res/drawable-xxhdpi/img_load_fail.png b/xrichtext/src/main/res/drawable-xxhdpi/img_load_fail.png new file mode 100644 index 0000000000000000000000000000000000000000..a0a008df7c40fa3103f66b510357b600c661daf3 GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^86eC7Bp58pU)3@&FgkgNcJ(lr z{#$YV_Y}UJuXk}QthT%zx+**QnaBCB>+OrDFEi>0eh@i9rpba+vp_IwuEoss#sz$- zVjQp1T<6Vmyu0=!ljC$VewL{|0@k5UnhL_XN0~pDu1I;+D6RHqvk% + android:layout_height="wrap_content"> + android:minHeight="200dp" + android:src="@drawable/img_load_fail" /> \ No newline at end of file