반응형
안녕하세요. MPAndroidChart 라이브러리를 이용하여 안드로이드에서 Pie, Bar Chart 구현 예제 입니다.
1. MPAndoridChart
https://github.com/PhilJay/MPAndroidChart
설명과 소스 샘플코드 다운로드 가능하세요.
참고사이트 : https://javapapers.com/android/android-chart-example-app-using-mpandroidchart/
2. Project 생성
2-1. File → New → New Project → Empty Activity 선택
2-2. Project명 : ChartApplication
2-3. MPAndroidChart 라이브러리 추가
2-3-1. Project build.grale에
maven { url 'https://jitpack.io' } 추가
allprojects {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
}
}
2-3-2. Module build.gradle에
implementation 'com.github.PhilJay:MPAndroidChart:v2.2.4' 추가
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation 'com.github.PhilJay:MPAndroidChart:v2.2.4'
}
3. Activity 추가
3-1. BarChart Activity 추가
3-2. PieChart Activity 추가
4. Layout 정의
4-1. activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context="com.example.chartapplication.MainActivity">
<Button
android:id="@+id/btnBarChart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="Bar Chart Sample" />
<Button
android:id="@+id/btnPieChart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="Pie Chart Sample" />
</LinearLayout>
4-2. activity_bar_chart.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.github.mikephil.charting.charts.BarChart
android:id="@+id/barchart"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
4-3. activity_pie_chart.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/piechart"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
5. JAVA 파일
5-1. MainActiviy.java
Bar Chart Sample 버튼, Pie Chart Sample 버튼 클릭시 각각의 Activity Intent로 호출
package com.example.chartapplication;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import com.github.mikephil.charting.charts.BarChart;
public class MainActivity extends AppCompatActivity {
Button btnBarChart, btnPieChart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BarChart barChart = (BarChart) findViewById(R.id.barchart);
btnBarChart = findViewById(R.id.btnBarChart);
btnPieChart = findViewById(R.id.btnPieChart);
btnBarChart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent I = new Intent(MainActivity.this, BarChartActivity.class);
startActivity(I);
}
});
btnPieChart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent I = new Intent(MainActivity.this, PieChartActivity.class);
startActivity(I);
}
});
}
}
5-2. BarChartActivity.java
package com.example.chartapplication;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.interfaces.datasets.IBarDataSet;
import com.github.mikephil.charting.utils.ColorTemplate;
import java.util.ArrayList;
public class BarChartActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bar_chart);
BarChart chart = findViewById(R.id.barchart);
ArrayList NoOfEmp = new ArrayList();
NoOfEmp.add(new BarEntry(945f, 0));
NoOfEmp.add(new BarEntry(1040f, 1));
NoOfEmp.add(new BarEntry(1133f, 2));
NoOfEmp.add(new BarEntry(1240f, 3));
NoOfEmp.add(new BarEntry(1369f, 4));
NoOfEmp.add(new BarEntry(1487f, 5));
NoOfEmp.add(new BarEntry(1501f, 6));
NoOfEmp.add(new BarEntry(1645f, 7));
NoOfEmp.add(new BarEntry(1578f, 8));
NoOfEmp.add(new BarEntry(1695f, 9));
ArrayList year = new ArrayList();
year.add("2008");
year.add("2009");
year.add("2010");
year.add("2011");
year.add("2012");
year.add("2013");
year.add("2014");
year.add("2015");
year.add("2016");
year.add("2017");
BarDataSet bardataset = new BarDataSet(NoOfEmp, "No Of Employee");
chart.animateY(5000);
BarData data = new BarData(year, bardataset); // MPAndroidChart v3.X 오류 발생
bardataset.setColors(ColorTemplate.COLORFUL_COLORS);
chart.setData(data);
}
}
5-3. PieChartActivity.java
package com.example.chartapplication;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.utils.ColorTemplate;
import java.util.ArrayList;
public class PieChartActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pie_chart);
PieChart pieChart = findViewById(R.id.piechart);
ArrayList NoOfEmp = new ArrayList();
NoOfEmp.add(new Entry(945f, 0));
NoOfEmp.add(new Entry(1040f, 1));
NoOfEmp.add(new Entry(1133f, 2));
NoOfEmp.add(new Entry(1240f, 3));
NoOfEmp.add(new Entry(1369f, 4));
NoOfEmp.add(new Entry(1487f, 5));
NoOfEmp.add(new Entry(1501f, 6));
NoOfEmp.add(new Entry(1645f, 7));
NoOfEmp.add(new Entry(1578f, 8));
NoOfEmp.add(new Entry(1695f, 9));
PieDataSet dataSet = new PieDataSet(NoOfEmp, "Number Of Employees");
ArrayList year = new ArrayList();
year.add("2008");
year.add("2009");
year.add("2010");
year.add("2011");
year.add("2012");
year.add("2013");
year.add("2014");
year.add("2015");
year.add("2016");
year.add("2017");
PieData data = new PieData(year, dataSet); // MPAndroidChart v3.X 오류 발생
pieChart.setData(data);
dataSet.setColors(ColorTemplate.COLORFUL_COLORS);
pieChart.animateXY(5000, 5000);
}
}
6. 실행화면
감사합니다.
반응형
'IT > Andorid' 카테고리의 다른 글
액티비티 생명주기 (Activity LifeCycle) (0) | 2019.12.06 |
---|---|
개발에 유용한 안드로이드(Android) Library (0) | 2019.11.18 |
삼성 갤럭시폰 - 안드로이드 스튜디오 USB 연결 (2) | 2019.11.16 |
안드로이드 DateTime Format (0) | 2019.11.12 |
[Andorid] 클릭 이벤트 강제 발생 시키기 (0) | 2019.11.11 |
최근댓글