2012-11-08 47 views

回答

0

是的,你可以做到这一点。 为此,您必须编写一个本地函数,它将返回设备的dpi。 因此,您可以设置资源的目录。 这是java中的本机代码,它将返回屏幕的dpi。

写代码Cocos2dxActivity(对了cocos2d-x的Android库文件)

static int dpiValue; 
DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
dpiValue = dm.densityDpi; 

public static int deviceDPI() 
{ 
    return dpiValue; 
} 

现在您的AppDelegate.cpp你可以得到这个值,并把资源文件夹相应

这里是例子代码为

//getting dpi in case of android 
JniMethodInfo t; 
JniHelper::getStaticMethodInfo(t 
     , "org/cocos2dx/lib/Cocos2dxActivity" 
     , "deviceDPI" 
     , "()I"); 
     int deviceDPI = t.env->CallIntMethod(t.classID, t.methodID, NULL); 
CCLog("DPI of screen is %d", deviceDPI); 
if(deviceDPI <= 120) 
{ 
    //ldpi 
} 
else if(deviceDPI <= 160) 
{ 
    //mdpi 
} 
else if(deviceDPI <= 240) 
{ 
    //mdpi 
} 
else 
{ 
    //xhdpi 
} 

希望这可以帮助你! :)

0

你可以简单的使用功能CCDevice::getDPI()

如果不帮你,你应该仔细阅读this one,它真的帮了我很多。

希望它可以帮助你太