blob: ab7756805bbb3001aa09e76ed5a9ffa1f21ecbb1 [file] [log] [blame]
package com.badlogic.gdx.tests.android;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.ListView;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.badlogic.gdx.backends.android.AndroidFragmentApplication;
import com.badlogic.gdx.tests.utils.GdxTest;
import com.badlogic.gdx.tests.utils.GdxTests;
public class FragmentTestStarter extends FragmentActivity implements AndroidFragmentApplication.Callbacks {
FrameLayout list;
FrameLayout view;
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GdxTests.tests.add(MatrixTest.class);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.HORIZONTAL);
list = new FrameLayout(this);
list.setId(1);
list.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
layout.addView(list);
list.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1));
view = new FrameLayout(this);
view.setId(2);
view.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 2));
layout.addView(view);
setContentView(layout);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().add(1, new TestListFragment()).commit();
}
}
public void onTestSelected (String testName) {
if(view != null) {
getSupportFragmentManager().beginTransaction().replace(2, TestViewFragment.newInstance(testName)).commit();
} else {
startActivity(new Intent(this, GdxTestActivity.class).putExtra("test", testName));
}
}
@Override
public void exit () {
}
public static class TestListFragment extends ListFragment {
private SharedPreferences prefs;
private FragmentTestStarter activity;
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
List<String> testNames = GdxTests.getNames();
setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, testNames));
prefs = getActivity().getSharedPreferences("libgdx-tests", Context.MODE_PRIVATE);
}
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
((ListView)view.findViewById(android.R.id.list)).setSelectionFromTop(prefs.getInt("index", 0), prefs.getInt("top", 0));
return view;
}
@Override
public void onListItemClick (ListView listView, View view, int position, long id) {
super.onListItemClick(listView, view, position, id);
Object o = this.getListAdapter().getItem(position);
String testName = o.toString();
if (activity != null) {
activity.onTestSelected(testName);
}
}
@Override
public void onAttach (Activity activity) {
super.onAttach(activity);
if (activity instanceof FragmentTestStarter) {
this.activity = (FragmentTestStarter)activity;
}
}
}
public static class TestViewFragment extends AndroidFragmentApplication {
public static TestViewFragment newInstance(String testName) {
Bundle arguments = new Bundle();
arguments.putString("test", testName);
TestViewFragment fragment = new TestViewFragment();
fragment.setArguments(arguments);
return fragment;
}
GdxTest test;
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
test = GdxTests.newTest(getArguments().getString("test"));
}
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.useImmersiveMode = true;
return initializeForView(test, config);
}
}
}