diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 05de50e6b7..21f507e728 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -53,6 +53,7 @@ + diff --git a/app/src/main/kotlin/info/appdev/chartexample/GradientActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/GradientActivity.kt new file mode 100644 index 0000000000..a79d45a515 --- /dev/null +++ b/app/src/main/kotlin/info/appdev/chartexample/GradientActivity.kt @@ -0,0 +1,78 @@ +package info.appdev.chartexample + +import android.os.Bundle +import androidx.activity.enableEdgeToEdge +import androidx.core.content.ContextCompat +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import info.appdev.chartexample.notimportant.DemoBase +import info.appdev.charting.charts.LineChart +import info.appdev.charting.data.Entry +import info.appdev.charting.data.LineData +import info.appdev.charting.data.LineDataSet +import info.appdev.charting.formatter.IFillFormatter +import info.appdev.charting.interfaces.dataprovider.LineDataProvider +import info.appdev.charting.interfaces.datasets.ILineDataSet +import info.appdev.charting.utils.Utils + +class GradientActivity : DemoBase() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContentView(R.layout.activity_gradient) + + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> + val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + insets + } + + Utils.init(this) + + val chart: LineChart = findViewById(R.id.chart) + + // Minimal chart setup + chart.description?.isEnabled = false + chart.legend?.isEnabled = false + chart.axisRight.isEnabled = false + chart.setDrawGridBackground(false) + + // ----------------------------- + // Linear function + // y = k * x + // ----------------------------- + val entries = kotlin.collections.ArrayList(200) + val k = 2.5f + + for (i in 0 until 200) { + entries.add(Entry(i.toFloat(), i * k)) + } + + val dataSet = LineDataSet(entries, "Linear").apply { + isDrawValues = false + isDrawCirclesEnabled = false + lineWidth = 2f + + isDrawFilledEnabled = true + fillAlpha = 255 + fillDrawable = ContextCompat.getDrawable( + this@GradientActivity, + R.drawable.gradient_drawable_precipitation + ) + + fillFormatter = object : IFillFormatter { + override fun getFillLinePosition( + dataSet: ILineDataSet?, + dataProvider: LineDataProvider + ): Float = chart.axisLeft.axisMinimum + } + } + + chart.axisLeft.axisMinimum = 0f + chart.setData(LineData(dataSet)) + chart.invalidate() + } + + override fun saveToGallery() = Unit +} diff --git a/app/src/main/kotlin/info/appdev/chartexample/notimportant/MainActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/notimportant/MainActivity.kt index 86a0874ef8..fe41d40309 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/notimportant/MainActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/notimportant/MainActivity.kt @@ -54,6 +54,7 @@ import info.appdev.chartexample.CombinedChartActivity import info.appdev.chartexample.CubicLineChartActivity import info.appdev.chartexample.DynamicalAddingActivity import info.appdev.chartexample.FilledLineActivity +import info.appdev.chartexample.GradientActivity import info.appdev.chartexample.HalfPieChartActivity import info.appdev.chartexample.HorizontalBarChartActivity import info.appdev.chartexample.InvertedLineChartActivity @@ -208,6 +209,9 @@ class MainActivity : ComponentActivity() { add(ContentItem("Compose Horizontal")) add(ComposeItem("Horizontal", "Render bar chart horizontally.", HorizontalBarComposeActivity::class.java).toDemoBase()) + + add(ContentItem("Demonstrate and fix issues")) + add(ContentItem("Gradient", "Show a gradient edge case", GradientActivity::class.java)) } } } diff --git a/app/src/main/res/drawable/gradient_drawable_precipitation.xml b/app/src/main/res/drawable/gradient_drawable_precipitation.xml new file mode 100644 index 0000000000..b44afe7e79 --- /dev/null +++ b/app/src/main/res/drawable/gradient_drawable_precipitation.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_gradient.xml b/app/src/main/res/layout/activity_gradient.xml new file mode 100644 index 0000000000..9d0c4225da --- /dev/null +++ b/app/src/main/res/layout/activity_gradient.xml @@ -0,0 +1,22 @@ + + + + + + + + \ No newline at end of file diff --git a/screenshotsToCompare9/StartTest_smokeTestStart-42-GradientActivity-Gradient-1SampleClick.png b/screenshotsToCompare9/StartTest_smokeTestStart-42-GradientActivity-Gradient-1SampleClick.png new file mode 100644 index 0000000000..e355e77b77 Binary files /dev/null and b/screenshotsToCompare9/StartTest_smokeTestStart-42-GradientActivity-Gradient-1SampleClick.png differ