Heim > Datenbank > MySQL-Tutorial > 第五章(2)Libgdx应用框架之启动类和配置

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 15:12:24
Original
1237 Leute haben es durchsucht

对于每个目标平台而言(本章只讲述 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);

    }

}
Nach dem Login kopieren


 

 

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

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

AndroidManifest.xml文件

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

<?xml version="1.0"encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.me.mygdxgame" android:versioncode="1" android:versionname="1.0">

 

   <uses-sdk android:minsdkversion="5" android:targetsdkversion="17"></uses-sdk>

 

   <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">

       <activity android:name=".MainActivity" android:label="@string/app_name" android:screenorientation="landscape" android:configchanges="keyboard|keyboardHidden|orientation|screenSize">

           <intent-filter>

                <name></name>

                <name></name>

           </intent-filter>

       </activity>

   </application>

 

</manifest>
Nach dem Login kopieren


 

 

目标SDk版本

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

屏幕方向和配置更改

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

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

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

权限

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

<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>

       <name></name>

       <name></name>

       <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>  
Nach dem Login kopieren


 

 

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

对于工作后锁定,设置相应的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);

       }

}
Nach dem Login kopieren


 

 

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

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

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

<?xml version="1.0"encoding="UTF-8"?>

<wallpaper xmlns:android="http://schemas.android.com/apk/res/android" android:thumbnail="@drawable/ic_launcher" android:description="@string/description" android:settingsactivity="com.mypackage.LivewallpaperSettings"></wallpaper>
Nach dem Login kopieren


 

 

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

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

<?xml version="1.0"encoding="utf-8"?>

<android package="com.mypackage" android:versioncode="1" android:versionname="1.0" android:installlocation="preferExternal">

       <uses-sdk android:minsdkversion="7" android:targetsdkversion="14"></uses-sdk>     

       <name></name>

                

       <application android:icon="@drawable/icon" android:label="@string/app_name">

                <name android:label="Livewallpaper Settings"></name>

                

                <name android:label="@string/app_name" android:icon="@drawable/icon" android:permission="android.permission.BIND_WALLPAPER">

           <intent-filter>

                <name></name>

           </intent-filter>

           <meta-data android:name="android.service.wallpaper" android:resource="@xml/livewallpaper"></meta-data>

                                             

       </name></application>


</android>
Nach dem Login kopieren


 

 

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);

   }

}
Nach dem Login kopieren


 

 

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

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

 

packagecom.badlogic.gdx.tests.android;

 

importandroid.app.Activity;

 

publicclass DaydreamSettings extends Activity {

 

}
Nach dem Login kopieren


 

 

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

<android android:settingsactivity="com.badlogic.gdx.tests.android/.DaydreamSettings"></android>
Nach dem Login kopieren


 

 

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

<name android:label="@string/app_name" android:icon="@drawable/icon" android:exported="true">

   <intent-filter>

           <action android:name="android.service.dreams.DreamService"></action>

           <name></name>

   </intent-filter>

   <name android:resource="@xml/daydream"></name>


</name>
Nach dem Login kopieren


 

 

 

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage