diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/MainActivity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/MainActivity.java index 0649149..5a655c5 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/MainActivity.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/MainActivity.java @@ -9,30 +9,49 @@ import org.ntlab.radishforandroidstudio.cactusClient.views.PlayerFragment; import org.ntlab.radishforandroidstudio.cactusClient.views.StartFragment; +/** + * Cactusのメインアプリケーション + */ public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - //splash - // ここで5秒間スリープし、スプラッシュを表示させたままにする。 + + splash(); + + //fragmentの設定 + Fragment fragment = new StartFragment(); + addFragment(R.id.fragment_place, fragment, "StartFragment"); + setContentView(R.layout.activity_main); + } + + + public void splash() { + //3秒間スリープし、スプラッシュを表示。 try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } - setTheme(R.style.AppTheme_NoActionBar); setContentView(R.layout.activity_main); - - //fragmentの設定 - Fragment fragment; - fragment = new StartFragment(); - getSupportFragmentManager().beginTransaction().add(R.id.fragment_place, fragment).commit(); - setContentView(R.layout.activity_main); } + protected void addFragment(int containerViewId, Fragment fragment, String tag) { + getSupportFragmentManager().beginTransaction().add(containerViewId, fragment, tag).commit(); + } + + protected void replaceFragment(int containerViewId, Fragment fragment, String tag, boolean flag) { + if (flag) { + getSupportFragmentManager().beginTransaction().replace(containerViewId, fragment, tag).addToBackStack(null).commit(); + } else { + getSupportFragmentManager().beginTransaction().replace(containerViewId, fragment, tag).commit(); + } + } + + @Override public void onBackPressed() { FragmentManager manager = getSupportFragmentManager(); @@ -48,7 +67,6 @@ if (fragment instanceof PlayerFragment) { manager.beginTransaction().remove(fragment).commit(); manager.popBackStack(); -// super.onBackPressed(); return; } super.onBackPressed(); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/BaseFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/BaseFragment.java new file mode 100644 index 0000000..b89c9b2 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/BaseFragment.java @@ -0,0 +1,32 @@ +package org.ntlab.radishforandroidstudio.cactusClient.views; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import org.ntlab.radishforandroidstudio.R; + +public class BaseFragment extends Fragment { + + public BaseFragment() { + // Required empty public constructor + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + // Inflate the layout for this fragment + View view = inflater.inflate(R.layout.fragment_base, container, false); + return view; + } + + + protected void replaceFragment(int containerViewId, Fragment fragment, boolean flag) { + if (flag) { + getFragmentManager().beginTransaction().replace(containerViewId, fragment).addToBackStack(null).commit(); + } else { + getFragmentManager().beginTransaction().replace(containerViewId, fragment).commit(); + } + } +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/CharactersFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/CharactersFragment.java index e1a3683..899525d 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/CharactersFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/CharactersFragment.java @@ -2,9 +2,6 @@ import android.content.Context; import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -29,7 +26,7 @@ import java.util.HashMap; import java.util.Map; -public class CharactersFragment extends Fragment { +public class CharactersFragment extends BaseFragment { private CharactersFragmentConnection connection; private String instanceId; private Account account; @@ -59,10 +56,7 @@ @Override public void onClick(View v) { - FragmentManager manager = getFragmentManager(); - FragmentTransaction transaction = manager.beginTransaction(); - transaction.replace(R.id.fragment_place, new InstancesFragment()); - transaction.commit(); + replaceFragment(R.id.fragment_place, new InstancesFragment(), false); } }); @@ -106,8 +100,7 @@ con.setCallBack(new CallBack() { @Override public void onResponse(String response) { - Map player = JSON.decode(response, new TypeReference>() { - }); + Map player = JSON.decode(response, new TypeReference>() {}); // TODO: 複数帰ってきた,もしくは帰ってこなかったときの処理 // プレイ画面へ @@ -117,18 +110,13 @@ String[] splitedUri = ((String) (player.keySet().toArray()[0])).split("/"); bundle.putString("playerId", splitedUri[splitedUri.length - 1]); bundle.putString("instanceId", instanceId); - PlayerFragment fragment = new PlayerFragment(); + PlayerFragment fragment = new PlayerFragment(); fragment.setArguments(bundle); - FragmentManager manager = getFragmentManager(); - FragmentTransaction transaction = manager.beginTransaction(); - transaction.replace(R.id.fragment_place, fragment); - transaction.addToBackStack(null); + replaceFragment(R.id.fragment_place, fragment,true); characterIds.clear(); - transaction.commit(); } }); - con.doPost(); } }); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/InstancesFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/InstancesFragment.java index 82b2833..e9a2e43 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/InstancesFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/InstancesFragment.java @@ -2,9 +2,6 @@ import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -24,7 +21,7 @@ import java.util.HashMap; import java.util.Map; -public class InstancesFragment extends Fragment { +public class InstancesFragment extends BaseFragment { private InstancesFragmentConnection connection; ArrayList> listInstances; ListView listView; @@ -32,8 +29,8 @@ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.instances_fragment, container, false); + View view = inflater.inflate(R.layout.instances_fragment, container, false); + return view; } @Override @@ -56,7 +53,8 @@ listNames.add(entry.getValue().getName()); } // ListViewをセット - ArrayAdapter adapter = new ArrayAdapter(getContext(), android.R.layout.simple_list_item_1, listNames); + ArrayAdapter adapter; + adapter = new ArrayAdapter(getContext(), android.R.layout.simple_list_item_1, listNames); listView = (ListView) view.findViewById(R.id.list_view); listView.setAdapter(adapter); @@ -70,15 +68,12 @@ //InstanceNum+で選ばれたインスタンスわかるで!数字は0からやで!例えば1はデータ2やで!やで String[] s = listInstances.get(InstanceNum).getKey().split("/"); - FragmentManager manager = getFragmentManager(); - FragmentTransaction transaction = manager.beginTransaction(); CharactersFragment fragment = new CharactersFragment(); Bundle bundle = new Bundle(); bundle.putSerializable("instanceId", s[s.length - 1]); fragment.setArguments(bundle); - transaction.replace(R.id.fragment_place, fragment, "characters_fragment"); - transaction.addToBackStack(null); - transaction.commit(); + replaceFragment(R.id.fragment_place, fragment, true); + } }); } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/LoginFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/LoginFragment.java index 2b87c88..df73261 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/LoginFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/LoginFragment.java @@ -1,9 +1,6 @@ package org.ntlab.radishforandroidstudio.cactusClient.views; import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -22,14 +19,13 @@ import org.ntlab.radishforandroidstudio.framework.network.CallBack; -public class LoginFragment extends Fragment { +public class LoginFragment extends BaseFragment { private LoginFragmentConnection connection; private Boolean testFlag = false; //trueにすると、通信せずにインスタンス画面へ遷移します。つまり、通信なしでテストするなら"true"にせい @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + return inflater.inflate(R.layout.login_fragment, container, false); } @@ -41,12 +37,9 @@ button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - //Toast.makeText(getActivity(), "hoge!", Toast.LENGTH_SHORT).show(); - FragmentManager manager = getFragmentManager(); - FragmentTransaction transaction = manager.beginTransaction(); - transaction.addToBackStack(null); - transaction.replace(R.id.fragment_place, new SignUpFragment()); - transaction.commit(); +// Toast.makeText(getActivity(), "hoge!", Toast.LENGTH_SHORT).show(); + replaceFragment(R.id.fragment_place, new SignUpFragment(),true); + } }); Button loginButton = (Button) getActivity().findViewById(R.id.login); @@ -58,10 +51,7 @@ // /**************************************************************** if (testFlag) { - FragmentManager manager = getFragmentManager(); - FragmentTransaction transaction = manager.beginTransaction(); - transaction.replace(R.id.fragment_place, new InstancesFragment()); - transaction.commit(); + replaceFragment(R.id.fragment_place, new InstancesFragment(), false); return; } // **********************************************************************/ @@ -82,17 +72,15 @@ //通信した時の処理を書くのだよ URIAddressedAccount lac = JSON.decode(response, new TypeReference() { }); -// System.out.println(response); Account user = lac.getAccount(); if (user.isLogin()) { Toast.makeText(getActivity(), "ログインに成功しました。", Toast.LENGTH_SHORT).show(); Cactus c = (Cactus) getActivity().getApplication(); c.setMyAccount(user); c.setAddressedAccount(lac); - FragmentManager manager = getFragmentManager(); - FragmentTransaction transaction = manager.beginTransaction(); - transaction.replace(R.id.fragment_place, new InstancesFragment()); - transaction.commit(); + + //画面切り替え + replaceFragment(R.id.fragment_place, new InstancesFragment(), false); } else { Toast.makeText(getActivity(), "ログインに失敗しました。", Toast.LENGTH_SHORT).show(); } @@ -100,7 +88,10 @@ }); connection.addFormParam("userID", userName.getText().toString()); connection.addFormParam("userPass", passWord.getText().toString()); - if (testFlag == false) connection.doPut(); + + if (!testFlag) { + connection.doPut(); + } } }); } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java index f3a8517..2204634 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/PlayerFragment.java @@ -139,6 +139,11 @@ } @Override + protected void update(long interval) { + super.update(interval); + } + + @Override protected void progress(long interval) { super.progress(interval); @@ -154,6 +159,7 @@ FragmentTransaction transaction = fragmentManager.beginTransaction(); RWTUIFragment f = new RWTUIFragment(); f.setListener(this); + View uiLayout = parentView.findViewById(R.id.ui_layout); uiLayout.setOnTouchListener(f); transaction.add(R.id.ui_layout, f); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/SignUpFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/SignUpFragment.java index 0631c1c..ddd2fae 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/SignUpFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/SignUpFragment.java @@ -1,9 +1,6 @@ package org.ntlab.radishforandroidstudio.cactusClient.views; import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -19,13 +16,11 @@ import org.ntlab.radishforandroidstudio.cactusClient.models.URIAddressedAccount; import org.ntlab.radishforandroidstudio.framework.network.CallBack; -public class SignUpFragment extends Fragment { +public class SignUpFragment extends BaseFragment { private SignUpFragmentConnection connection; @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.sign_up_fragment, container, false); } @@ -39,13 +34,7 @@ button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - //Toast.makeText(getActivity(), "hoge!", Toast.LENGTH_SHORT).show(); - FragmentManager manager = getFragmentManager(); - FragmentTransaction transaction = manager.beginTransaction(); - transaction.addToBackStack(null); - transaction.replace(R.id.fragment_place, new LoginFragment()); - - transaction.commit(); + replaceFragment(R.id.fragment_place, new LoginFragment(), true); } }); @@ -81,8 +70,7 @@ //通信した時の処理を書くのだよ // URIAddressedAccount ac = JSON.decode(response,URIAddressedAccount.class); // System.out.println("JSON.decode(response, URIAddressedAccount.class);\viewPoint"+ac.getUri()); - URIAddressedAccount ac2 = JSON.decode(response, new TypeReference() { - }); + URIAddressedAccount ac2 = JSON.decode(response, new TypeReference() {}); System.out.println("JSON.decode(response, new TypeReference(){});\n" + ac2.getUri()); System.out.println(response); Toast.makeText(getActivity(), "アカウントを作成しました。", Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/StartFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/StartFragment.java index a665386..5f488c3 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/StartFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/StartFragment.java @@ -2,9 +2,6 @@ import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -12,11 +9,10 @@ import org.ntlab.radishforandroidstudio.R; -public class StartFragment extends Fragment { +public class StartFragment extends BaseFragment { @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_start, container, false); } @@ -29,10 +25,8 @@ button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - FragmentManager manager = getFragmentManager(); - FragmentTransaction transaction = manager.beginTransaction(); - transaction.replace(R.id.fragment_place, new LoginFragment()); - transaction.commit(); + replaceFragment(R.id.fragment_place, new LoginFragment(),false); + } }); } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java index c71e549..cc7fec1 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java @@ -10,18 +10,16 @@ import android.widget.LinearLayout; import org.ntlab.radishforandroidstudio.R; -import org.ntlab.radishforandroidstudio.cactusClient.models.UpdateBoundary; import org.ntlab.radishforandroidstudio.framework.RWT.RWTSurfaceView; import org.ntlab.radishforandroidstudio.framework.model3D.Universe; import org.ntlab.radishforandroidstudio.framework.view3D.Camera3D; -public class RealTime3DFragment extends RealTimeFragment{ +public class RealTime3DFragment extends RealTimeFragment { protected Universe universe; protected Camera3D camera; protected RWTSurfaceView view; protected View parentView = null; protected GameModelContainer modelManager = null; - protected UpdateBoundary updateBoundary; @Override public void onCreate(@Nullable Bundle savedInstanceState) { @@ -51,7 +49,6 @@ } universe.update(interval); camera.adjust(interval); - updateBoundary.onUpdate(interval); view.requestRender(); } @@ -59,7 +56,6 @@ } - public Universe getUniverse() { return universe; } diff --git a/app/src/main/res/layout/fragment_base.xml b/app/src/main/res/layout/fragment_base.xml new file mode 100644 index 0000000..18db9f1 --- /dev/null +++ b/app/src/main/res/layout/fragment_base.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file