
以下代码显示了如何将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上显示黑屏所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)