在一个开源项目看到是用的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

Android 图文混排 通过webview实现并实现点击图片相关推荐

  1. android 点击图片事件,android图文混排点击事件

    图文混排顾名思义就是把文字和图片混合排列在一起,比较简单的需求我们也可以通过TextView和ImageView配合使用来达到目的,但是遇到稍微复杂一些的情况这种方法就不适用了. 做这样一个按钮: 对 ...

  2. android多媒体图文混排,android图文混排

    背景 最近我们的产品来了个新的模块,给学生做题提高成绩的.需求如下: 支持单选.多选.填空题 支持图片文字混排 输入框有交互,排版精致美观 为了体验优化,不能使用网页实现效果 思路分析 我们的图文混排 ...

  3. Android图文混排-实现EditText图文混合插入上传

    前段时间做了一个Android会议管理系统,项目需求涉及到EditText的图文混排,如图: 在上图的"会议详情"中,需要支持文本和图片的混合插入,下图演示输入的示例: 当会议创建 ...

  4. Android图文混排(仿QQ空间评论)

    你知道TextView中可以"塞入"图片么? 之前项目需求,做一个类似QQ的点赞评论功能,效果图如下: 本文主要讲解评论这一块,至于点赞和表情帖,后续再说. 评论功能的介绍:评论内 ...

  5. RichEditeText——android图文混排富文本文章编辑器实现详解

    需求:android 实现富文本编辑器,并且实现html解析和生成. 功能点: 字体加粗,斜体,下划线,删除线 字体设置大小   默认大(18px),中(16px),小(14px) 字体设置颜色 换行 ...

  6. Android 图文混排 异步加载图片

    学习老罗课程的练习实例 1.原始json数据来自图灵机器人,URL为:http://www.tuling123.com/openapi/api?key=36082454b270b90d0900d251 ...

  7. Android-实现图文混排编辑

    RichTextX RichTextX一个帮助开发者实现Android图文混排编辑和显示的库. 开源地址:https://github.com/shine56/RichTextX 添加依赖 imple ...

  8. [Swift通天遁地]八、媒体与动画-(13)CoreText框架实现图文混排

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  9. Android使用HtmlTextView控件实现新闻详情图文混排

    在实现新闻详情的时候,安卓也有类似富文本的控件,但是使用webview或者textview等方法,每种方法各有优劣,不是很完美.今天给大家介绍一个安卓控件--HtmlTextView,实现详情页图文混 ...

最新文章

  1. 2021-2027年中国智能家居设备行业市场前瞻与投资策略规划报告
  2. 【Android 逆向】APK 文件格式 ( Android 应用安装 | Zip 文件格式 | 使用 Python 代码提取 APK 文件 )
  3. 击败谷歌AI拿下“最强”称号?Facebook AI开源聊天机器人Blender
  4. mysql文献综述_文献综述随笔(二十)
  5. 西南大学计算机与信息科学学院陈武,学院副院长——陈武 - 计算机与信息科学学院 - Powered by 西南大学...
  6. 麒麟操作系统|Linux下低延时RTMP|RTSP直播播放实现
  7. C/C++函数指针与回调函数总结(函数指针数组)
  8. Simulink框图和S-函数
  9. 2014蓝桥杯C++B:啤酒和饮料;切面条(思维分析)
  10. 解决QT编程出现 C2001错误
  11. 夏梦竹谈Hive vs. HBase的区别
  12. django 轮播图上传_拼多多规则更新:关于【商品轮播图】你所不知道的秘密!...
  13. Swift - 图片去色 图片灰色显示
  14. RFID医疗耗材柜管理系统-高值耗材管理系统-杭州东识科技
  15. Oracle sysman.mgmt_jobs导致数据库自动重启
  16. 【DB笔试面试1-100】
  17. Runtime error常见原因总结(各种oj,vjudge等等吧)
  18. python文件比较,判断两个文件是否相同
  19. 工具党如何干掉某讯手游的反修改器功能
  20. 值得重点推荐的BI软件有哪些?全在这里了

热门文章

  1. python 逗号作用 语句间_Python 逗号的几种作用
  2. 蓝桥杯--算法入门级题目及答案解析
  3. 数学--数论--快速幂--最大公约数--位运算模板
  4. 学习笔记【2010/09/20-2010/11/27】
  5. 机器学习 深度学习 ai_人工智能,机器学习,深度学习-特征和差异
  6. 6月15日起,刷卡机不能自选商户了,这样会有多少卡被封掉?
  7. 在县城投资买一辆出租车,一个月能收入多少钱?
  8. 经典的卷积神经网络简介
  9. a.out、coff、elf三种文件格式
  10. matlab数组存字符串,MATLAB字符串数组存储为CSV格式