6

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

setContentView(R.layout.main);

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

Draw2D d = new Draw2D(this);
setContentView(d);

那么如果我想同时使用两者呢?我需要使用 layout-xml 并且屏幕的一部分是冷杉绘画(Canvas)。我阅读了有关surfaceView 的信息,但是使用Canvas 简单呢?

4

1 回答 1

9

您实际上可以从 XML 文件中扩展您的布局,然后检索任何视图以在其上绘制。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>

测试活动.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) {
        }
    });
}
}
于 2012-10-31T10:00:01.400 回答