Mon*_*dji 3 java android libgdx pause
我用 Java 和 LibGdx 制作游戏
这是一个有时间限制的技巧游戏,问题是玩家可以按home键暂停应用程序,进入任务管理器,可以看到应用程序的预览来寻找他要找到的东西,而不用计算时间
所以,当播放器按下主页按钮暂停时,我想隐藏应用程序的预览
我覆盖暂停和恢复处理程序
@Override
public void pause() {
Gdx.app.log("LibGDX", "pause");
state = State.PAUSE;
Gdx.graphics.setContinuousRendering(false);
Gdx.graphics.requestRendering();
}
@Override
public void resume() {
Gdx.app.log("LibGDX", "resume");
state = State.RUN;
Gdx.graphics.setContinuousRendering(true);
}
Run Code Online (Sandbox Code Playgroud)
和我public void render(float)功能的主要部分
switch (state)
{
case RUN:
// game
break;
case PAUSE:
// a black rectangle on screen
shapeRenderer.setProjectionMatrix(camera.combined);
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
shapeRenderer.setColor(Color.BLACK);
shapeRenderer.rect(0, 0, GameScreen.WIDTH, GameScreen.HEIGHT);
shapeRenderer.end();
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
日志告诉我确实调用了暂停和恢复
但是在任务管理器中,我仍然看到游戏而不是黑色矩形
荒谬地回答:
我试过你的建议
package com.mygdx.game;
import android.os.Bundle;
import android.view.WindowManager;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
public class AndroidLauncher extends AndroidApplication {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
// --
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
// --
initialize(new MyGame(), config);
}
}
Run Code Online (Sandbox Code Playgroud)
但同样的事情,我仍然看到截图
我使用的是 Android Studio 2.1 我的智能手机:Oneplus One 和 Android 6.0.1
你有想法吗 ?谢谢
有一面旗帜。您可以使用这个小方法,例如在 onCreate() 中防止 Android 为“最近活动”列表创建“屏幕截图”。您可以根据需要激活/停用,例如仅在实际游戏板可见时才激活它等。
/**
* Sets/clears FLAG_SECURE which prevents system from creating screenshots for 'recent activities' list.
* Flag should be set while user is in vault.
*
* @param set
*/
protected void setWindowFlagSecure(boolean set) {
if (set) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
Run Code Online (Sandbox Code Playgroud)
编辑 我刚刚发现这个SO答案,关于Libgdx应用:看来你已经设置标志后调用initialize()方法。
| 归档时间: |
|
| 查看次数: |
2241 次 |
| 最近记录: |