Android WebView中显示一张或多张图片

最近须要在平板中显示多张图片,调查了下,决定用WebView(说实话,我还不清楚有没有其余android控件可以显示多张图片的。。。。。), 主要是用HTML的img来显示多张图片。html

google百度一通后,实现了多张图片的显示,出来的效果还错。android

仍是本身总结一下,看别人东一点,西一点的博客仍是比较费解(有时候我真的是很反感看这些博客,东抄一点,西抄一点,到最后也没说问题怎么解决的。。。。。)。web

首先,在android xml增长WebView控件,以下:ide

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <WebView
        android:id="@+id/webView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    />
    <ImageButton
        android:id="@+id/btn_close"
        android:layout_width="@dimen/dip30"
        android:layout_height="@dimen/dip30"
        android:layout_gravity="top|right"
        android:layout_marginRight="@dimen/dip5"
        android:background="@drawable/close" />
</FrameLayout>

很简单,增长了WebView,关闭按钮,接下来就是在代码中调用了,以下:函数

private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.webview_sample);
        webView = (WebView)findViewById(R.id.webView);        

        // 设置属性
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setSupportZoom(true);  // 支持缩放
        settings.setBuiltInZoomControls(true);  // 显示缩放控件
        settings.setUseWideViewPort(true);  // 让图片自适应屏幕
        settings.setLoadWithOverviewMode(true);// 支持双击放大和缩小
settings.setDefaultZoom(ZoomDensity.FAR);
settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); // 让网页的内容呈单列显示
settings.setRenderPriority(RenderPriority.HIGH); // 加速显示图片

     // 让图片居中

         DisplayMetrics displaymetrics = new DisplayMetrics();
         getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
         int currentHeight = displaymetrics.heightPixels;
         int currentWidth = displaymetrics.widthPixels;ui

         Bitmap bitmapOfImageBitmap = BitmapFactory.decodeFile("/sdcard/sample.png");google

       String imageString = "<img src=\"" + "sample.png" + "\" vspace=" + (currentHeight - bitmapOfImageBitmap.getWidth()) / 2 + 

          " hspace=" + (currentWidth - bitmapOfImageBitmap.getHeight()) / 2 + " />";  // 没错,就是width-heightspa

 

 webView.loadDataWithBaseURL("file:///sdcard/", "<html><center>" + imageString + "</html>", "text/html", "utf-8", ""); ImageButton closeBtn = (ImageButton) findViewById(R.id.btn_close); closeBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); super.onCreate(savedInstanceState); } 

 主要是用WebView的loadDataWithBaseURL函数,若是有多张图片,只需在多加几个<img src="sample1.png" />就能够了。code

我这边显示的是SD卡中的图片,若是你想显示项目中的文件,那么能够修改如下语句:xml

Bitmap bitmapOfImageBitmap = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.sample);

String imagePath = Uri.parse("android.resource://com.mypackagename/"+ R.drawable.sample).toString();

webView.loadDataWithBaseURL(null,
"<html><center>" + imagePath + "</html>",
"text/html",
"utf-8",
"");

注意:因为时间,上面那句 loadDataWithBaseURL(null, ...)本人不曾亲自验证,欢迎各位看官反馈。

相关文章
相关标签/搜索