Java 可提取韩元';t在SurfaceView、线程实现上绘制,而不重写onDraw

Java 可提取韩元';t在SurfaceView、线程实现上绘制,而不重写onDraw,java,android,multithreading,drawable,surfaceview,Java,Android,Multithreading,Drawable,Surfaceview,我真的很困惑,为什么这不起作用。尝试使用布局中的SurfaceView和要绘制的线程(而不是重写onDraw函数)在屏幕上绘制简单的PNG。它本质上与LunarLander示例项目的实现完全相同(我几乎在沮丧中撕毁了整个代码集) 我已经通过日志对它进行了测试,我知道精灵正在“绘制”到画布上,但窗口中没有显示任何内容 下面是代码,希望不要太长(去掉不重要的部分): activity_pannenkoekenhuis.xml(layout/) 提前谢谢。嘎,算了吧。由于某种原因,需要删除setBac

我真的很困惑,为什么这不起作用。尝试使用布局中的SurfaceView和要绘制的线程(而不是重写onDraw函数)在屏幕上绘制简单的PNG。它本质上与LunarLander示例项目的实现完全相同(我几乎在沮丧中撕毁了整个代码集)

我已经通过日志对它进行了测试,我知道精灵正在“绘制”到画布上,但窗口中没有显示任何内容

下面是代码,希望不要太长(去掉不重要的部分):

activity_pannenkoekenhuis.xml(layout/)


提前谢谢。

嘎,算了吧。由于某种原因,需要删除setBackgroundColor(),因为它可能正在绘制图形。愚蠢的错误。

只是一些友好的建议。您的帖子太长,包含太多代码,因此可能无法吸引认真的用户。如果可以的话,尽量减少你的问题陈述,把你的代码缩减到一个段落,重点放在一行不符合计划的内容上。谢谢,把大部分内容都删掉了。希望能更清楚一点。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<com.example.pannenkoekenhuis.MainView
    android:id="@+id/pannenkoekenhuis_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<RelativeLayout
    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"
    tools:context=".Pannenkoekenhuis" >
</RelativeLayout>

</FrameLayout>
public class MainView extends SurfaceView implements SurfaceHolder.Callback {

class MainThread extends Thread {
    SurfaceHolder surfaceHolder;
    Context context;
    Handler handler;

    HandleResources hResources;
    HandleGame hGame;

    public MainThread(SurfaceHolder surfaceHolder, Context context,
            Handler handler) {
        this.surfaceHolder = surfaceHolder;
        this.context = context;
        this.handler = handler;
        hResources = new HandleResources(context);
        hGame = new HandleGame();

        init();
    }

    @Override
    public void run() {
        while (true) {
            Canvas canvas = null;
            try {
                canvas = surfaceHolder.lockCanvas(null);
                synchronized (surfaceHolder) {
                                            Drawable d = context.getResources().getDrawable(R.drawable.s_char);
                    d.draw(canvas);
                }
            } finally {
                if (canvas != null) {
                    surfaceHolder.unlockCanvasAndPost(canvas);
                }
            }
        }
    }
}

MainThread thread;

public MainView(Context context, AttributeSet attrs) {
    super(context, attrs);

    SurfaceHolder surfaceHolder = getHolder();
    getHolder().addCallback(this);

    thread = new MainThread(surfaceHolder, context, new Handler());

    setFocusable(true);
}
}