Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android---文本中縮略圖點擊彈出大圖效果實現

Android---文本中縮略圖點擊彈出大圖效果實現

編輯:Android開發實例

首先來張效果圖,沒有經過美工處理的 實現基本功能

其實做這個項目復習了很多內容,將之前單個項目中用到的某些功能綜合到一起了,例如1、自定義標題欄2、Java和JavaScript的互調3、Activity實現仿Dialog樣式4、多線程實現考試倒計時5、退出Activity時保存配置信息(考試剩余時間)6、熟悉UI布局

上面這些效果中,講講通過Java和JavaScript互調實現點擊文本中縮略圖彈出一個大圖。

最開始想實現這種效果的時候就想到了TextView控件,因為TextView通過Html這個類可以在文本中插入圖片。但是有個問題困擾著我,一個文本中的圖片個數是不確定的,我怎樣在一個TextView中添加多個圖片(這個好解,通過TextView的append方法可以拼接任意張,因為這裡的縮略圖都是相同的,但這卻無法定位我點擊了那個縮略圖,應該彈出那個大圖)。最後實在沒辦法,我想到了WebView這個控件,通過它加載一個本地html頁面,在其中通過給<image />對象添加onclick事件,傳遞一個imgSrc參數給Java方法,透過Java方法打開一個Activity來顯示圖片,ok,整個要實現的效果就完成了。So Easy,雖然最後實現這個效果沒多少代碼,但是從TextView這個控件一路走來到WebView,也耗費了將近一天的功夫,但是這個過程卻非常值得享受,喔,我又懂得了更多。

下面通過代碼一步一步來解析:首先是准備asset中的本地html文件。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body onload="window.JsUseJave.onLoad()">
Write a recount for your newsletter using the notes given _____
<a onClick='setIv("/sdcard/IMG001.png")' > <img id="ig"/></a>
<script language="javascript">
function load(src){
document.getElementById('ig').src=src;
}

function setIv(src){
window.JsUseJave.setImgSrc(src)
}
</script>
</body>
</html>

1、最開始的時候是想在進入Activity的時候就自動加載圖片

wv.loadUrl("javascript:load('"+imgSrc+"'");

,但是發現一個問題在body的onload()中直接調用js:load(src)方法並沒有執行。沒辦法只能用通過點擊按鈕給圖片加載資源。後來突然想到可以JavaScript和Java互調,就把這一步添加到JavaScriptInterface類中,這個類要自己定義

 

    final class JsUseJaveInterface{
public void setImgSrc(String imgSrc){
Intent intent =new Intent(E6.this,ImageShow.class);
Bundle bundle=new Bundle();
bundle.putString("imgSrc", imgSrc);
intent.putExtras(bundle);
startActivity(intent);
}

//登錄加載圖片
public void onLoad(){
wv.loadUrl("javascript:load('"+src+"')");
}
}

 

設置JavaScript可調用Java

 

        wv.addJavascriptInterface(new JsUseJaveInterface(), "JsUseJave");

 

在html文件body的onload事件中通過java轉一步調用javascript方法中的load(src)事件。這樣就能在加載Activity的時候將縮略圖同時顯示出來了。

2、有了前面的經驗,點擊縮略圖彈出大圖就好實現了。給<image/>添加點擊事件間接的去調用Java中的一個方法重新打開一個Activity顯示大圖,就是上面的自定義的JsUseJavaInteface中的setImgSrc()方法。

**js調用Java中方法:window.JsUseJave.onLoad(),JsUseJave是wv.addJavascriptInterface(new JsUseJaveInterface(), "JsUseJave");中的別名,onLoad()則是JsUseJaveInterface這個類中定義的一個方法。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved