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.pswp.cn/news/257809.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257809.shtml
英文地址,請注明出處:http://en.pswp.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…