Хорошо, я сдаюсь. Я расскажу вам, что я пытался сделать, и надеюсь на вашу помощь. Я хочу создать ViewPager с некоторыми сценами LibGdx.
MainActivity. java:
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Display display = getWindowManager().getDefaultDisplay();
final int screenWidth = display.getWidth();
MyAdapter adapter = new MyAdapter(getSupportFragmentManager());
final ViewPager viewPager = findViewById(R.id.viewpager);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(0);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
public static class MyAdapter extends FragmentPagerAdapter {
MyAdapter(@NonNull FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 4;
}
@NonNull
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new Fragment1();
case 1:
return new Fragment2();
case 2:
return new Fragment3();
case 3:
return new Fragment4();
default:
return new Fragment1();
}
}
}
}
И, например, Fragment1. java:
public class Fragment1 extends Fragment {
public Fragment1() {
}
@Nullable
public View onCreateView(@Nullable LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.main_activity_screen1, container, false);
}
}
Это работает.
Теперь я хочу использовать LibGdx вместо макетов.
И я понял, что не понимаю, что делать дальше. Я нашел пример в https://github.com/kbigdelysh/libgdx-in-fragment/blob/master/android/src/com/mygdx/game/AndroidLauncher.java
Как я понимаю, я должен создать FragmentLayout в xml файле, но в примере это происходит в main. xml:
AndroidLauncher. java (MainActivity. java):
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() {
}
}
GameFragment. java:
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());
}
}
Конечно, возможно, я смогу использовать его в своем Fragment1 . java, но он расширяется от класса Fragment.
Я думаю, мне следует создать новый расширяемый класс из FragmentActivity, такой как класс AndroidLanucher, который будет программно создавать новый ресурс, который я буду использовать в классе Fragment.
Но это очень длинная цепь, и я боюсь ошибиться. Можете ли вы сказать, это правильно? Или, пожалуйста, дайте мне совет.
Извините за мой Engli sh.