一个思路,cocos2dx调用原生安卓界面,可解决cocos坑人的listview

来源:互联网 发布:淘宝店招页头尺寸 编辑:程序博客网 时间:2024/05/29 18:00

工程中总能遇到产品提出的各种各样的需求


比如我现在做的这个项目,一个cocos2dx-3.9的工程,做的却不是一个游戏,要完成很多业务。


比如要加许多的listview,而cocos的listview性能很差,想完成产品需求,就要自己重写一套组件,不是说不可以,但是费时费力,而且性能总没有原生控件流畅


这个时候就会想起如果能在场景中调用原生界面



我想了一下,大概有一个办法可以解决这个问题


cocos2dx的界面,有两种坐标尺


第一种,xx像素,但是屏幕的总像素是固定的。第二种,百分比容器。



两种方式殊途同归,显示效果 都是对于屏幕的百分比。而整个cocos的所有场景,在安卓中都是加载于一个activity中。


那么,就可以在cocos场景代码中,利用jni调取java方法,在activity中加入fragment,覆盖在界面上实现效果;


FragmentManager fragmentManager = activity.getFragmentManager();FragmentTransaction fragmentTransaction = fragmentManager      .beginTransaction();WindowManager wm = activity.getWindowManager();CocosFragment fragment1 = CocosFragment.newInstance(getDEVICE_ID(activity) , "");fragmentTransaction.replace(android.R.id.content, fragment1);fragmentTransaction.addToBackStack(null);fragmentTransaction.commit();

fragment的背景透明,去除点击,用下面这类百分比设置界面的宽高;


DisplayMetrics displayMetrics = new DisplayMetrics();windowsmanager.getDefaultDisplay().getMetrics(displayMetrics);
LinearLayout.LayoutParams line= (android.widget.LinearLayout.LayoutParams) rela.getLayoutParams();line.width = (int)(displayMetrics.widthPixels*0.48);wi = line.width; //布局宽line.height = (int)(wi/1261*1250);hi = line.height;//布局高


用下面这类方法设置百分比的布局效果,包括距离上下左右等


starlin = (LinearLayout) contentView.findViewById(R.id.starlin);RelativeLayout.LayoutParams starlinline= (android.widget.RelativeLayout.LayoutParams) starlin.getLayoutParams();starlinline.height = (int)(wi/241.5*29);starlinline.setMargins((int)(wi/241.5*35),(int)(wi/241.5*75),(int)(wi/241.5*35),(int)(wi/241.5*0));starlin.setLayoutParams(starlinline);

亲测可用,显示效果良好,基本上接近于无缝对接





1 0
原创粉丝点击