Переглянути джерело

[메인][New] 카테고리 스크롤(횡 스크롤) 저장

hyodong.min 7 роки тому
батько
коміт
f22b2c0e94

+ 5 - 37
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/MainCategoryContentsImageView.java

@@ -270,10 +270,9 @@ public class MainCategoryContentsImageView extends MainCategoryContentsView {
 
         @Override
         public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
-          Drawable drawable = resource;
           //you should call after the bitmap drawn
-          imageWidth = drawable.getIntrinsicWidth(); //this is the bitmap's width
-          imageHeight = drawable.getIntrinsicHeight(); //this is the bitmap's height
+          imageWidth = resource.getIntrinsicWidth(); //this is the bitmap's width
+          imageHeight = resource.getIntrinsicHeight(); //this is the bitmap's height
 
 //    Log.i("APP# MainCategoryContentsImageView | init", "| maskWidth: " + maskWidth + ", maskHeight: " + maskHeight);
 //    Log.i("APP# MainCategoryContentsImageView | init", "| imageWidth: " + imageWidth + ", imageHeight: " + imageHeight);
@@ -290,7 +289,7 @@ public class MainCategoryContentsImageView extends MainCategoryContentsView {
   }
 
   private int getScreenY(View view) {
-    int containerPos[] = new int[2];
+    int[] containerPos = new int[2];
     view.getLocationOnScreen(containerPos);
 
     return containerPos[1];
@@ -298,39 +297,8 @@ public class MainCategoryContentsImageView extends MainCategoryContentsView {
 
   @Override
   public void dispose() {
-
+    // 이미지가 화면에서 사라진 뒤 변환 됨
+//    Glide.with(imageView).clear(imageView);
   }
 
-//
-//  @GlideModule
-//  public class GlideImageLoader extends AppGlideModule {
-//
-//    public void load(ImageView imageView, String url) {
-//
-//      Glide.with(imageView)
-//        .load(url)
-//        .listener(new RequestListener<Drawable>() {
-//          @Override
-//          public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
-//            return true;
-//          }
-//
-//          @Override
-//          public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
-//            Drawable drawable = resource;
-//            //you should call after the bitmap drawn
-//            imageWidth = drawable.getIntrinsicWidth(); //this is the bitmap's width
-//            imageHeight = drawable.getIntrinsicHeight(); //this is the bitmap's height
-//
-////    Log.i("APP# MainCategoryContentsImageView | init", "| maskWidth: " + maskWidth + ", maskHeight: " + maskHeight);
-////    Log.i("APP# MainCategoryContentsImageView | init", "| imageWidth: " + imageWidth + ", imageHeight: " + imageHeight);
-//
-//            onScrolledInternal();
-//
-//            return true;
-//          }
-//        })
-//        .into(imageView);
-//    }
-//  }
 }

+ 0 - 15
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/MainContentsAdapter.java

@@ -37,7 +37,6 @@ public class MainContentsAdapter extends RecyclerView.Adapter<MainContentsHolder
 
   private Context context;
   private LayoutInflater inflater;
-  //  private RecyclerView recyclerView;
   private ArrayList<MainContentsBean> data;
 
   public MainContentsAdapter(Context context, ArrayList<MainContentsBean> data, IEventListener listener) {
@@ -48,20 +47,6 @@ public class MainContentsAdapter extends RecyclerView.Adapter<MainContentsHolder
     holders = new ArrayList<>();
   }
 
-//  @Override
-//  public void onAttachedToRecyclerView(RecyclerView recyclerView) {
-//    super.onAttachedToRecyclerView(recyclerView);
-//
-//    this.recyclerView = recyclerView;
-//  }
-
-//
-//  @Override
-//  public void onViewDetachedFromWindow(@NonNull MainContentsHolder holder) {
-//    Log.i("APP# MainContentsAdapter | onViewDetachedFromWindow", "|" + holder);
-//    holder.dispose();
-//  }
-
   @NonNull
   @Override
   public MainContentsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

+ 8 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/MainContentsCategoryHolder.java

@@ -4,6 +4,7 @@
 package kr.co.zumo.app.lifeplus.view.screen.main;
 
 import android.content.Context;
+import android.os.Parcelable;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.View;
@@ -91,6 +92,9 @@ public class MainContentsCategoryHolder extends MainContentsHolder {
         }
       }
     });
+
+    Parcelable state = MainModelHelper.getInstance().getInstanceState(this.index);
+    recyclerView.getLayoutManager().onRestoreInstanceState(state);
   }
 
   @Override
@@ -99,6 +103,10 @@ public class MainContentsCategoryHolder extends MainContentsHolder {
       adapter.dispose();
       adapter = null;
     }
+
+    if (null != recyclerView) {
+      MainModelHelper.getInstance().addInstanceState(this.index, recyclerView.getLayoutManager().onSaveInstanceState());
+    }
   }
 
   private int getScreenY(View view) {

+ 2 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/MainFragment.java

@@ -170,7 +170,7 @@ public class MainFragment extends FragmentBase<MainPresenter> implements IMainVi
 
   @Override
   protected void onAfterDestroy() {
-
+    MainModelHelper.getInstance().dispose();
   }
 
   @Override
@@ -189,7 +189,6 @@ public class MainFragment extends FragmentBase<MainPresenter> implements IMainVi
   }
 
   private void clearData() {
-    SuperModel.getInstance().getPreferences().setPermissionInfoDone(false);
     SuperModel.getInstance().getPreferences().setTutorialDone(false);
     SuperModel.getInstance().getPreferences().setZumoUserNo("");
     SuperModel.getInstance().getPreferences().setZumoUserUpdateCompleted(false);
@@ -220,9 +219,9 @@ public class MainFragment extends FragmentBase<MainPresenter> implements IMainVi
       contentsRecyclerView.setAdapter(adapter);
       contentsRecyclerView.addOnScrollListener(scrollListener);
       contentsRecyclerView.addItemDecoration(new PagerIndicatorDecoration(getContext()));
-
     }
     else {
+      MainModelHelper.getInstance().dispose();
       adapter.update(data);
     }
   }

+ 63 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/MainModelHelper.java

@@ -0,0 +1,63 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.view.screen.main;
+
+import android.os.Parcelable;
+import android.util.SparseArray;
+
+/**
+ * MainModelHelper
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018-11-21]   [최초 작성]
+ * @since 2018-11-21
+ */
+public class MainModelHelper {
+  private static MainModelHelper ourInstance = new MainModelHelper();
+
+  public static MainModelHelper getInstance() {
+    return ourInstance;
+  }
+
+  private MainModelHelper() {
+  }
+
+  private SparseArray<Parcelable> states;
+
+  /**
+   * 메인 뷰의 카테고리 스크롤러(횡 스크롤)의 위치를 저장한다.
+   *
+   * @param index
+   * @param data
+   */
+  public void addInstanceState(int index, Parcelable data) {
+    if (null == states) {
+      states = new SparseArray<>();
+    }
+    states.append(index, data);
+  }
+
+  /**
+   * 메인 카테고리 스크롤러(횡 스크롤)의 위치를 반환한다.
+   *
+   * @param index
+   * @return
+   */
+  public Parcelable getInstanceState(int index) {
+    if (null == states) {
+      states = new SparseArray<>();
+    }
+    return states.get(index);
+  }
+
+  /**
+   * dispose
+   */
+  public void dispose() {
+    states = null;
+  }
+}

+ 5 - 4
app/src/main/res/layout/main_contents_category.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout
+<android.support.constraint.ConstraintLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
@@ -18,16 +18,17 @@
     android:lineSpacingExtra="7sp"
     android:paddingStart="@dimen/main_contents_start_gap"
     android:paddingBottom="12dp"
-    android:text="주말에 뭐하지"
     android:textColor="@color/C333333"
     android:textSize="19sp"
     android:textStyle="bold"
+    tools:text="주말에 뭐하지"
     />
 
   <android.support.v7.widget.RecyclerView
     android:id="@+id/recycler_view_category"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:orientation="horizontal"/>
+    android:orientation="horizontal"
+    app:layout_constraintTop_toBottomOf="@+id/text_title"/>
 
-</LinearLayout>
+</android.support.constraint.ConstraintLayout>