티스토리 뷰
안드로이드 앱 개발 시
double 또는 int 형의 데이터 배열이 있는 경우,
이 데이터를 이용하여 그래프(Graph)를 그리는 예제 코드
import android.os.Bundle
import android.view.View
import android.widget.TextView
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.data.Entry
import com.github.mikephil.charting.data.LineData
import com.github.mikephil.charting.data.LineDataSet
class MainActivity : AppCompatActivity() {
private lateinit var lineChart: LineChart
private lateinit var textView: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
lineChart = findViewById(R.id.line_chart)
textView = findViewById(R.id.text_view)
// 데이터 준비
val data = doubleArrayOf(1.2, 3.4, 5.6, 7.8, 9.0)
// 그래프 설정
setupLineChart()
// 데이터 표시
setData(data)
}
private fun setupLineChart() {
lineChart.description.isEnabled = false
lineChart.setTouchEnabled(true)
lineChart.isDragEnabled = true
lineChart.setScaleEnabled(true)
val xAxis = lineChart.xAxis
xAxis.position = XAxis.XAxisPosition.BOTTOM
xAxis.setDrawLabels(true)
xAxis.setGranularity(1f)
val yAxis = lineChart.axisLeft
yAxis.setDrawLabels(true)
lineChart.axisRight.isEnabled = false
// 라인 설정
val lineDataSet = LineDataSet(null, "데이터")
lineDataSet.color = Color.RED
lineDataSet.lineWidth = 2f
lineDataSet.setDrawCircles(true)
lineDataSet.setCircleColor(Color.BLUE)
lineDataSet.circleRadius = 5f
lineChart.data = LineData(lineDataSet)
}
private fun setData(data: DoubleArray) {
val entries = mutableListOf<Entry>()
for (i in data.indices) {
entries.add(Entry(i.toFloat(), data[i].toFloat()))
}
val lineDataSet = lineChart.data.getDataSetByIndex(0) as LineDataSet
lineDataSet.values = entries
lineChart.data.notifyDataChanged()
lineChart.invalidate()
// 데이터 텍스트 표시
textView.text = data.joinToString("\n")
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity">
<com.github.mikephil.charting.charts.LineChart
android:id="@+id/line_chart"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/text_view" />
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
반응형
'SWDesk > App' 카테고리의 다른 글
[Kotlin] Treat Key Event (0) | 2024.06.14 |
---|---|
[Android] Fragment 개념 (1) | 2024.04.08 |
[Android] RecyclerView 예제 (0) | 2024.04.04 |
[Android] Bilient Navigator 출시 (0) | 2024.01.10 |
[Android] WebView 예제 소스코드 (0) | 2024.01.05 |
반응형
250x250
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 전압
- 전류
- ServantClock
- 전압전류모니터링
- 빌리언트
- badp
- 혁신과허들
- DYOV
- Innovations&Hurdles
- 허들
- image
- 절연형
- 티스토리챌린지
- 둎
- 배프
- bilient
- 오블완
- Decorator
- 심심풀이
- 아두이노
- 심심풀이치매방지기
- Innovation&Hurdles
- Hurdles
- Video
- 치매
- 치매방지
- Innovations
- BSC
- 혁신
- arduino
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함