gpt4 book ai didi

android - 结合 Canvas 和布局 (Android)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:12 25 4
gpt4 key购买 nike

我关于 Android UI 的问题。当我们使用 XML 布局时,我们编写(例如)

setContentView(R.layout.main);

当我们使用 2d 图形时,我们会编写

Draw2D d = new Draw2D(this); <br/>
setContentView(d);

如果我想同时使用两者怎么办?我需要使用 layout-xml 并且屏幕的一部分是 fir painting (Canvas)。我阅读了有关 surfaceView 的内容,但如何简单地使用 Canvas?

最佳答案

您实际上可以从 XML 文件扩充您的布局,然后检索任何 View 以在其上绘制。 SurfaceView 绘图特别方便。

你可以在下面找到一个例子:

主.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<SurfaceView
android:id="@+id/surface"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</FrameLayout>

测试 Activity .java:

public class TestActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.main);

SurfaceView surface = (SurfaceView) findViewById(R.id.surface);
surface.getHolder().addCallback(new Callback() {

@Override
public void surfaceCreated(SurfaceHolder holder) {
// Do some drawing when surface is ready
Canvas canvas = holder.lockCanvas();
canvas.drawColor(Color.RED);
holder.unlockCanvasAndPost(canvas);
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}

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

关于android - 结合 Canvas 和布局 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13154360/

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