How to add libgdx as a sub view in android

前端 未结 4 1361
别那么骄傲
别那么骄傲 2020-12-24 02:28

I have main.xml as follows:

  
     ...
     

        
4条回答
  •  清歌不尽
    2020-12-24 03:25

    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;
    
    public class AndroidLauncher extends FragmentActivity implements  AndroidFragmentApplication.Callbacks {
        @Override
        public void onCreate (Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.layout);
    
            // Create libgdx fragment
            GameFragment libgdxFragment = new GameFragment();
    
            // Put it inside the framelayout (which is defined in the layout.xml file).
            getSupportFragmentManager().beginTransaction().
                    add(R.id.content_framelayout, libgdxFragment).
                    commit();
        }
    
        @Override
        public void exit() {
    
        }
    
    
    }
    

    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;
    
    public class GameFragment extends AndroidFragmentApplication{
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            // return the GLSurfaceView on which libgdx is drawing game stuff
            return initializeForView(new MyGdxGame());
        }
    }
    

    layout.xml:

    
    
    
        
        
    
        
    
    
    

    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;
    
    public class MyGdxGame extends ApplicationAdapter {
        SpriteBatch batch;
        Texture img;
        private BitmapFont font;
    
    
        @Override
        public void create () {
            batch = new SpriteBatch();
            img = new Texture("badlogic.jpg");
            font = new BitmapFont();
            font.setColor(Color.BLUE);
        }
    
        @Override
        public void render () {
            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();
        }
    
        @Override
        public void dispose () {
            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.

提交回复
热议问题