【问题标题】:android switch between two canvasandroid在两个画布之间切换
【发布时间】:2011-06-06 15:59:38
【问题描述】:

我不知道为什么我的应用不喜欢以下内容,如果能提供任何帮助,我将不胜感激。

我有一个设置以下 onCreate 的主要活动

setContentView(new Splash(this));

Splash 是一个表面视图,其构造函数中包含以下内容

this.setBackgroundDrawable(getResources().getDrawable(R.drawable.splash));

然后我在 Splash 中有一个等待 3 秒或 3000 毫秒的线程。

然后在主activity中调用第二个surfaceview

setContentView(new GameCanvas(this));

一切正常,直到它调用 seoncds setContentView,屏幕没有改变,它停留在启动屏幕上。

知道为什么吗?

这是我的话题

new Thread(){
            public void run(){
                try{
                    Log.e("here", "sleeping");
                    sleep(3000);
                    //main being the main activity class
                    main.killSplash();
                    //Log.e("here", "KILL SPLASH");
                }catch(Exception e){
                    //
                }
            }
        }.start();

ps 我有一种感觉是因为我是从线程内部调用 switch canvas 方法

【问题讨论】:

    标签: android multithreading canvas splash-screen


    【解决方案1】:

    Activity 在您的应用程序中被设计成不同的“屏幕”,因此您应该将启动屏幕的 Activity 与您的主游戏 Activity 分开。一旦绘制了活动,我不相信更改 contentView 会触发重绘。我相信您只应该从 onCreate 方法调用 setContentView 一次。

    另请注意,每个活动都会自动在新线程中运行。

    顺便说一句,您可能想关注一些Android Developer tutorials。 setContentView 主要用于建立活动的布局和内容,通常在 XML 资源中定义,而您似乎将其视为切换视图实例的一种手段。

    【讨论】:

    • 是的,它适用于我尝试过的所有其他东西......只是由于某种原因它不喜欢这次:D
    • 我最后参加了活动,你是对的,工作得最好。谢谢
    猜你喜欢
    • 2023-04-11
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多