歡迎大家觀看我在CSDN學院錄制的課程:http://edu.csdn.net/lecturer/944
百度echarts框架還是比較強大的,之前有嘗試使用它,但畢竟主要使用於web網頁端,效果不是很好,所以最終還是取消使用echarts
但之前在使用的過程中遇到些問題,雖然解決很簡單,但也花了我不少時間,所以在這里記錄之前如何使用及如何解決其中遇到的問題
1、在echarts官網下載demo
2、如果js代碼沒有很好的給一個函數入口,則自己提取封裝
(1)原本已經提取封裝好的函數保持不變
(2)js最開始執行的地方提取出來封裝為一個函數,將其中的圖形的數據變量作為函數的參數
(3)將html代碼放到Android工程的assets目錄下
(4)Android的布局這里就不多寫了,直接加一個webview就行
(5)在Java代碼中調用js,代碼如下
//設置編碼 mWebView.getSettings().setDefaultTextEncodingName("utf-8"); //支持js mWebView.getSettings().setJavaScriptEnabled(true); //設置背景顏色 透明 mWebView.setBackgroundColor(Color.argb(0, 0, 0, 0)); //載入js // mWebView.loadUrl("file:///android_asset/echarts-kline.html"); mWebView.loadUrl("file:///android_asset/candlestick33.html"); mWebView.loadUrl("javascript:jsFunction('" + jsParam+ "')");
按照以往我們按照上面的形式調用js是沒問題的,但我這里圖形就是無法獲取到數據,所以也圖形也沒有什么內容
想了好久,用很多方法嘗試,數據是傳過去了的,但為什么不顯示呢。
自己也猜測:是不是頁面圖形框架還沒加載好就已經執行了這段代碼,等真正圖形框架加載完需要傳數據的時候,那段傳數據的代碼不再調用了,但Android端如何判斷頁面加載好呢,這也要看網速的吧
之后在一個群里一個熱心好友跟我猜到一起了,但它知道如果是這個原因,可以試試什么方法,方法如下:
WebView可以實現一個onPageFinished的方法,顧名思義,應該就是當頁面加載完后,我們再去調用js函數,這里只需要把調用js的那段代碼放到如下代碼中
mWebView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { mWebView.loadUrl("javascript:jsFunction('" + jsParam+ "')"); super.onPageFinished(view, url); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } });
本人文筆有限,有寫的不好的地方還請包涵。
本人聯系方式:
更多精彩分享,可關注我的微信公眾號:
微信打賞我請掃描下面的二維碼:
微信號:WeixinJungle
郵箱:oneou6688@163.com