将Libgdx游戏加载到Fragment会在android上显示黑屏

将Libgdx游戏加载到Fragment会在android上显示黑屏,第1张

概述以下代码显示了如何将Libgdx游戏(MyGdxGame)加载到LinearLayout.在游戏创建我设置了一个相机并加载一个小的WAV声音文件.加载视图后加载纹理.问题是在片段转换到此片段期间,存在明显的黑色闪烁和延迟.是否有可能减少这种方式并改善片段转换.publicViewonCreateView(LayoutInf

以下代码显示了如何将libgdx游戏(MyGdxGame)加载到linearLayout.在游戏创建我设置了一个相机并加载一个小的WAV声音文件.加载视图后加载纹理.

问题是在片段转换到此片段期间,存在明显的黑色闪烁和延迟.是否有可能减少这种方式并改善片段转换.

 public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,                         Bundle savedInstanceState) {    VIEw vIEw = null;    Bundle bundle = getArguments();    if (bundle != null) {        this.input = bundle.getParcelable(Utils.FRAGMENT_input_KEY);    } else {        input = new Fragmentinput();    }    vIEw = inflater.inflate(R.layout.solve, container, false);    surface = (linearLayout) vIEw.findVIEwByID(R.ID.puzzleVIEw);    activity = (MainActivity) getActivity();    com.badlogic.gdx.graphics.color color = new com.badlogic.gdx.graphics.color(color.red(input.backcolor) / 255f,            color.green(input.backcolor) / 255f,            color.blue(input.backcolor) / 255f, 1.0f);    size = input.pIEceCount;    cols = input.columns;    GameData gdata = new GameData();    gdata.rows = size / cols;    gdata.columns = cols;    gdata.backcolor = color;    gdata.setcategory(input.category);    if (input.rotated) {        gameVIEw = new MyGdxGameRotate(this, gdata);    } else {        gameVIEw = new MyGdxGame(this, gdata);    }    if (surface != null) {        AndroIDApplicationConfiguration config = new AndroIDApplicationConfiguration();        VIEw game = initializeforVIEw(gameVIEw, config);        surface.addVIEw(game);    }    return vIEw;}

解决方法:

onCreateVIEw在显示片段之前被调用,在这里做繁重的工作意味着你延迟显示该视图(‘黑色闪光’),而应该开始将繁重的工作移动到onResume或至少onVIEwCreated

其次,将负载放在后台线程上,以便UI线程可以继续处理片段的显示.在AndroID中执行此 *** 作的最简单方法是使用AsyncTask,这将允许您在加载所有内容时轻松通知UI

public voID onVIEwCreated() {    new AsyncTask<VoID, VoID, VoID>() {        public VoID doInBackground() {            //Do your loading        }        public voID onPostExecute(VoID aVoID) {            //Update display, play sound (on resumed fragment)        }    }.execute();}

如果您是AndroID新手,请注意使用此方法泄露上下文

总结

以上是内存溢出为你收集整理的将Libgdx游戏加载到Fragment会在android上显示黑屏全部内容,希望文章能够帮你解决将Libgdx游戏加载到Fragment会在android上显示黑屏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1118511.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存