Browse Source

[공통][NEW] 상단 action bar 구현 중

Hasemi 7 years ago
parent
commit
1cd8b5b5d6

+ 29 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/activity/ActivityBase.java

@@ -6,10 +6,13 @@ package kr.co.zumo.app.lifeplus.activity;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
 import android.support.v7.app.AppCompatActivity;
+import android.util.Log;
+import android.view.MenuItem;
 
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.activity.setting.IAppSetting;
 import kr.co.zumo.app.lifeplus.application.App;
+import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
 import kr.co.zumo.app.lifeplus.model.BaseSharedPreferences;
 import kr.co.zumo.app.lifeplus.model.LifeplusPreferences;
 import kr.co.zumo.app.lifeplus.model.SuperModel;
@@ -34,7 +37,7 @@ public abstract class ActivityBase extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
-    getSupportActionBar().hide();
+    //getSupportActionBar().hide();
 
     /**
      * Activity 의 구조는 모두 같다.
@@ -43,6 +46,7 @@ public abstract class ActivityBase extends AppCompatActivity {
 
     ScreenChangerHelper.getInstance().setFragmentActivity(this);
     ScreenChangerHelper.getInstance().setContainerId(R.id.container);
+    ActionBarManager.getInstance().setActivityInfo(this);
 
     LifeplusPreferences.getInstance().setPreferences(new BaseSharedPreferences(PreferenceManager.getDefaultSharedPreferences(App.getInstance().getContext())));
 
@@ -63,10 +67,34 @@ public abstract class ActivityBase extends AppCompatActivity {
    */
   @Override
   public void onBackPressed() {
+    exitToBack();
+  }
+
+  /**
+   * actionbar item 클릭시 이벤트 처리
+   * @param item
+   * @return
+   */
+  @Override
+  public boolean onOptionsItemSelected(MenuItem item) {
+    Log.e("APP#  SignUpFragment | onOptionsItemSelected", "|" + "click");
+    switch (item.getItemId()) {
+
+      case android.R.id.home:
+        exitToBack();
+        return true;
+      default:
+        break;
+    }
+    return super.onOptionsItemSelected(item);
+  }
+
+  private void exitToBack() {
     ViewModel viewModel = SuperModel.getInstance().getViewModel();
     if (null != viewModel) {
       viewModel.exitByBackKey();
     }
   }
+
 }
 

+ 56 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/manager/ActionBarManager.java

@@ -0,0 +1,56 @@
+package kr.co.zumo.app.lifeplus.manager;
+
+import android.support.annotation.StringRes;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+
+/**
+ * Fragment의 ActionBar 관리
+ * <pre>
+ * </pre>
+ *
+ * @author 하세미
+ * @version 1.0
+ * @history 하세미   [2018. 9. 5.]   [최초 작성]
+ * @since 2018. 9. 5.
+ */
+public class ActionBarManager {
+
+  private static final ActionBarManager ourInstance = new ActionBarManager();
+
+  public static ActionBarManager getInstance() {
+    return ourInstance;
+  }
+
+  private AppCompatActivity activity;
+  private ActionBar actionBar;
+
+  private ActionBarManager() {
+  }
+
+  /**
+   * actvitiy 정보 받아옴.
+   * @param activityInfo
+   */
+  public void setActivityInfo(AppCompatActivity activityInfo) {
+    activity = activityInfo;
+  }
+
+
+  /**
+   * actionbar 제목 설정
+   * @param stringId
+   */
+  public void setTitle(@StringRes int stringId) {
+    actionBar.setTitle(stringId);
+  }
+
+  /**
+   * actionbar back 설정 유무
+   * @param isEnabled
+   */
+  public void setDisplayHomeAsUpEnabled(boolean isEnabled) {
+    actionBar.setDisplayHomeAsUpEnabled(isEnabled);
+  }
+
+}

+ 6 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/FragmentBase.java

@@ -55,6 +55,7 @@ public abstract class FragmentBase extends Fragment {
     super.onActivityCreated(savedInstanceState);
 
     SuperModel.getInstance().setViewModel(defineViewModel());
+    defineActionBar();
   }
 
   @Override
@@ -102,4 +103,9 @@ public abstract class FragmentBase extends Fragment {
    */
   protected abstract ViewModel defineViewModel();
 
+  /**
+   * ActionBar를 정의 해준다.
+   */
+  protected abstract void defineActionBar();
+
 }

+ 10 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/LoginFragment.java

@@ -11,6 +11,7 @@ import android.view.ViewGroup;
 
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.databinding.FragmentLoginBinding;
+import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
 import kr.co.zumo.app.lifeplus.supervisor.FragmentChanger;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenChangerHelper;
 import kr.co.zumo.app.lifeplus.view.fragment.factory.BasicFragmentFactory;
@@ -36,6 +37,7 @@ public class LoginFragment extends FragmentBase {
   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     // Inflate the layout for this fragment
+
     return DataBindingUtil.inflate(inflater, R.layout.fragment_login, container, false).getRoot();
   }
 
@@ -50,4 +52,12 @@ public class LoginFragment extends FragmentBase {
     return viewModel;
   }
 
+  @Override
+  protected void defineActionBar() {
+
+    ActionBarManager actionBarManager = ActionBarManager.getInstance();
+    actionBarManager.setTitle(R.string.login);
+    actionBarManager.setDisplayHomeAsUpEnabled(true);
+  }
+
 }

+ 10 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/MainFragment.java

@@ -11,6 +11,7 @@ import android.view.ViewGroup;
 
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.databinding.FragmentMainBinding;
+import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
 import kr.co.zumo.app.lifeplus.supervisor.FragmentChanger;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenChangerHelper;
 import kr.co.zumo.app.lifeplus.view.fragment.factory.BasicFragmentFactory;
@@ -50,4 +51,13 @@ public class MainFragment extends FragmentBase {
     return viewModel;
   }
 
+  @Override
+  protected void defineActionBar() {
+
+    ActionBarManager actionBarManager = ActionBarManager.getInstance();
+    actionBarManager.setTitle(R.string.main_text);
+    actionBarManager.setDisplayHomeAsUpEnabled(false);
+
+  }
+
 }

+ 9 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/signup/SignUpFragment.java

@@ -17,6 +17,7 @@ import java.util.ArrayList;
 
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.application.App;
+import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
 import kr.co.zumo.app.lifeplus.supervisor.FragmentChanger;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenChangerHelper;
 import kr.co.zumo.app.lifeplus.view.fragment.FragmentBase;
@@ -50,10 +51,10 @@ public class SignUpFragment extends FragmentBase {
   @Nullable
   @Override
   public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+
     return DataBindingUtil.inflate(inflater, R.layout.fragment_sign_up, container, false).getRoot();
   }
 
-
   @Override
   protected ViewModel defineViewModel() {
     ScreenChangerHelper helper = ScreenChangerHelper.getInstance();
@@ -93,6 +94,13 @@ public class SignUpFragment extends FragmentBase {
     return viewModel;
   }
 
+  @Override
+  protected void defineActionBar() {
+    ActionBarManager actionBarManager = ActionBarManager.getInstance();
+    actionBarManager.setTitle(R.string.sign_up);
+    actionBarManager.setDisplayHomeAsUpEnabled(false);
+  }
+
   @Override
   public void onStart() {
     super.onStart();

+ 4 - 3
app/src/main/res/values/strings.xml

@@ -3,9 +3,10 @@
   <string name="app_name_dev" translatable="false">Lifeplus - dev</string>
   <string name="app_name" translatable="false">Lifeplus</string>
 
-
-  <!-- TODO: Remove or change this placeholder text -->
-  <string name="hello_blank_fragment">Hello blank fragment</string>
   <string name="sign_up_hello_text">LifePlus 회원가입을 하시면 다양한 혜택을 누릴 수 있어요.</string>
   <string name="sign_up_benefit1">서비스만 이용해도 코인을 드려요.</string>
+
+  <string name="sign_up">회원가입</string>
+  <string name="login">로그인</string>
+  <string name="main_text">메 인</string>
 </resources>