首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合画布和布局(Android)

组合画布和布局(Android)
EN

Stack Overflow用户
提问于 2012-10-31 17:00:38
回答 1查看 15.3K关注 0票数 6

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

setContentView(R.layout.main);

当我们处理2D图形时,我们写道

Draw2D d = new Draw2D(this);

setContentView(d);

那么,如果我想同时使用这两种方法呢?我需要使用layout-xml,屏幕的一部分是冷杉图(画布)。我读到过关于surfaceView的文章,但是简单地使用Canvas呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-31 18:00:01

实际上,您可以从XML文件中膨胀您的布局,然后检索要在其上绘制的任何视图。SurfaceView对于绘图特别方便。

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

main.xml:

代码语言:javascript
复制
<?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>

TestActivity.java:

代码语言:javascript
复制
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) {
        }
    });
}
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13154360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档