相关疑难解决方法(0)

如何在画布中使用动画框架?

我想使用某些动画,例如在画布中弹跳.是否可以在里面使用动画插值器?

在我的情况下,我想将图像从0度旋转到180度,最后反弹.

这怎么可能?

android android-animation

62
推荐指数
1
解决办法
6万
查看次数

使用SurfaceView编程和用于游戏开发的线程策略

我正在使用SurfaceView和渲染线程来开发基于LunarLander等结构的游戏.

但是,我遇到了很多问题,我想在这里指出一切.我希望任何想要开发游戏的人都不需要再与他们斗争了.任何对结构有更好了解的人都可以分享他们的经验,因为我还是新手,并渴望学习:)

[1] thread.start()不应多次调用该函数.

在创建表面时创建线程时提到的许多文章,以便在使用该方法暂停活动后再次渲染:

public void surfaceCreated(SurfaceHolder holder) {
    // start the thread here so that we don't busy-wait in run()
    // waiting for the surface to be created
    if (thread.getState() == Thread.State.TERMINATED)
    {
        thread = new LunarThread(getHolder(), getContext(), getHandler());
    }
    thread.setRunning(true);
    thread.start();
}
Run Code Online (Sandbox Code Playgroud)

您可以看到,如果线程未终止且函数被调用,则活动崩溃.

[2]如果您按下"电源"或"红色电话"按钮,或者电话闲置几分钟,则活动将处于onPause()状态,但线程仍在运行.这是一个非常糟糕的做法,所以我需要找到让线程停止的方法,然后重新开始onResume().

[3]如果屏幕锁定是纵向/横向,并且您的游戏粘贴到另一个方向,则屏幕锁定会强制您"定向"一次.这意味着再次开始活动.我仍然无法找到解决方案.(正如我在Android屏幕方向错误中提到的那样)

以下是我修复这些问题的代码:

UIThread

public class UIThread extends Activity
{
    private gameView gameview;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        gameview = (gameView) findViewById(R.id.gameview);
    }
    protected …
Run Code Online (Sandbox Code Playgroud)

multithreading android surfaceview android-activity

15
推荐指数
1
解决办法
2万
查看次数

什么时候发生surfaceDestroyed()

我无法确定何时surfaceDestroyed()发生.我试图让我的线程停止在surfaceDestroyed()方法(SurfaceView)中运行,但看起来我的表面永远不会被破坏...有人能告诉我这是什么时候发生的吗?或者如何触发它?

android surfaceview

10
推荐指数
1
解决办法
2万
查看次数

SurfaceView的renderingThread是否与视图或活动具有相同的生命周期?

在创建SurfaceView时,通常还要创建一个单独的线程来绘制到曲面上.是否更好的编程实践是在活动同时创建和销毁线程,或者同时表面是什么?

这两种方式有哪些优点/缺陷?

android design-patterns surfaceview

6
推荐指数
1
解决办法
3304
查看次数

按下主页按钮后打开应用程序时强制关闭

我有一个具有surfaceview并在线程上运行的游戏.如果我在游戏的时候按下HOME按钮,然后我再次通过图标打开游戏,我会收到一个力量.可能是什么问题?

android

0
推荐指数
1
解决办法
4430
查看次数