Saya sedang menulis kode untuk proyek sekolah di mana seseorang harus memuat file data (file CSV, file teks, dll) dan dari data yang diperoleh, aplikasi akan meneruskan data ke Tampilan undian khusus dan metode onDraw akan menggambar /plot grafik berdasarkan data.
Tujuan saya adalah agar aplikasi menampilkan 2 grafik, satu demi satu (bertumpuk). Kumpulan data pertama dimuat dan grafik pertama digambar. Data yang dimuat kemudian digunakan untuk penghitungan berbeda dengan metode berbeda. Tampilan gambar khusus kemudian dipanggil lagi dengan data baru untuk menggambar grafik ke-2.
Saat saya menjalankan aplikasi, kedua bagan digambar tetapi karena sumbu x dan y dari grafik diberi kode untuk digambar pada piksel tetap tertentu, grafik ke-2 digambar di atas grafik pertama dan oleh karena itu hanya grafik ke-2 yang terlihat.
Apakah ada cara untuk menggambar 2 grafik tersebut agar tidak tumpang tindih dan malah tampak bertumpuk di ScrollView?
Kode saya ditampilkan di bawah tetapi saya telah menghilangkan perhitungan yang menurut saya tidak terlalu penting. Bantuan dan petunjuk apa pun akan sangat dihargai!
Aktivitas Utama.java:
@Override
protected void onActivityResult(......) {
super.onActivityResult(......);
switch (1) {
case 1:
Graph graph = this.findViewById(R.id.graph1);
graph.setData(data); // the loaded data is passed to Graph View
Graph drawGraph2 = this.findViewById(R.id.graph2);
graph2.setData(this.newCalculate(data));
break;
}
}
Grafik.java
public class Graph extends View {
private Paint mPaint = new Paint();
private final int zero = 700; // mark the 0 line of graph at 700 pixels
public void setData(data){
......
}
public Graph(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
}
@Override
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
setMeasuredDimension(widthSize, heightSize);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
plotUnit(canvas); // plot points on graph
axisLabel(canvas); // label axis
axisLine(canvas); // draw axis
xyAxisMarker(canvas); // mark axis
}
private void plotUnit(Canvas canvas) {
......
// Due to data having negative values, the graph is inverted and the 0 starts
// of the graph is defined at 700 pixels (private final int zero)
}
private void axisLabel(Canvas canvas) {
......
}
private void axisLine(Canvas canvas, int inset) {
......
}
private void xyAxisMarker(Canvas canvas) {
......
}
Memperbarui
aktivitas_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/loadbutton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Open Data File" />
<firstapp.drawtwograph.Graph
android:id="@+id/graph1"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
<firstapp.drawtwograph.Graph
android:id="@+id/graph2"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
</LinearLayout>
</ScrollView>
</LinearLayout>