编者:李国帅

​​

背景:

所需资源:android studio

做了一个activity界面,顶层使用ScrollView,内部包含图片。ScrollView滚动之后,图片需要点击两下才能打开全屏查看。

只能认为图片需要双击才能打开。

 

com.goyourfly.multi_picture.MultiPictureView 不行

更换为 ImageView 控件,发现还是会出现上下滚动之后,图像点击无法响应,需要再次点击的现象。

只能把图像缩小一点,减缓这种情况的出现。

 

即便是重新建立一个简单项目,发现滚动视图中的图片点击依然有问题。

重要结论:

通过测试,发现滚动之后,点击马上点击才会出现,如果点击等待2秒钟再去点击就可以正常了。

可能的原因是滚动之后程序还在内部执行,没有执行完毕,才会出现这样的问题。

也可能是手机运行效率的问题,其他的手机也许没有这个问题。

 

布局

<com.goyourfly.multi_picture.MultiPictureView

android:id="@+id/iv_professional_technical_qualifications"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_165"
android:layout_gravity="center"
android:src="@drawable/placeholder_aptitude"
app:imageLayoutMode="STATIC"
app:max="1"
app:ratio="1"
app:space="1dp"

app:span="1" />

文件处理

GlideEngine imageEngine = new GlideEngine();
MultiPictureView.setImageLoader((ImageLoader) (imageView, uri1) -> {
imageEngine.loadImage(getContext(), 512, 512, imageView, uri1);
});

Resources resources = this.getResources();//错误占位图片
int resIdError = R.drawable.placeholder_aptitude;
Uri uriError = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + resources.getResourcePackageName(resIdError) + '/' + resources.getResourceTypeName(resIdError) + '/' + resources.getResourceEntryName(resIdError));

if (TextUtils.isEmpty(XXXPractisingLicense)) {
contentBinding.tvXXXPractising.setText("证书(无)");

//contentBinding.ivXXXPractising.addItem(uri, false);
//contentBinding.ivXXXPractising.refresh();
} else {
contentBinding.tvXXXCertificate.setText("证书");
contentBinding.ivXXXCertificate.setItemClickCallback(((view, i, arrayList) -> {
SystemUtils.openFile(this, arrayList.get(i));
}));

new Thread(() -> {
Uri uri = GlideEngine.loadImage2(XXXCertificate, IMAGEDIR);//必须在普通线程
if (uri == null) {
uri = uriError;//setImageLoader中应当设置错误图片
}
contentBinding.ivXXXCertificate.addItem(uri, false);
runOnUiThread(() -> contentBinding.ivXXXCertificate.refresh());
}).start();
}