【问题标题】:Combine Canvas and layout (Android)结合画布和布局(Android)
【发布时间】:2012-10-20 16:47:24
【问题描述】:

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

setContentView(R.layout.main);

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

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

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

【问题讨论】:

  • 没关系。这是我使用 onDraw() @Override protected void onDraw(Canvas c){ super.onDraw(c);油漆油漆 = 新油漆(); paint.setStyle(Paint.Style.FILL); ...
  • 为什么不给画布充气?

标签: android xml layout surfaceview android-canvas


【解决方案1】:

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

您可以在下面找到一个示例:

main.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>

TestActivity.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) {
        }
    });
}
}

【讨论】:

  • 显示 Canvas 需要 SurfaceView 吗?
  • 可以让SurfaceView背景透明吗?
  • @IgorGanapolsky 你可以直接在后台做,但是如果推荐的话,可以在Android研究的XML中显示之前的设计。
猜你喜欢
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 2012-01-25
  • 1970-01-01
相关资源
最近更新 更多