gpt4 book ai didi

android - 添加 Canvas - Android

转载 作者:行者123 更新时间:2023-11-29 16:20:37 25 4
gpt4 key购买 nike

我动态创建 Canvas :

Canvas canvas = new Canvas();

但是我怎样才能将它添加到我的 LinearLayout 中呢?

LinearLayout ll = new LinearLayout(this);

最佳答案

您可以使用简单的 addView 来完成,或者如果您正在做一些更复杂的事情,例如需要一个新线程来进行图形绘制,那么您可以使用自定义 SurfaceView 将其添加到您的 xml 布局中

    <com.util.MyDraw
android:id="@+id/surfaceView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10px"
android:layout_marginLeft="10px"
android:layout_marginRight="10px"
android:layout_below="@+id/spinner1"
/>

然后创建一个名为 MyDraw 的类,它扩展了 SurfaceView,您可以在其中调用线程进行绘制。

package com.util;

public class MyDraw extends SurfaceView implements Callback {

private MyThread myThread;
private SurfaceHolder holder;
private Paint paint;
Path path;
public LinkedList<Integer> list; {
list = new LinkedList<Integer>();
}

public MyDraw(Context context) {
super(context);
holder = getHolder();
holder.addCallback(this);
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(2);
paint.setColor(Color.GREEN);
path = new Path();
}

public void surfaceCreated(SurfaceHolder holder) {
myThread = new MyThread(holder, this);
myThread.setFlag(true);
myThread.start();
}

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}

public void surfaceDestroyed(SurfaceHolder holder) {
myThread.setFlag(false);
}

@Override
protected void onDraw(Canvas canvas) {
path.rewind();
path.reset();

if (canvas != null) {
canvas.drawColor(Color.BLACK);

if (list != null && list.size() > 0) {
path.moveTo(0, list.get(0));

int sec;
for(sec = 1; sec < list.size(); sec++) {
path.lineTo(sec, (list.get(sec)/divFactor));
}

canvas.drawPath(path, paint);
}
}
}

关于android - 添加 Canvas - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7363770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com