我期待做一個遊戲,我需要涉及本機android sdk功能,如吐司,對話框,在應用程序結算,其他谷歌Api,gcm ..等 我很有經驗的android sdk當我建立工具應用程序,我使用動畫和非常簡單的表面視圖。Libgdx或原生此
但是我看了看libdgx,看起來很有前途,但唯一的缺點是「與Android本機sdk的集成不太容易」。也就是說,我不能只是開始我自己的活動或調用本機api,除非我錯過它
所以我想知道,在這種情況下,我應該與libgdx一起去嗎?還是應該跟本機路線走?
謝謝
我期待做一個遊戲,我需要涉及本機android sdk功能,如吐司,對話框,在應用程序結算,其他谷歌Api,gcm ..等 我很有經驗的android sdk當我建立工具應用程序,我使用動畫和非常簡單的表面視圖。Libgdx或原生此
但是我看了看libdgx,看起來很有前途,但唯一的缺點是「與Android本機sdk的集成不太容易」。也就是說,我不能只是開始我自己的活動或調用本機api,除非我錯過它
所以我想知道,在這種情況下,我應該與libgdx一起去嗎?還是應該跟本機路線走?
謝謝
如果你確定你不是要針對其他平臺上,你可以移動從默認的核心項目代碼到你的Android項目和工作從那裏,調用任何API爲你請。但是你會失去在桌面上測試的能力。
爲了保持其他平臺的可移植性和在桌面上測試的能力,您可以創建一個界面,列出您想要調用的所有Android API方法。將此接口的實例傳遞到Android項目的遊戲構造函數中,以便您的遊戲可以間接調用它們。您的桌面項目可以使用空的或系統日誌記錄方法傳入此接口的實例。
例子:
public class MyGdxGame extends ApplicationAdapter {
public interface AndroidAPIAdapter {
public void makeToast(String msg);
public void startActivity(int activityNumber);
}
AndroidAPIAdapter androidAPIAdapter;
public MyGdxGame (AndroidAPIAdapter androidAPIAdapter){
this.androidAPIAdapter = androidAPIAdapter;
}
//Call this from game code in core project as needed
public void makeToast(String msg){
if (androidAPIAdapter!=null)
androidAPIAdapter.makeToast(msg);
}
//Call thisfrom game code in core project as needed
public void startActivity(int activityNumber){
if (androidAPIAdapter!=null)
androidAPIAdapter.startActivity(activityNumber);
}
//...
}
有:
public class MyGameActivity extends AndroidApplication implements AndroidAPIAdapter {
public static final int ACTIVITY_SETTINGS = 0;
public static final int ACTIVITY_ABOUT = 1;
//etc.
public void onCreate (Bundle bundle) {
super.onCreate(bundle);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.useImmersiveMode = true;
initialize(new MyGdxGame(this), config);
}
@Override
public void makeToast(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT);
}
@Override
public void startActivity(int activityNumber) {
switch (activityNumber){
case ACTIVITY_SETTINGS:
startActivity(this, MySettingsActivity.class);
break;
case ACTIVITY_ABOUT:
startActivity(this, MyAboutActivity.class);
break;
}
}
}
據我所知,'LibGDX'不使用Java,你可以調用所有的Java API的Android SDK所提供的。但是如果你打算調用'c/C++',那麼你將不得不使用JNI綁定。 – 2014-10-30 04:53:57
這並不難,如果你在CORE中有一個通用的接口並且在ANDROID上有一個實現,那麼它將工作得很好,當你實例化Android啓動類時,你只需要將它提供給你的Game類。 – EpicPandaForce 2014-10-30 15:16:07