当前位置:Gxlcms > mysql > 第五章(2)Libgdx应用框架之启动类和配置

第五章(2)Libgdx应用框架之启动类和配置

时间:2021-07-01 10:21:17 帮助过:20人阅读

对于每个目标平台而言(本章只讲述 Android ),启动类必须实现。这个类实现一个后端特定的应用接口, ApplicationListener 实现应用逻辑。启动类对平台有一定的依赖性,接下来我们看看怎样实例化和配置 android 的后端。 本章假设你已经根据第四章( 1 )的

对于每个目标平台而言(本章只讲述Android),启动类必须实现。这个类实现一个后端特定的应用接口,ApplicationListener实现应用逻辑。启动类对平台有一定的依赖性,接下来我们看看怎样实例化和配置android的后端。

本章假设你已经根据第四章(1)的内容配置好android项目。

Android应用不使用main()方法作为入口,而是通过一个Activity。打开my-gdx-game-android项目中的MainActivity.java类:

package com.me.mygdxgame;

import android.os.Bundle;

importcom.badlogic.gdx.backends.android.AndroidApplication;

importcom.badlogic.gdx.backends.android.AndroidApplicationConfiguration;

public class MainActivity extendsAndroidApplication {

   @Override

   public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);        

       AndroidApplicationConfiguration cfg = newAndroidApplicationConfiguration();

       cfg.useGL20 = false;        

       initialize(new MyGdxGame(), cfg);

    }

}


主入口方法是ActivityOnCreate()方法。注意MainActivity继承自AndroidApplicationAndroidApplication继承自Activity。一旦配置好,AndroidApplication.initialize()就会被调用,传递到ApplicationListenerMyGdxGame)。

Android可以有多个ActivityLibgdx游戏通常只有一个Activity组成。游戏的不同的屏幕在libgdx中实现,而不是分成多个Activity。这样做的原因是创建一个新的Activity同样需要创建一个新的OpenGL 环境,也就意味着所有的图像资源被重新加载。

AndroidManifest.xml文件

除了AndroidApplicationConfigurationAndroid应用也通过AndroidManifest.xml进行配置,可以在Android项目的根目录下找到这个文件:





 

   

 

   

       

           

                

                

           

       

   

 



目标SDk版本

这是至关重要的,如果希望自己的应用运行在Android1.5以上的版本targetSdkVersion的值最小为6.如果这个值没有设置,应用将运行在传统模式。实际绘图区将小于屏幕实际分辨率,很难看。

屏幕方向和配置更改

除了targetSdkVersionscreenOrientation configChanges属性也需要也需要设置。

screenOrientation属性指明应用的方向。一旦省略这个属性,应用将可以同时在横屏或竖屏中运行。

configChanges属性至关重要,省略这个属性意味着每次键盘点击或方向变化时,应用将重新启动。如果省略screenOrientation,一个libgdx将获得一个ApplicationListener.resize()指示方向变化。可以根据情况布局你的应用。

权限

如果应用需要写入SD卡,需要上网,需要保持屏幕唤醒或者记录音频等,必须在AndroidManifest.xml中添加以下权限:



       

       

         


用户经常怀疑这些权限的用处,所以要明智的进行选择。

对于工作后锁定,设置相应的AndroidApplicationConfiguration.useWakeLock为true。

如果一个游戏不需要加速度计和罗盘访问,通过设置AndroidApplicationConfiguration 中的useAccelerometer和useCompass设置为false。

LiveWallpapers

Libgdx可以通过较为简单的方式创建基于AndroidLiveWallpapers。一个livewallpaper的启动类称为AndroidLiveWallpaperService,以下是示例:

package com.mypackage;

 

// imports snipped for brevity 

 

public class LiveWallpaper extendsAndroidLiveWallpaperService {

       @Override

       public ApplicationListener createListener () {

                return newMyApplicationListener();

       }

 

       @Override

       public AndroidApplicationConfiguration createConfig () {

                return newAndroidApplicationConfiguration();

       }

 

       @Override

       public void offsetChange (ApplicationListener listener, float xOffset,float yOffset, float xOffsetStep, float yOffsetStep,

                int xPixelOffset, intyPixelOffset) {

               Gdx.app.log("LiveWallpaper", "offset changed: " +xOffset + ", " + yOffset);

       }

}


createListener() createConfig()方法将在livepaper在主屏幕上创建时调用。

offsetChange()方法将被渲染线程调用,所以你不需要更改。

除了启动类,你也需要创建一个XML文件描述你的Wallpaper。我们可以定义它的名字为livewallpaper.xml。在你的res文件夹下创建一个xml文件夹,将文件放入其中。





这里定义一个thumbnail显示你的LWP中,当用户点击LWPSetting时将显示一个Activity或者描述。通过Activity改变背景颜色,你也可以存储到SharedPreferences,将它们之后通过Gdx.app.getPreferences()载入到LWP中。

最后,你需要添加一些东西到AndroidManifest.xml中,以下是一个简单的示例:





            

       

                

       

                

                

                

           

                

           

           

                                             

       



Daydream

Android4.2开始,用户可以设置Daydreams,会在设备闲置或停靠时显示。这些daydream类似屏保或者显示相册之类的东西。Libgdx可以让你轻松的编写Daydream.

Daydream的启动类为AndroidDaydream,以下是示例:

packagecom.badlogic.gdx.tests.android;

 

importandroid.annotation.TargetApi;

importandroid.util.Log;

 

importcom.badlogic.gdx.ApplicationListener;

importcom.badlogic.gdx.backends.android.AndroidApplicationConfiguration;

importcom.badlogic.gdx.backends.android.AndroidDaydream;

importcom.badlogic.gdx.tests.MeshShaderTest;

 

@TargetApi(17)

publicclass Daydream extends AndroidDaydream {

   @Override

   public void onAttachedToWindow(){

      super.onAttachedToWindow();      

          setInteractive(false);

 

      AndroidApplicationConfiguration cfg = newAndroidApplicationConfiguration();

      cfg.useGL20 = true;

      ApplicationListener app = newMeshShaderTest();

      initialize(app, cfg);

   }

}


简单的继承了AndroidDaydream,重写了onAttachedToWindow,设置你的配置和ApplicationListener并初始化你的daydream。

处理daydream本身你可以提供一个Activity来设置daydream。这可以是一个普通的Activity,或者一个libgdxAndroidApplication(继承自Activity)。一个空的Activity作为例子:

packagecom.badlogic.gdx.tests.android;

 

importandroid.app.Activity;

 

publicclass DaydreamSettings extends Activity {

 

}


这个Activity必须指明到daydream服务的元数据。在res/xml下创建xml文件,如下:



最后,在AndroidManifest.xml中添加Activity的信息,一个daydream的服务描述。如下:



   

           

           

   

   


人气教程排行