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

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

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

首先,在android xml增加WebView控件,如下:

<?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;

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

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

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

       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" />就可以了。

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

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, ...)本人未曾亲自验证,欢迎各位看官反馈。

Android WebView中显示一张或多张图片的更多相关文章

  1. Android WebView中的JavaScript代码使用

    在WebView中使用JavaScript 如果你想要载入的页面中用了JavaScript,你必须为你的WebView使能JavaScript. 一旦使能之后,你也可以自己创建接口在你的应用和Java ...

  2. [OpenCV笔记]0.OpenCV中显示多张图像

    摘要 本文主要介绍OpenCV中同时显示多张IplImage图像的方法(C++形式的多图显示需要修改,用vector<Mat>可能比较方便),有点类似MATLAB中的subplot,只是暂 ...

  3. web端生成的带有echarts图表的html页面,嵌入在(javaFx)webview中显示错位问题

    web项目需要嵌入到手机APP的webview里面以及 windows客户端应用(JavaFx)的webview里面,这个时候就出现了问题. echarts渲染的时候根据浏览器不同的内核显示是有区别的 ...

  4. Android Webview中解决H5的音视频不能自动播放的问题

    在开发webview的时候,当加载有声音的网页的时候,声音不会自动播放, 解决方法:在webview中调用js方法.这个方法需要在webview的setWebViewClient方法之后在onPage ...

  5. Android WebView中那些不得不解决的坑~~

    前面那张hybrid开发心得 有人问 怎么解决不用onJsPrompt 来回调js函数的问题.其实很简单,就是在在你的jscalljava回调函数内 另外开个线程去load js代码即可: wb.po ...

  6. android webview正确显示音标

    package com.example.fonttest; import android.support.v7.app.ActionBarActivity; import android.webkit ...

  7. Android webview中cookie增加/修改

    最近项目需求中,需要满足往webview传递cookie,而且cookie需要增加修改: public class MainActivity extends Activity { private We ...

  8. Android WebView中软键盘会遮挡输入框相关问题

    要想实现这样的软键盘出现的时候会自己主动把输入框的布局顶上去的效果,须要设置输入法的属性,有下面两种设置方式:     一.在java代码中设置例如以下:      getWindow().setSo ...

  9. Xamarin Android Webview中JS调用App中的C#方法

    参考链接:https://github.com/xamarin/recipes/tree/master/Recipes/android/controls/webview/call_csharp_fro ...

随机推荐

  1. ios-制作静态.a文件

    一.制作静态库文件 /*静态库制作*/ // MakeA.h -(NSString*)testA; // MakeA.m -(NSString*)testA{ return @"静态库测试成 ...

  2. C#中的集合类——ArrayList

    1.  ArrayList与数组 数组的长度不可变,元素的类型单一: ArrayList 实际上相当于一个可变长度的动态数组,由于集合中的元素都是object类型,元素的类型可以有多种了:与数组一样, ...

  3. [.net] c# webservice

    采用的工具VS2010生成工程 1. 生成webservice工程:建 ASP.NET 空WEB 应用程序. 2. 在建好的ASP.NET 空WEB应用程序中新建项“web 服务”. 完成上述内容工程 ...

  4. Cloudera Manager 5.9 和 CDH 5.9 离线安装指南及个人采坑填坑记

    公司的CDH早就装好了,一直想自己装一个玩玩,最近组了台电脑,笔记本就淘汰下来了,加上之前的,一共3台,就在X宝上买了CPU和内存升级了下笔记本,就自己组了个集群. 话说,好想去捡垃圾,捡台8核16线 ...

  5. jsp-3 简单的servlet连接mysql数据库 使用mvc的登录注册

    简单的servlet连接mysql数据库 使用mvc的登录注册 commons-dbutils-1.6 mysql-connector-java-5.1.40-bin c3p0-0.9.5.2 mch ...

  6. bzoj3504: [Cqoi2014]危桥 网络流

    一种网络流建图的思路吧,改天最好整理一波网络流建图思路 #include <bits/stdc++.h> using namespace std; int n,h,t,a1,a2,an,b ...

  7. action = "#" 是什么意思 在HTML语言中

    action = "#" 是form标签的属性,代表提交数据到本页,如:// 提交数据到a.aspx页面<form action="a.aspx"> ...

  8. 写一个MyList

    首先定义接口 using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...

  9. 自己写的一个jQuery轮播插件

    大概是四月初开始写的,中间停了有一个月吧.这是我在Github的第一个项目.项目地址:https://github.com/linzb93/jquery.slide.js. 轮播应该是最好写的插件了, ...

  10. Web框架——Django笔记

    Web框架--Django笔记 MVC和MTV MVC:Model.View.Controller MTV:Model.Template.View Django--MTV 1.创建Django程序   ...