Skip to content Skip to sidebar Skip to footer

How To Add Libgdx As A Sub View In Android

I have main.xml as follows: ... AndroidApplication source code does, and mimic that.

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.

enter image description here

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

  1. 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
  2. Change AndroidLauncher activity to extend FragmentActivity, not AndroidApplication
  3. Implement AndroidFragmentApplication.Callbacks on the AndroidLauncher activity
  4. Create a Class that extends AndroidFragmentApplication which is the Fragment implementation for Libgdx.
  5. Add the initializeForView() code in the Fragment's onCreateView method.
  6. 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"