2012-05-23 5 views
0

javascript를 사용하여 webview에서 이미지를 추가하는 가장 간단한 방법을 찾으려고했습니다. 나는 나 자신을 HTML을 쓰고 같은 것을보고 내 자신의 기능을 포함 :android webview에서 이미지 추가 시도

<script type="text/javascript"> 

function image(src) { 
    var img = document.createElement("IMG"); 
    img.src = src; 
    document.getElementById('image').appendChild(img); 
} 
</script> 

난 그냥 myview.loadurl 사용하지 못할 것을 알아 냈다 (자바 스크립트 : 이미지 ('line1.png를')); 그래서 내가 어떻게 할 수 있는지 알아 내려고 노력 중입니다. 나는이 함수를 loadurl()에 들어갈 수있는 한 줄의 코드로 이관하는 것에 대해 생각하고 있었지만, 나는 그 주변에서도 오류가 발생하는 것 같다. 필자는 addJavascriptInterface를 사용하는 것에 대해 들었지만 복잡한 것으로 보이고 그것이 원하는대로 맞는지 확실하지 않습니다. 그래서 최선의 행동 방침은 무엇입니까?

답변

2

너무 간단합니다.

<body onload="getimage()" > 

이 더 많은 이미지를 전달하려면

<script type="text/javascript"> 
function getimage() 
{ 
    Android.ProcessJavaScript("image",null); 
} 

function image(src) { 
    var img = document.createElement("IMG"); 
    img.src = src; 
    document.getElementById('image').appendChild(img); 
} 
</script> 

하고 다음을 추가 : 다음

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.webkit.WebView; 

public class StackOverFlowActivity extends Activity { 

    private Handler mHandler = new Handler(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     WebView view=(WebView)findViewById(R.id.webView1); 
     view.getSettings().setJavaScriptEnabled(true); 
     view.loadUrl("file:///android_asset/index.html"); 
     view.addJavascriptInterface(new MyJavaScriptInterface(), "Android"); 
    } 

    final class MyJavaScriptInterface 
    { 
     public void ProcessJavaScript(final String scriptname, final String args) 
      {    
       mHandler.post(new Runnable() 
        { 
         public void run() 
          { 
        String url="file:///android_asset/img.jpg"; 
           webview.loadUrl("javascript:image(\""+url+"\")"); 
          } 
        }); 
      } 
    } 
} 

index.html을 시도

function image(src) { 

     //var img = document.createElement("IMG"); 
     //img.src = src; 
     // document.getElementById('image').appendChild(img); 
      images = eval('(' + src+ ')'); 
      for (i = 0; i < images.length; i++) {  
      var img = document.createElement("IMG"); 
      img.src = images[i];    
       document.getElementById('image').appendChild(img); 
      } 
    } 

하고 싶어서

final class MyJavaScriptInterface 
     { 
      public void ProcessJavaScript(final String scriptname, final String args) 
       {    
        mHandler.post(new Runnable() 
         { 
          public void run() 
           { 
         //String url="file:///android_asset/img.jpg"; 
            //webview.loadUrl("javascript:image(\""+url+"\")"); 
            ArrayList<String> url=new ArrayList<String>(); 
            url.add("file:///android_asset/img1.jpg"); 
            url.add("file:///android_asset/img2.jpg"); 
            url.add("file:///android_asset/img3.jpg"); 
            webview.loadUrl("javascript:image(\""+url+"\")"); 
           } 
         }); 
       } 
     } 

같은 부하 URL에 대신 문자열의의 문자열 배열이 이미지 스크립트 호출하려면 더 시간 :

final class MyJavaScriptInterface 
      { 
       public void ProcessJavaScript(final String scriptname, final String args) 
        {    
         mHandler.post(new Runnable() 
          { 
           public void run() 
            { 
             // you can load url anywhere in this application. check below to call this inside the other function. 
             callimageFirstTime(scriptname,args); 
            // check below to loadurl in other class Test.java 
             Test newtest=new Test(); 
             newtest.methodtoloadurl(scriptname,args); 
            } 
          }); 
        } 
      } 

public void callimageFirstTime(String script, String arguments) 
{ 
    // add images with String array and pass here 
    webview.loadUrl("javascript:image(\""+url+"\")"); 

} 
+0

이 꽤 도움이되었다하지만 난 함수 이미지 multipule 시간을 사용하여 호출 할 수 있습니다 당신은 어떻게 설명 할 수 내 onCreate 메소드에서. 지금 당장 당신이 제공 한 코드는 img.jpg를 한번로드 할 것입니다, 그러나 나는 마킹이있는 영사 스크린처럼 서로의 ontop 다중 이미지를 쌓고 싶습니다. –

+0

더 많은 이미지를 전달하려면 문자열 대신 문자열 배열을 사용할 수 있습니다. – Ponmalar

+0

고맙습니다. –

관련 문제