How To Add Libgdx As A Sub View In Android
Solution 2:
I have created a Hello World program on github for libgdx running in a fragment using Android Studio 2.1. It follows the instructions on the official libgdx wiki.
AndroidLauncher class:
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.badlogic.gdx.backends.android.AndroidFragmentApplication;
publicclassAndroidLauncherextendsFragmentActivityimplementsAndroidFragmentApplication.Callbacks {
@OverridepublicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
// Create libgdx fragmentGameFragmentlibgdxFragment=newGameFragment();
// Put it inside the framelayout (which is defined in the layout.xml file).
getSupportFragmentManager().beginTransaction().
add(R.id.content_framelayout, libgdxFragment).
commit();
}
@Overridepublicvoidexit() {
}
}
The GameFragment class:
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.badlogic.gdx.backends.android.AndroidFragmentApplication;
publicclassGameFragmentextendsAndroidFragmentApplication{
@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// return the GLSurfaceView on which libgdx is drawing game stuffreturn initializeForView(newMyGdxGame());
}
}
layout.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/main_layout"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><FrameLayoutandroid:id="@+id/content_framelayout"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="2"></FrameLayout><TextViewandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:background="#FF0000"android:textColor="#00FF00"android:textSize="40dp"android:text="I'm just a TextView here with red background :("/></LinearLayout>
MyGdxGame class:
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
publicclassMyGdxGameextendsApplicationAdapter {
SpriteBatch batch;
Texture img;
private BitmapFont font;
@Overridepublicvoidcreate() {
batch = newSpriteBatch();
img = newTexture("badlogic.jpg");
font = newBitmapFont();
font.setColor(Color.BLUE);
}
@Overridepublicvoidrender() {
Gdx.gl.glClearColor(0, 0, 0, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
//batch.draw(img, 0, 0);
font.getData().setScale(6.0f);
font.draw(batch, "Hello World from libgdx running in a fragment! :)", 100, 300);
batch.end();
}
@Overridepublicvoiddispose() {
batch.dispose();
img.dispose();
}
}
Make sure you've added the following:
compile"com.android.support:support-v4:24.1.1"
To the project gradle script in the "dependencies {.}" section inside project (":android") section.
Solution 3:
Using a libgdx project as a view inside an Android app is now documented clearly, with example code, in the libgdx wiki, implemented as a Fragment (the best practice for modern Android apps):
- Add Android V4 Support Library to the -android project and its build path if you haven't already added it. This is needed in order to Extend FragmentActivity later
- Change AndroidLauncher activity to extend FragmentActivity, not AndroidApplication
- Implement AndroidFragmentApplication.Callbacks on the AndroidLauncher activity
- Create a Class that extends AndroidFragmentApplication which is the Fragment implementation for Libgdx.
- Add the initializeForView() code in the Fragment's onCreateView method.
- Finally, replace the AndroidLauncher activity content with the Libgdx Fragment.
Solution 4:
@OverridepublicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AndroidApplicationConfigurationcfg=newAndroidApplicationConfiguration();
cfg.useGL20 = false;
//initialize(new LoveHearts(), cfg);
LinearLayout lg=(LinearLayout)findViewById(R.id.game);
lg.addView(initializeForView(newLoveHearts(), cfg));
}
Post a Comment for "How To Add Libgdx As A Sub View In Android"