直播帶貨小程式原始碼中,商品詳情頁是如何獲取html圖片的

萬嶽教育系統發表於2020-07-30

在搭建直播帶貨小程式原始碼過程中,需要為商品構建詳情頁,而商品頁中的圖片是要透過html獲取並展示到本地的,那麼這個過程是如何實現的?接下來小編將透過程式碼演示一下:

1、配置webView

mWebView = findViewById(R.id.web);
mWebView.setOverScrollMode(View.OVER_SCROLL_NEVER);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);//設定能夠解析Javascript
webSettings.setDomStorageEnabled(true);//設定適應Html5的一些方法


 

2、新增點選事件監聽和android與html互動介面:

mWebView.addJavascriptInterface(mOpenImageJavaInterface, "imagelistener");
mWebView.setWebChromeClient(new WebChromeClient(){
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        super.onProgressChanged(view, newProgress);
        Log.d("===","newProgress=="+newProgress);
        if(newProgress==100){
           addImageClickListener(view);
        }
    }
    private void addImageClickListener(WebView webView) {
        webView.loadUrl("javascript:(function(){" +
                "var objs = document.getElementsByTagName(\"img\"); " +
                "for(var i=0;i<objs.length;i++)  " +
                "{"
                +"  var temp=i;    "
                + "    objs[i].onclick=function()  " +
                "    {  "
                + "        window.imagelistener.openImage(this.src);  
                " +//透過js程式碼找到標籤為img的程式碼塊,設定點選的監聽方法與本地的openImage
                方法進行連線
                "    }  " +
                "}" +
                "})()");
    }
});


3、本地利用正則解析html中的圖片集合:


}
/*返回html圖片集合*/public static List<String> returnImageUrlsFromHtml(String htmlCode)
{    
List<String> imageSrcList = new ArrayList<String>();    
if(TextUtils.isEmpty(htmlCode))
{        
return imageSrcList;    
}    
Pattern p = Pattern.compile
("<img\\b[^>]*\\bsrc\\b\\s*=\\s*('|\")?([^'\"\n\r\f>]+(\\.jpg|\\.bmp|\\.eps|\\.gif|\\.mif|\\.miff|\\.png
|\\.tif|\\.tiff|\\.svg|\\.wmf|\\.jpe|\\.jpeg|\\.dib|\\.ico|\\.tga|\\.cut|\\.pic|\\b)\\b)[^>]*>", 
Pattern.CASE_INSENSITIVE);    Matcher m = p.matcher(htmlCode);    
String quote = null;    
String src = null;    
while (m.find()) 
{        
quote = m.group(1);        
src = (quote == null || quote.trim().length() == 0) ? m.group(2).split("//s+")[0] : m.group(2);       
 imageSrcList.add(src);    
}    
if (imageSrcList == null || imageSrcList.size() == 0) 
{        
Log.e("imageSrcList","資訊中未匹配到圖片連結");        
return null;    
}    
return imageSrcList;
}


 

4、實現本地對應html的點選方法,並跳轉畫廊展示圖片:

@android.webkit.JavascriptInterfacepublic void openImage(String src)
{    
if(!ClickUtil.canClick()||!ListUtil.haveData(mOpenImageJavaInterface.imageUrls))
{        
return;    
}    
int index=ListUtil.index(mOpenImageJavaInterface.imageUrls,src);    
if(index==-1)
{        
index=0;    
}    
showGalleryDialog(index);
}


5、WebView載入url,並調整WebView中圖片的大小:

if(mWebView!=null)
{
html = html.replace("<img", "<img style=\"display:        
;max-width:100%;\"");
mWebView.loadDataWithBaseURL("about:blank", html, mimeType,
encoding, ""
);
}


以上就是搭建直播帶貨小程式中,商品詳情頁是如何獲取html圖片並在本地展示的過程。

宣告:以上內容為作者本人原創,未經作者本人同意,禁止轉載,否則將追究相關法律責任。 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69968464/viewspace-2708073/,如需轉載,請註明出處,否則將追究法律責任。

相關文章