我创建了一个布局,其中包含一些视图,还包含一个用于绘制图形的 linearlayout
main_page_layout.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>我正在尝试使用名为 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);
}
........这是我要画的活动
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);
}
...........
...................但我看不到任何线或轴。
我想使用画布为产品绘制图形,但看不到任何结果,我的类或代码有什么问题
将绘制行为放入 ondraw() 函数中
@Override
protected void onDraw(Canvas canvas) {
drawLine(...);
drawAxisX();
}以上就是我可以在其他功能中使用 Canvas 元素来显示在视图上吗的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号