Android 图文混排 通过webview实现并实现点击图片

在一个开源项目看到是用的webview 实现的
1. 这是在asset中的一个模板html

 

<html>  <head>  <title>News Detail</title>  <meta name="viewport" content="width=device-width, minimum-scale=0.5, initial-scale=1.2, maximum-scale=2.0, user-scalable=1" />  <link rel="stylesheet" type="text/css" href="css.css" />  </head>  <body>  <div id="header">  <h3>  #title#  </h3>  <div class="date">#time#</div>  </div>  <div id="content">  #content#  </div>  </body>  
</html>  

 

2.模板的css

 

body {  font-family: Helvetica, "Microsoft Yahei", Verdana, Helvetica, SimSun,  Arial, "Arial Unicode MS", MingLiu, PMingLiu, "MS Gothic", sans-serief;  margin: 0;  padding: 0 8px;  background-color: #efeff0;  color: #333;  word-wrap: break-word;  
}  p {  margin-top: 0;  margin-bottom: 5pt;  line-height: 1.6em;  
}  #header {  text-align: center;  background: transparent url('webBgLine.png') repeat-x scroll center  bottom;  padding-top: 6pt;  margin-bottom: 5pt;  -webkit-background-size: 320px 2px;  
}  #header h3 {  margin-bottom: 0px;  margin-top: 5px;  font-size: 16pt;  padding: 0 5pt;  color: #464646;  line-height: 1.3em;  
}  .date {  color: #8e8e8e;  font-size: 12pt;  padding: 8pt 0;  
}  #content {  font-size: 14pt;  line-height: 1.8;  
}  img {  max-width: 310px;  height: auto;  
}  div.bimg {  text-align: center;  padding: 0;  
}  .photo_title {  font-weight: bold;  font-size: 16pt;  margin-top: 15px;  
}  .langs_cn {  color: #006200;  
}  audio {  width: 100%  
}  * {  -webkit-touch-callout: none;  /* prevent callout to copy image, etc when tap to hold */  /*-webkit-text-size-adjust: none;*/  /* prevent webkit from resizing text to fit */  -webkit-tap-highlight-color: rgba(0, 0, 0, 0.15);  /* make transparent link selection, adjust last value opacity 0 to 1.0 */  /*-webkit-user-select: none; /* prevent copy paste, to allow, change 'none' to 'text' */  
}  @media screen and (-webkit-device-pixel-ratio: 2) {  #header {  background-image: transparent url('webBgLine@2x.png') repeat-x scroll  center bottom;  -webkit-background-size: 320px 1px;  }  
}  

 

3.测试的一个html文件 将来会在网络中获取

主要的代码

 

package com.su.imagetextview;  import java.io.IOException;  
import java.io.InputStream;  import android.app.Activity;  
import android.content.res.AssetManager;  
import android.os.Bundle;  
import android.util.Log;  
import android.view.GestureDetector.OnGestureListener;  
import android.view.MotionEvent;  
import android.view.View;  
import android.view.View.OnLongClickListener;  
import android.view.View.OnTouchListener;  
import android.webkit.WebSettings;  
import android.webkit.WebView;  
import android.webkit.WebView.HitTestResult;  
import android.widget.Toast;  public class WebViewActitivy extends Activity {  private String TAG = "WebViewActitivy";  private WebView webView;  @Override  protected void onCreate(Bundle savedInstanceState) {  setContentView(R.layout.webview);  super.onCreate(savedInstanceState);  webView = (WebView) findViewById(R.id.news_body_webview_content);  webView.getSettings().setDefaultTextEncodingName("utf-8");// 避免中文乱码  webView.addJavascriptInterface(this, "javatojs");  webView.setScrollBarStyle(0);  WebSettings webSetting = webView.getSettings();  webSetting.setJavaScriptEnabled(true);  webSetting.setNeedInitialFocus(false);  webSetting.setSupportZoom(true);  webSetting.setCacheMode(WebSettings.LOAD_DEFAULT  | WebSettings.LOAD_CACHE_ELSE_NETWORK);  try {  // 读取来自assets的信息 实际操作 _newsContent 来自网络  String _newsContent = getStringFromAssets("test.html");  // 这是本地的html模板  String htmlContent = getStringFromAssets("NewsDetail.html");  // 替换文本  String newsInfo = "发表时间:" + "19901195" + " 查看:" + "255";  String newsTitle = "测试Html图文混排";  String LOCAL_PATH = "file:///android_asset/";// 本地html  // 替换信息加载到html模板中  
            webView.loadDataWithBaseURL(  LOCAL_PATH,  htmlContent.replace("#title#", newsTitle)  .replace("#time#", newsInfo)  .replace("#content#", _newsContent), "text/html",  "utf-8", null);  webView.setOnTouchListener(touchlistener);  /*** 长按获取图片地址可以进行放大保存等操作*/  webView.setOnLongClickListener(new OnLongClickListener() {  @Override  public boolean onLongClick(View v) {  HitTestResult hitTestResult = ((WebView) v)  .getHitTestResult();  if (hitTestResult.getType() == HitTestResult.IMAGE_TYPE  || hitTestResult.getType() == HitTestResult.IMAGE_ANCHOR_TYPE  || hitTestResult.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {  Log.e(TAG, "保存这个图片!"  + hitTestResult.getExtra().toString());  }  return true;  }  });  } catch (Exception e) {  // TODO: handle exception  
        }  }  /*** 只能通过实现这个方法来模拟点击 事件 直接点击没效果*/  private OnTouchListener touchlistener = new OnTouchListener() {  public boolean onTouch(View v, MotionEvent event) {  float x = 0, y = 0;  switch (event.getAction()) {  case MotionEvent.ACTION_DOWN:  x = (int) event.getRawX();  y = (int) event.getRawY();  break;  case MotionEvent.ACTION_UP:  if (x - event.getX() < 5 && y - event.getY() < 5) {  HitTestResult hitTestResult = ((WebView) v)  .getHitTestResult();  if (hitTestResult.getType() == HitTestResult.IMAGE_TYPE  || hitTestResult.getType() == HitTestResult.IMAGE_ANCHOR_TYPE  || hitTestResult.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {  Log.e(TAG, "保存这个图片!"  + hitTestResult.getExtra().toString());  Toast.makeText(  WebViewActitivy.this,  "保存这个图片!" + hitTestResult.getExtra().toString(),  10).show();  }  }  break;  }  return false;  }  };  String getStringFromAssets(String path) throws IOException {  AssetManager assetManager = getAssets();  InputStream inputStream = assetManager.open(path);  return inputStream2String(inputStream);  }  public static String inputStream2String(InputStream in) throws IOException {  StringBuffer out = new StringBuffer();  byte[] b = new byte[4096];  for (int n; (n = in.read(b)) != -1;) {  out.append(new String(b, 0, n));  }  return out.toString();  }  
}  

 

上图

代码:这里

 

转载于:https://www.cnblogs.com/zhujiabin/p/4206336.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机硬件选型报价,组装电脑硬件该怎么选择?这几个硬件要舍得花钱,千万别买错了!...

原标题&#xff1a;组装电脑硬件该怎么选择&#xff1f;这几个硬件要舍得花钱&#xff0c;千万别买错了&#xff01;组装电脑是多硬件组合的产物&#xff0c;每一个硬件对于电脑的性能都是有影响的&#xff0c;影响的大小与电脑的硬件有直接关系&#xff0c;有些硬件就要舍得花…

高级会计师计算机考试中级,会计师需要计算机等级考试吗

尘伴考证达人06-19TA获得超过671个赞[color#000][font宋体][size3][alignleft]广东省高级会计师评审职称外语&#xff0c;执行《关于调整完善我省职称外语政策的通知》(粤人发〔2018〕120号)[/align][alignleft]三、报考职称外语考试的等级要求[b][size3](一)申报高教、科研、卫…

一 手游开发工具cocos2d-x editor初识

可学习的demo&#xff1a; 7个实战项目 flappybird&#xff08;飞扬小鸟&#xff09;、popstar&#xff08;消灭星星&#xff09;、fruitninja&#xff08;水果忍者&#xff09;、2048&#xff08;数度消除&#xff09;。 moonwarriors&#xff08;月亮战神&#xff09;、frui…

Provisioning Services 7.6 入门到精通系列之七:创建虚拟磁盘

在上一章节完成了主目标设备的准备&#xff0c;今天将揭晓如何通过映像向导创建虚拟磁盘。1.1 点击开始菜单”映像向导”1.2 在映像向导点击”下一步“1.3 输入PVS服务器信息&#xff0c;下一步1.4 点击”新建虚拟磁盘”1.5 输入新虚拟磁盘的相关信息&#xff0c;下一步1.6 配置…

全国职业院校技能大赛软件测试题目,我校喜获2018全国职业院校技能大赛“软件测试”赛项一等奖...

九江职院新闻网讯(信息工程学院)5月31日&#xff0c;从2018全国职业院校技能大赛传来喜讯&#xff0c;由我校信息工程学院教师艾迪、朱虎平指导&#xff0c;学生郭星宏、赖闽、吴宗霖组成的竞赛团队&#xff0c;代表江西省在高职组“软件测试”赛项中荣获团体一等奖的佳绩。为积…

两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];...

转自&#xff1a;http://blog.csdn.net/shandianling/article/details/8785269 问题描述&#xff1a;两个数组a[N]&#xff0c;b[N]&#xff0c;其中A[N]的各个元素值已知&#xff0c;现给b[i]赋值&#xff0c;b[i] a[0]*a[1]*a[2]…*a[N-1]/a[i]&#xff1b; 要求&#xff1a…

利用VOIP电话通信服务,他骗得18亿美元

VoIP电话服务公司TelexFree的CEO詹姆斯梅里尔承认他的公司是一个不折不扣的&#xff0c;拥有18亿美元金字塔式的旁氏骗局公司。 没想到VOIP技术也能成为诈骗犯罪的“工具” 本周一&#xff0c;在美国马萨诸塞州的一个地方法院&#xff0c;詹姆斯梅里尔被认定有罪。并具有九项罪…

三相滤波器怎么接线_单相电机和三相电机怎么接线?为什么三相电机有3或6个接线柱?...

于电机接线柱的链接方法&#xff0c;下面整理了从单相和三相的接法及三个接线柱和六个接线柱的区别等知识&#xff0c;跟各位电工朋友分享&#xff0c;希望在实际操作中能帮到各位。单相电机一般是指用单相交流电源(AC220V)供电的小功率单相异步电动机。这种电机通常在定子上有…

Android源码编译全过程记录(基于最新安卓5.1.0)【转】

本文转载自&#xff1a;http://blog.csdn.net/drg1612/article/details/44802533 我的编译条件&#xff1a; 1 Ubuntu Kylin 14.04 长期支持版 下载地址 &#xff1a; http://www.ubuntu-china.cn/download 2 我的电脑是联想G470 i3处理器 内存4G&#xff0c;120g固体硬盘&…

第三方登录接入-qq,weibo-java

开发之前 需求&#xff1a;网站接入qq,sina微博登录&#xff0c;本文最后付效果图&#xff1a; 说明&#xff1a;大部分网站本身是需要用户概念的&#xff0c;很多操作依附于用户&#xff0c;而qq或微博作为一种登录方式指向用户而已&#xff0c;我参考了一下其他网站的做法&am…

python替换img的路径为新的路径_以“五智”为核心 南宁电信打造5G时代数字家庭新路径...

来源&#xff1a;通信信息报本报讯(特约记者 许辉坚)近日&#xff0c;中国电信广西南宁分公司在协助广西自治区通信管理局主办的“电信用户委员会体验活动”中&#xff0c;以发挥用户委员会的平台和纽带作用&#xff0c;促进持续改善电信服务质量为主题&#xff0c;以“五智”能…

0118——RTLabel和正则表达式

RTLabel和RegexKitLite都要导入第三方库 使用Regexkitlite库进行正则表达式的解析 1.库是使用MRR&#xff0c;如果在ARC工程里面使用这个类&#xff0c;必须在project->build phases->compile resources里面将regexKitLite.m的编译指令设为&#xff1a;-fno-objc-arc 2.需…

热带雨林绘画软件测试,儿童画教程|色彩练习与思维创想——好热闹的热带雨林!...

课程类型综合创意绘画课程参考课时90分钟工具材料勾线笔、水彩笔、卡纸课程构思小朋友们知道吗&#xff1f;热带雨林是地球上抵抗力和稳定性最高的生态系统&#xff0c;常年气候非常的炎热&#xff0c;雨量充沛&#xff0c;没有明显的季节差异&#xff0c;生物群落演替速度极快…

Linux命令行编辑快捷键

2019独角兽企业重金招聘Python工程师标准>>> ctrl ? 撤消前一次输入 ctrl c 另起一行 ctrl r 输入单词搜索历史命令 ctrl u 删除光标前面所有字符相当于VIM里d shift^ ctrl k 删除光标后面所有字符相当于VIM里d shift$ 删除 ctrl d 删除光标所在位置上的字符…

思科查看服务器启动配置文件,启动配置检查UCS

本文解释如何使用UCS将启动功能和命令迅速执行配置状态检查。UCS将启动功能允许用户迅速执行一粗略检查为了保证刀片适当地配置允许BIOS继续。意志启动配置检查是验证CPU和DIMM配置。此检查迅速帮助用户调试启动问题。思科UCS在意志启动配置检查提供几个工具帮助。这些工具包括…

lnmp下配置虚拟主机

一&#xff1a;首先熟悉几个命令 which php ---> which是通过 PATH环境变量到该路径内查找可执行文件&#xff0c;所以基本的功能是寻找可执行文件 whereis php ----> 将和php文件相关的文件都查找出来 service php-fpm/nginx/mysqld restart 重启服务 二&…

datazen Active Directory AD 配置

今天苦心经营的datazen 链接AD&#xff0c;文档已经无法吐槽了简单的几句话&#xff0c;根本不够用。 先说一下链接AD 的好处吧&#xff0c; 1 首先免去设置密码的麻烦&#xff0c;因为直接用AD账号的密码。 2 更安全&#xff0c;因为客户可不想自己的自己的系统&#xff0c;开…

Android CardView卡片布局 标签: 控件

CardView介绍 CardView是Android 5.0系统引入的控件&#xff0c;相当于FragmentLayout布局控件然后添加圆角及阴影的效果&#xff1b;CardView被包装为一种布局&#xff0c;并且经常在ListView和RecyclerView的Item布局中&#xff0c;作为一种容器使用。CardView应该被使用在显…

橱柜高度与身高对照表_下一套房子装修,橱柜就照这样打,布局尺寸这么详细,不信不好用...

闲在家的时候&#xff0c;动手给自己做一顿色香味俱全的美食&#xff0c;是一个享受的过程。享受的&#xff0c;不仅仅是味蕾的体验&#xff0c;择菜、洗菜、切菜、下锅...每一个环节都是。不过&#xff0c;这取决于你是否有一个好厨房&#xff1b;而厨房最最最重要的家具&…

.NET手记-JS获取Url参数

最近为App做活动专区&#xff0c;其中很多活动都是采用html 5页面来制作的。一方面体量较小&#xff0c;制作快速&#xff0c;更新维护容易&#xff1b;另一方面&#xff0c;嵌入App后适配效果也不会很差。 这里我们采用混编形式来从native app传参给web页面&#xff0c;我们采…