티스토리 뷰
MPAndroidChart란
안드로이드 앱에서 그래프를 그려주는 라이브러리로 많은 사람들이 사용중이다
https://github.com/PhilJay/MPAndroidChart
GitHub - PhilJay/MPAndroidChart: A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubb
A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations. - GitHub - PhilJay/MPAndroidChart:...
github.com
gradle에 추가
이부분에서
Build was configured to prefer settings repositories over project repositories but repository 'BintrayJCenter' was added by build file 'build.gradle'
이라는 에러가 생길 수 있다 이는 아트릭폭스 이후 버전일때 gradle에 추가하는 방법이 변했기 때문이다
settings.gradle에도 디펜던시 추가가 필요하다
-build.gradle app
dependencies {
...(생략)
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
}
-settings.gradle
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven {url'https://jitpack.io'}
jcenter() // Warning: this repository is going to shut down soon
}
}
만들어 보자
-activity_main.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"
android:orientation="vertical"
>
<com.github.mikephil.charting.charts.LineChart
android:id="@+id/lineChart"
android:layout_width="360dp"
android:layout_height="320dp"
android:layout_gravity="center"
android:layout_marginTop="30dp"
/>
</LinearLayout>
-MainActivity.java
public class MainActivity extends AppCompatActivity {
private LineChart lineChart;
private List<Entry> entryList1;
private List<Entry> entryList2;
private List<Entry> entryList3;
private List<Entry> entryList4;
private List<Entry> entryList5;
private List<Entry> entryList6;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 위젯에 대한 참조.
lineChart=(LineChart)findViewById(R.id.lineChart);
// URL 설정.
String url = "http://퍼블릭IPv4주소/어쩌고.php";
// AsyncTask를 통해 HttpURLConnection 수행.
NetworkTask networkTask = new NetworkTask(url, null);
networkTask.execute();
entryList1=new ArrayList<Entry>();
entryList2=new ArrayList<Entry>();
entryList3=new ArrayList<Entry>();
entryList4=new ArrayList<Entry>();
entryList5=new ArrayList<Entry>();
entryList6=new ArrayList<Entry>();
}
public class NetworkTask extends AsyncTask<Void, Void, String> {
private String url;
private ContentValues values;
public NetworkTask(String url, ContentValues values) {
this.url = url;
this.values = values;
}
@Override
protected String doInBackground(Void... params) {
String result; // 요청 결과를 저장할 변수.
RequestHttpURLConnection requestHttpURLConnection = new RequestHttpURLConnection();
result = requestHttpURLConnection.request(url, values); // 해당 URL로 부터 결과물을 얻어온다.
return result;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//doInBackground()로 부터 리턴된 값이 onPostExecute()의 매개변수로 넘어오므로 s를 출력한다.
doJSONParser(s);
}
}
void doJSONParser(String str){
int time=0;//시간
try{
JSONObject order = new JSONObject(str);
JSONArray index = order.getJSONArray("bio");
for (int i = 0; i < index.length(); i++) {
JSONObject tt = index.getJSONObject(i);
entryList1.add(new Entry(time,Integer.parseInt(tt.getString("data1"))));
entryList2.add(new Entry(time,Float.parseFloat(tt.getString("data2"))));
entryList3.add(new Entry(time,Integer.parseInt(tt.getString("data3"))));
entryList4.add(new Entry(time,Integer.parseInt(tt.getString("data4"))));
entryList5.add(new Entry(time,Integer.parseInt(tt.getString("data5"))));
entryList6.add(new Entry(time,Integer.parseInt(tt.getString("data6"))));
time++;
}
LineDataSet dataSet1=new LineDataSet(entryList1,"data1");
dataSet1.setDrawValues(false);
dataSet1.setColor(Color.parseColor("#F79AB3"));
dataSet1.setDrawCircles(false);
dataSet1.setLineWidth(3);
LineDataSet dataSet2=new LineDataSet(entryList2,"data2");
dataSet2.setDrawValues(false);
dataSet2.setColor(Color.parseColor("#F7C69A"));
dataSet2.setDrawCircles(false);
dataSet2.setLineWidth(3);
LineDataSet dataSet3=new LineDataSet(entryList3,"data3");
dataSet3.setDrawValues(false);
dataSet3.setColor(Color.parseColor("#ECF99B"));
dataSet3.setDrawCircles(false);
dataSet3.setLineWidth(3);
LineDataSet dataSet4=new LineDataSet(entryList4,"data4");
dataSet4.setDrawValues(false);
dataSet4.setColor(Color.parseColor("#9BF99E"));
dataSet4.setDrawCircles(false);
dataSet4.setLineWidth(3);
LineDataSet dataSet5=new LineDataSet(entryList5,"data5");
dataSet5.setDrawValues(false);
dataSet5.setColor(Color.parseColor("#9AD8F7"));
dataSet5.setDrawCircles(false);
dataSet5.setLineWidth(3);
LineDataSet dataSet6=new LineDataSet(entryList6,"data6");
dataSet6.setDrawValues(false);
dataSet6.setColor(Color.parseColor("#E89AF7"));
dataSet6.setDrawCircles(false);
dataSet6.setLineWidth(3);
LineData chartData=new LineData();
chartData.addDataSet(dataSet1);
chartData.addDataSet(dataSet2);
chartData.addDataSet(dataSet3);
chartData.addDataSet(dataSet4);
chartData.addDataSet(dataSet5);
chartData.addDataSet(dataSet6);
lineChart.setData(chartData);
lineChart.invalidate();
}
catch (JSONException e){ ;}
}
}
-참고
https://ideajini.tistory.com/15
[안드로이드] Android studio Arctic Fox 버전 이후 gradle allprojects 추가방법
안드로이드 스튜디오 버전을 업데이트하고 신규 프로젝트파일을 생성했습니다. 라이브러리 추가가 필요해서 jcenter와 jitpack.io 레포지토리 등록을 평소처럼 프로젝트 단위의 build.gradle에서 추가
ideajini.tistory.com
https://under-desk.tistory.com/183
[안드로이드] MPAndroidChart 꺾은선 그래프 만들기
PhilJay/MPAndroidChart A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, dragging and animations. - PhilJay/MPAndroidChart github.com MPAndroidChart 링크 build.gr
under-desk.tistory.com
안드로이드 스튜디오에서 MPAndroidChart 사용법
안드로이드 스튜디오에서 MPAndroidChart 사용법 참조사이트 : 지민의 개발개발 안드로이드앱에서 차트를 기리기 위해 여러 사이트를 전전했지만 구체적인 방법을 알려주는데를 찾비 못했다. 그
n2infotech.co.kr
'공부 > Android' 카테고리의 다른 글
LiveData 의 value가 null을 반환할때 (0) | 2023.05.05 |
---|---|
socket.io 사용할때 뒤로가기 눌렀을때 앱 종료되는 이유? (0) | 2022.11.07 |
배경 그라데이션 (0) | 2022.11.02 |
안드로이드에서 socket.io 사용하기(Node.js, http, 멀티코어에서 유의점) (0) | 2022.10.29 |
안드로이드 url, api key를 숨기는법(깃 레포지토리에서^^) (0) | 2022.10.29 |