如果要显示普通的图片,现在的显示图片框架主要有Glide,Picasso,Fresco,还有已经停止维护更新的 Image Loader。之前项目中遇到要显示一个长图(宽高比远大于普通手机的宽高比),而且需要宽度适应手机宽度。发现按照普通的图片显示,用第三方图片框架无论怎样都达不到效果。如果要适应手机宽度,不能压缩或者拉伸图片的话,只能显示部分图片,长于手机屏幕的部分会被截取。如果要适应手机宽度,又要全部显示图片,只能压缩图片。如果不能压缩或者拉伸图片,又要全部显示图片,那么适应不了手机宽度。
看来,要实现图片适应手机宽度,不能压缩或者拉伸图片,又要全部显示图片,这个效果实现不了了。我折腾了很久,后面想到webview不是也可以显示图片吗?而且它可以上下滑动,图片多长都能显示出来。于是我尝试了一下。
1.布局定义一个webview:
<WebView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/myweb_view" />
2.在activity上实现代码:
WebView myWebView=this.findViewById(R.id.myweb_view); //拼接了部分代码组成html url=图片的链接; String headhtml="<p><img src=\""; String foothtml="\"/></p>"; String htmlstr=headhtml+url+foothtml; htmlstr = htmlstr.replaceAll("<img", "<img width=\"100%\"");//保证图片宽度适应手机 myWebView.loadDataWithBaseURL(null, "<html><body>" + htmlstr + "</body></html>", "text/html", "utf-8", null);
3.最后,达到我想要的效果:长图适应手机宽度,不拉伸或者压缩图片,能显示全部图片,上下滑动即可。