文章出處

android提供achartengine api 只能做簡單的,如果是復雜的圖表,個人的想法結合highcharts來完成;減小工作量,官方提供的例子也非常豐富。

 

通過android webview來請求數據;
public class ZTMainActivity extends Activity {

WebView browser;
ProgressDialog pd;
Handler handler;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ztmain);
    init();// 執行初始化函數
    String urls = "file:///android_asset/ztpad/jsp/subway/including/subwayflow_chart.html";
    loadUrl(browser, urls);     
}

/**
 * 初始化數據
 */
public void init() {

    pd = new ProgressDialog(ZTMainActivity.this);
    pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    pd.setMessage("正在請求數據,請稍候...");

    handler = new Handler() {
        public void handleMessage(Message msg) {// 定義一個Handler,用于處理下載線程與UI間通訊             
            if (!Thread.currentThread().isInterrupted()) {
                switch (msg.what) {
                case 0:
                    pd.show();// 顯示進度對話框
                    break;
                case 1:
                    pd.hide();// 隱藏進度對話框,不可使用dismiss()、cancel(),否則再次調用show()時,顯示的對話框小圓圈不會動。
                    break;
                }
            }
            super.handleMessage(msg);
        }
    };      

    browser = (WebView) findViewById(R.id.wv);
    browser.getSettings().setJavaScriptEnabled(true);// 可用JS

    browser.getSettings().setSupportZoom(true);
    browser.getSettings().setBuiltInZoomControls(false);
    browser.getSettings().setUseWideViewPort(false);
    browser.getSettings().setLoadWithOverviewMode(false);
    browser.getSettings().setAppCacheEnabled(true);
    browser.getSettings().setCacheMode(browser.getSettings().LOAD_NO_CACHE);
    browser.getSettings().setDatabaseEnabled(true);
    browser.getSettings().setDomStorageEnabled(true);
    browser.getSettings().setJavaScriptEnabled(true);
    browser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

    browser.setScrollBarStyle(0);// 滾動條風格,為0就是不給滾動條留空間,滾動條覆蓋在網頁上

    browser.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(final WebView view,
                final String url) {
            loadUrl(view, url);// 載入網頁
            return true;
        }// 重寫點擊動作,用webview載入

    });

    browser.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {// 載入進度改變而觸發
            if (progress == 100) {
                handler.sendEmptyMessage(1);// 如果全部載入,隱藏進度對話框
            }
            super.onProgressChanged(view, progress);
        }
    }); 
}

public void loadUrl(final WebView view, final String url) {
    new Thread() {          
        public void run() {     
            try{        
                handler.sendEmptyMessage(0);
                view.loadUrl(url);// 載入網頁
            }catch(Exception e){
                handler.sendEmptyMessage(1);
            }
        }
    }.start();
}

}

效果如圖:

轉:http://my.eoe.cn/1088628/archive/5330.html


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()