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,一经查实,立即删除!

相关文章

h5engine造轮子

基于学习的造轮子&#xff0c;这是一个最简单&#xff0c;最基础的一个canvas渲染引擎&#xff0c;通过这个引擎架构&#xff0c;可以很快的学习canvas渲染模式&#xff01; 地址&#xff1a;https://github.com/RichLiu1023/h5engine 这是一个比较有意思的h5渲染引擎&#xff…

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

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

2017 省赛选拨 想打架吗?算我一个!所有人,都过来!(3) 递推 斐波拉数列的应用...

想打架吗&#xff1f;算我一个&#xff01;所有人&#xff0c;都过来&#xff01;(3) Submit Page Summary Time Limit: 2 Sec Memory Limit: 128 Mb Submitted: 28 Solved: 9 Description 现在《炉石传说》这款卡牌游戏已经风靡全球。2015年加入环境的“…

UITableViewCell中cell重用机制导致内容重复的方法

UITableView继承自UIScrollview,是苹果为我们封装好的一个基于scroll的控件。上面主要是一个个的UITableViewCell,可以让UITableViewCell响应一些点击事件&#xff0c;也可以在UITableViewCell中加入UITextField或者UITextView等子视图&#xff0c;使得可以在cell上进行文字编辑…

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

尘伴考证达人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 配置…

在使用多表的查询显示的时候 建议使用视图

如果没有查询只是需要第一次显示的话用linq表达式就可以了&#xff0c;如果还涉及到查询的话&#xff0c;linq表达式就很麻烦了&#xff0c;我还不会。所以我们用视图做查询就方便很多了。转载于:https://www.cnblogs.com/woshijishu3/p/4207567.html

大型网站技术架构03

永无止境&#xff1a;网站的伸缩性架构 1. 所谓网站的伸缩性是指不需要改变网站的软硬件设计&#xff0c;仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务能力。 2. 网站架构的伸缩性设计&#xff1a; 1). 不同功能进行物理分离实现伸缩性&#xff1a;通过增加服务器…

全国职业院校技能大赛软件测试题目,我校喜获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…

protobuf---messge嵌套get set

package test_namespace;message ChildMsg {optional string child 1; }message FatherMsg {optional string father 1; optional ChildMsg child_msg 2; } 或者 message FatherMsg {optional string father 1; message ChildMsg {optional string child 1;}optiona…

南方科技大学计算机交换生,国际合作 – 合作交流分类 – 南方科技大学生物医学工程系...

2019年秋季学期本科生赴麻省理工交流学习项目申请须知本项目是根据南方科技大学与麻省理工签订的合作协议&#xff0c;约定我校每年将选派不超过6名学生前往麻省理工学院进行为期一年的交流学习&#xff0c;学生仅可在机械工程系内选择课程。本批次将选拔优秀本科生于2019-2010…

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

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

无锁的环形队列

#ifndef _RingQueue_H_ #define _RingQueue_H_ #include <memory.h> template<class T, unsigned int MAX_LEN 1024> class RingQueue { public://-----------------------------------------------------// 构造//---------------------------------------------…

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

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

天文望远镜(四)

买天文望远镜有段日子了&#xff0c;除了第一天到货时带着儿子体验了一回&#xff0c;后来由于接连雾霾&#xff0c;基本成了装饰。 儿子在这期间也提出要用望远镜&#xff0c;但都没有找到合适的机会&#xff0c;说到底还是有些主观原因。 昨天周末空气质量不错&#xff0c;站…

360计算机报名支付不了,为什么我的电脑使用360浏览器后无法登陆网...

2018-07-25 15:59龚崇松 客户经理若您在密码、验证码输入框遇到红色的小叉子等&#xff0c;则说明您的浏览器未成功下载我行的ActiveX安全控件&#xff0c;请您进行以下操作&#xff1a; (1)登录工行门户网站&#xff1b;(2)点击“个人网上银行登录”下方的“安装”。进入下一个…

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…