![]() |
Display Google Charts (pie chart) displayed Android WebView |
package com.example.androidwebchart;
import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends ActionBarActivity {
EditText num1, num2, num3, num4, num5;
Button btnShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
num1 = (EditText)findViewById(R.id.num1);
num2 = (EditText)findViewById(R.id.num2);
num3 = (EditText)findViewById(R.id.num3);
num4 = (EditText)findViewById(R.id.num4);
num5 = (EditText)findViewById(R.id.num5);
btnShow = (Button)findViewById(R.id.show);
btnShow.setOnClickListener(btnShowOnClickListener);
}
OnClickListener btnShowOnClickListener =
new OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(
MainActivity.this,
ShowWebChartActivity.class);
intent.putExtra("NUM1", getNum(num1));
intent.putExtra("NUM2", getNum(num2));
intent.putExtra("NUM3", getNum(num3));
intent.putExtra("NUM4", getNum(num4));
intent.putExtra("NUM5", getNum(num5));
startActivity(intent);
}
};
private int getNum(EditText editText){
int num = 0;
String stringNum = editText.getText().toString();
if(!stringNum.equals("")){
num = Integer.valueOf(stringNum);
}
return (num);
}
}
/res/layout/activity_main.xml, layout of MainActivity.
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.androidwebchart.MainActivity" >
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://picturedmagazine.blogspot.com/"
android:textStyle="bold" />
android:id="@+id/num1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"/>
android:id="@+id/num2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"/>
android:id="@+id/num3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"/>
android:id="@+id/num4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"/>
android:id="@+id/num5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"/>
When User click on the "Show Chart" button, it will start another activity, ShowWebChartActivity.java, and pass user data. ShowWebChartActivity load a WebView with our HTML to display Google Charts with Javascript. We have to implement WebAppInterface, with methods of @JavascriptInterface, getNum1()...getNum5(). It will be called by Javascript inside HTML to retrieve user data.
package com.example.androidwebchart;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
@SuppressLint("SetJavaScriptEnabled")
public class ShowWebChartActivity extends ActionBarActivity {
WebView webView;
int num1, num2, num3, num4, num5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_webchart);
Intent intent = getIntent();
num1 = intent.getIntExtra("NUM1", 0);
num2 = intent.getIntExtra("NUM2", 0);
num3 = intent.getIntExtra("NUM3", 0);
num4 = intent.getIntExtra("NUM4", 0);
num5 = intent.getIntExtra("NUM5", 0);
webView = (WebView)findViewById(R.id.web);
webView.addJavascriptInterface(new WebAppInterface(), "Android");
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/chart.html");
}
public class WebAppInterface {
@JavascriptInterface
public int getNum1() {
return num1;
}
@JavascriptInterface
public int getNum2() {
return num2;
}
@JavascriptInterface
public int getNum3() {
return num3;
}
@JavascriptInterface
public int getNum4() {
return num4;
}
@JavascriptInterface
public int getNum5() {
return num5;
}
}
}
/res/layout/layout_webchart.xml, layout of ShowWebChartActivity.
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://picturedmagazine.blogspot.com/"
android:textStyle="bold" />
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
/assets/chart.html, our HTML to load and display Google Charts. Actually it is modified from Google Quick Start example of pie chart. The main difference is it retrieve user data by calling Android JavascriptInterface methods (getNum1()...getNum5()), instead of fixed data.
Finally, modify AndroidManifest.xml to add
package="com.example.androidwebchart"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="8"
android:targetSdkVersion="19" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name=".MainActivity"
android:label="@string/app_name" >
android:name=".ShowWebChartActivity"
android:label="@string/app_name" >

- More Google Charts examples on Android WebView
- Capture image generated by Google Charts API
- Display Donut Chart on Android WebView, using Google Charts
0 تعليقات