99精品国产99久久久久久福利,日韩专区视频网站,最全影音av资源中文字幕在线http://www.aygfsteel.com/gf7/category/53067.html<a target="_blank"><img src="http://union.keepc.com/templates/default/images/1/950X90.gif" alt="KC網絡電話,中國最優秀的網絡電話" width="950" height="90" border="0"></a>zh-cnFri, 30 Nov 2012 07:05:25 GMTFri, 30 Nov 2012 07:05:25 GMT60在android上動態實現ichartjs的3D柱形圖http://www.aygfsteel.com/gf7/archive/2012/11/30/392279.htmlFri, 30 Nov 2012 07:00:00 GMThttp://www.aygfsteel.com/gf7/archive/2012/11/30/392279.htmlhttp://www.aygfsteel.com/gf7/comments/392279.htmlhttp://www.aygfsteel.com/gf7/archive/2012/11/30/392279.html#Feedback0http://www.aygfsteel.com/gf7/comments/commentRss/392279.htmlhttp://www.aygfsteel.com/gf7/services/trackbacks/392279.html

ichartjs是一款基于HTML5的圖形庫。使用純javascript語言,利用HTML5的canvas標簽繪制各式圖形。ichartjs可以為web應用提供簡單、直觀、可交互的體驗級圖表組件。是web圖表方面的解決方案。最近正好在學HTML5,順便就用ichartjs來練習。ichartjs目前支持餅圖、折線圖、區域圖、柱形圖、條形圖。ichartjs是基于Apache License 2.0 協議的開源項目。今天介紹的是如何在android手機上動態實現3D柱形圖。若想詳細了解ichartjs,可以訪問ichartjs官網:http://www.ichartjs.cn/index.html

實現主要原理是所需實現的數據打包成json格式,因為ichartjs規定的數據源統一采用json對象方式。數據源分為單一數據源與集合多值數據源,單一數據源的值為單一的數值,而集合多值數據源為數值集合。3D柱形圖使用的單一的數據源。廢話不多說了,直接上代碼。

首先編寫的是封裝數據的實體類Contact:

  1. package com.chinasofti.html;  
  2.   
  3. public class Contact {  
  4.     private String name; // 瀏覽器的名稱   
  5.     private double value; // 瀏覽器對應的所占市場份額值   
  6.     private String color; // 在柱形圖中所顯示的顏色   
  7.       
  8.     /** 
  9.      * 構造函數 
  10.      * @param name 瀏覽器的名稱 
  11.      * @param value 瀏覽器對應的所占市場份額值 
  12.      * @param color 在柱形圖中所顯示的顏色 
  13.      */  
  14.     public Contact(String name, double value, String color) {  
  15.         this.name = name;  
  16.         this.value = value;  
  17.         this.color = color;  
  18.     }  
  19.       
  20.     // 下面是三個實例變量的getters and setters   
  21.     public String getName() {  
  22.         return name;  
  23.     }  
  24.     public void setName(String name) {  
  25.         this.name = name;  
  26.     }  
  27.     public double getValue() {  
  28.         return value;  
  29.     }  
  30.     public void setValue(double value) {  
  31.         this.value = value;  
  32.     }  
  33.     public String getColor() {  
  34.         return color;  
  35.     }  
  36.     public void setColor(String color) {  
  37.         this.color = color;  
  38.     }  
  39.       
  40. }  

接著創建一個list將所需要的contact對象添加到list中:

  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3.   
  4. import com.chinasofti.html.Contact;  
  5.   
  6. public class ContactService {  
  7.   
  8.     public List<Contact> getContacts() {  
  9.         List<Contact> contacts = new ArrayList<Contact>();  
  10.         contacts.add(new Contact("IE"32.85"#a5c2d5"));  
  11.         contacts.add(new Contact("Chrome"33.59"#cbab4f"));  
  12.         contacts.add(new Contact("Firefox"22.85"#76a871"));  
  13.         contacts.add(new Contact("Safari"7.39"#9f7961"));  
  14.         contacts.add(new Contact("Opera"1.63"#a56f8f"));  
  15.         contacts.add(new Contact("Other"1.69"#6f83a5"));  
  16.         return contacts;  
  17.     }  
  18. }  

然后編寫android主界面代碼,實現list轉換成json格式字符串,并實現和html文件的交互:

 

  1. import java.util.List;  
  2.   
  3. import org.json.JSONArray;  
  4. import org.json.JSONException;  
  5. import org.json.JSONObject;  
  6.   
  7. import android.app.Activity;  
  8. import android.os.Bundle;  
  9. import android.util.Log;  
  10. import android.webkit.WebView;  
  11.   
  12. public class MainActivity extends Activity {  
  13.     private static final String TAG = "MainActivity";  
  14.     private ContactService contactService; // 構建list的類   
  15.     private WebView webView;  
  16.   
  17.     @Override  
  18.     public void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.main);  
  21.   
  22.         contactService = new ContactService();  
  23.         webView = (WebView) this.findViewById(R.id.webView);  
  24.         webView.getSettings().setJavaScriptEnabled(true); // 允許使用javascript腳本語言   
  25.         webView.getSettings().setBuiltInZoomControls(true); // 設置可以縮放   
  26.         // 設置javaScript可用于操作MainActivity類   
  27.         webView.addJavascriptInterface(this,TAG);  
  28.         webView.loadUrl("file:///android_asset/3dchart.html");  
  29.     }  
  30.       
  31.     /** 
  32.      * 實現將list轉換成json格式字符串 
  33.      * @return json格式的字符串 
  34.      */  
  35.     public String getContacts() {  
  36.         List<Contact> contacts = contactService.getContacts();  
  37.         String json = null;  
  38.         try {  
  39.             JSONArray array = new JSONArray();  
  40.             for (Contact contact : contacts) {  
  41.   
  42.                 JSONObject item = new JSONObject();  
  43.                 item.put("name", contact.getName());  
  44.                 item.put("value", contact.getValue());  
  45.                 item.put("color", contact.getColor());  
  46.                 array.put(item);  
  47.             }  
  48.             json = array.toString();  
  49.             Log.i(TAG, json);  
  50.             // webView.loadUrl("javascript:show('" + json + "')");   
  51.         } catch (JSONException e) {  
  52.             e.printStackTrace();  
  53.         }  
  54.         return json;  
  55.     }  
  56. }  

最后是編輯html文件。要實現ichartjs表圖,首先要保證在assets目錄下已導入了ichart - 1.0.js。然后對html文件進行編輯:

 

  1. <!DOCTYPE html>  
  2. <html>  
  3.     <head>  
  4.         <meta charset="UTF-8" />  
  5.         <title>Hello World</title>  
  6.         <meta name="Description" content="" />  
  7.         <meta name="Keywords" content="" />  
  8.         <script type="text/javascript" src="ichart-1.0.js"></script>  
  9.         <script type="text/javascript">  
  10.             var data = new Array();  
  11.             var contact = window.MainActivity.getContacts(); //得到MainActivity中轉換出的json字符串  
  12.             eval('data='+contact); //得到json數據  
  13.   
  14. $(function(){     
  15.     new iChart.Column3D({  
  16.         render : 'canvasDiv', //渲染的Dom目標,canvasDiv為Dom的ID  
  17.         data: data, //綁定數據  
  18.         title : 'Top 5 Browsers in August 2012', //設置標題  
  19.         showpercent:true, //顯示百分比  
  20.         decimalsnum:2,   
  21.         width : 800, //設置寬度,默認單位為px  
  22.         height : 400, //設置高度,默認單位為px  
  23.         align:'left',  
  24.         offsetx:50,  
  25.         legend : {  
  26.             enable : true  
  27.         },  
  28.         coordinate:{ //配置自定義坐標軸  
  29.             scale:[{ //配置自定義值軸  
  30.                  width:600,  
  31.                  position:'left', //配置左值軸     
  32.                  start_scale:0, //設置開始刻度為0  
  33.                  end_scale:40, //設置結束刻度為40  
  34.                  scale_space:8, //設置刻度間距為8  
  35.                  listeners:{ //配置事件  
  36.                     parseText:function(t,x,y){ //設置解析值軸文本  
  37.                         return {text:t+"%"}  
  38.                     }  
  39.                 }  
  40.             }]  
  41.         }  
  42.     }).draw(); //調用繪圖方法開始繪圖  
  43. });  
  44.             </script>  
  45.         </head>  
  46.         <body>  
  47.             <div id='canvasDiv'></div>  
  48.         </body>  
  49. </html>  

最后得到效果為:

 


 



2012-11-30 15:00 發表評論
]]>
主站蜘蛛池模板: 承德市| 佛坪县| 保定市| 四平市| 兖州市| 都兰县| 迭部县| 右玉县| 通榆县| 桐城市| 华宁县| 清苑县| 通江县| 南乐县| 枣阳市| 胶南市| 房山区| 武威市| 安乡县| 南汇区| 台东县| 胶南市| 刚察县| 晋江市| 宕昌县| 牡丹江市| 沧源| 宁国市| 台中县| 常山县| 宕昌县| 鲁山县| 常宁市| 平乡县| 五华县| 通州市| 鄱阳县| 巴林左旗| 溆浦县| 天等县| 田林县|