Saya mencipta reka letak yang mengandungi beberapa paparan dan juga mengandungi susun atur linear untuk melukis grafik
susun_halaman_utama.xml
<?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" android:background="@color/bgcolor" android:id="@+id/main_page_layout" > .... <linearlayout android:id="@+id/graphicview" android:layout_width="match_parent" android:layout_height="196dp" android:layout_margintop="64dp" android:layout_marginleft="0dp" android:layout_marginright="0dp" android:background="@color/white" android:orientation="horizontal" app:layout_constraintend_toendof="parent" app:layout_constraintleft_toleftof="parent" app:layout_constrainttop_tobottomof="@id/menulayout" /> ... </androidx.constraintlayout.widget.constraintlayout>
Saya cuba melukis graf padanya menggunakan kelas tersuai yang dipanggil graphplotter
graphplotter.java
public class graphplotter extends view { private paint paint = null; private bitmap bitmap; private canvas canvas; public graphplotter(context context) { super(context); this.init(); } /* initiates graph plotter */ private void init() { this.paint = new paint(); this.paint.setcolor(color.blue); this.paint.setstrokewidth(5); this.paint.setstyle(paint.style.fill_and_stroke); // create a bitmap and a canvas associated with the bitmap this.bitmap = bitmap.createbitmap(1000, 1000, bitmap.config.argb_8888); this.canvas = new canvas(bitmap); } public void setcolor(int color) { this.paint.setcolor(color); invalidate(); // force a redraw } /* draws a line with a custom color */ public void drawline(float starx, float starty, float stopx, float stopy,int color) { this.setcolor(color); this.canvas.drawline(starx, starty, stopx, stopy, this.paint); } ........
Ini aktiviti yang saya nak lukis
mainpageactivity.java
public class MainPageActivity extends AppCompatActivity { private ConnectionHelper connectionHelper = null; private SQLQuery sqlQuery = null; private Person person = null; private TextView txtID = null; private RecyclerView recyclerView = null; private final ProductAdapter productAdapter = null; private AsyncTaskRunner asyncTaskRunner = null; private ViewHolder viewHolder = null; private Spinner graphicTypeSpinner = null; private Button menuButton = null; private ConstraintLayout menuView = null; private List<Product> productList = null; private GraphPlotter graphPlotter = null; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); // necessary for onCreate function setContentView(R.layout.main_page_layout); // R = resource , R.layout => layouts directory init(); LinearLayout graphicView = (LinearLayout) findViewById(R.id.graphicView); graphPlotter = new GraphPlotter(this); graphPlotter.drawAxisX(159,159,259, Color.BLUE); graphicView.addView(graphPlotter); } ........... ...................
Tetapi saya tidak dapat melihat sebarang garisan atau paksi.
Saya ingin melukis grafik untuk produk menggunakan kanvas tetapi saya tidak dapat melihat apa-apa keputusan, apa yang salah dengan kelas atau kod saya
Letakkan tingkah laku lukisan dalam fungsi ondraw()
@Override protected void onDraw(Canvas canvas) { drawLine(...); drawAxisX(); }
Atas ialah kandungan terperinci Bolehkah saya menggunakan elemen Kanvas dalam fungsi lain untuk dipaparkan pada paparan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!