瀏覽代碼

[콘텐츠][New] 카드형/카드 리스티클형은 프래그먼트에서 상단 마진과 이미지 비율 지정

hyodong.min 6 年之前
父節點
當前提交
7569cabf72

+ 41 - 5
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/ContentsFragment.java

@@ -6,6 +6,8 @@ import android.net.Uri;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.constraint.ConstraintLayout;
+import android.support.constraint.ConstraintSet;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.LinearSmoothScroller;
 import android.support.v7.widget.RecyclerView;
@@ -25,6 +27,7 @@ import kr.co.zumo.app.lifeplus.bean.api.WithShownItemBean;
 import kr.co.zumo.app.lifeplus.helper.ActionBarHelper;
 import kr.co.zumo.app.lifeplus.helper.ScreenSizeHelper;
 import kr.co.zumo.app.lifeplus.util.AppUtil;
+import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.util.TextUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.IEventListener;
@@ -51,6 +54,7 @@ public class ContentsFragment extends FragmentBase<ContentsPresenter> implements
   private View dim;
   private TextView textViewPageNumber;
   private Tutorial tutorial;
+  private ConstraintLayout container;
 
   private RecyclerView.OnScrollListener scrollEventListener;
 
@@ -65,6 +69,7 @@ public class ContentsFragment extends FragmentBase<ContentsPresenter> implements
     dim = findViewById(R.id.view_dim_2);
     textViewPageNumber = findViewById(R.id.text_view_page_number);
     TextUtil.toBold(textViewPageNumber);
+    container = findViewById(R.id.layout_container);
 
     //private String direction = null;
     CustomPagerSnapHelper snapHelper = new CustomPagerSnapHelper();
@@ -162,15 +167,18 @@ public class ContentsFragment extends FragmentBase<ContentsPresenter> implements
 
   @Override
   public void showOverviewTooltip() {
-    OverviewTooltip tooltip = new OverviewTooltip(getActivity(), new IEventListener() {
-      @Override
-      public void onEvent(Event event) {
-        presenter.onEvent(event);
-      }
+    OverviewTooltip tooltip = new OverviewTooltip(getActivity(), event -> {
+      presenter.onEvent(event);
     });
     tooltip.show();
   }
 
+  @Override
+  public void setRatioScreen() {
+    ScreenSizeHelper sizeHelper = getHelper(ScreenSizeHelper.class);
+    setPaddingByRatio(container, recyclerViewContentsDetail, sizeHelper.getScreenWidth(), sizeHelper.getScreenHeight());
+  }
+
   @Override
   public void setVisibleDotDotDot(boolean isVisible) {
     actionBarHelper.setVisibleDotDotDot(isVisible);
@@ -322,4 +330,32 @@ public class ContentsFragment extends FragmentBase<ContentsPresenter> implements
   public int getCurrentPage() {
     return layoutManager.findFirstVisibleItemPosition();
   }
+
+  private void setPaddingByRatio(ConstraintLayout itemView, View targetView, int screenWidth, int screenHeight) {
+    final float baseRatio = 1.8f;
+    if ((float) screenHeight / screenWidth > baseRatio) {
+      int paddingTop = ResourceUtil.getDimension(R.dimen.action_bar_height) + ResourceUtil.getStatusBarHeightManual();
+      int modifiedHeight = screenHeight - paddingTop;
+      itemView.setPadding(0, paddingTop, 0, 0);
+
+      if ((float) modifiedHeight / screenWidth > baseRatio) {
+        // 상단 패딩 이후 여전히 비율이 안맞다면
+        // 이미지 비율을 9:16으로 조절해서 하단 여백을 남김
+
+        ViewGroup.LayoutParams lp = targetView.getLayoutParams();
+        lp.width = 0;
+        lp.height = 0;
+        targetView.setLayoutParams(lp);
+
+        ConstraintSet set = new ConstraintSet();
+        set.clone(itemView);
+        set.constrainDefaultHeight(targetView.getId(), ConstraintSet.MATCH_CONSTRAINT_SPREAD);
+        set.constrainDefaultWidth(targetView.getId(), ConstraintSet.MATCH_CONSTRAINT_SPREAD);
+        set.setVerticalBias(targetView.getId(), 0);
+        set.setDimensionRatio(targetView.getId(), "9:16");
+        set.applyTo(itemView);
+      }
+    }
+
+  }
 }

+ 6 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/ContentsPresenter.java

@@ -108,6 +108,12 @@ public class ContentsPresenter extends ContentsBasePresenter<ContentsModel, ICon
     String itemType = contentsItemBean.getItemType();
     if (StringUtil.isFull(itemType) && ContentsItemBean.ITEM_TYPE_LISTICLE.equalsIgnoreCase(itemType)) {
       String listType = contentsItemBean.getListType();
+
+      if(false == ContentsItemBean.TYPE_LISTICLE.equals(model.getContentsType())) {
+        // 카드형 이라면 화면 비율 조절
+        view.setRatioScreen();
+      }
+
       view.draw(model.getContentsNo(), listType, model.getContentsDetailListBean());
 
       if (isAccessRightNoneUser) {

+ 2 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/IContentsView.java

@@ -43,6 +43,8 @@ public interface IContentsView extends IContentsBaseView {
 
   void showOverviewTooltip();
 
+  void setRatioScreen();
+
   int getCurrentPage();
 }
 

+ 15 - 5
app/src/main/res/layout/fragment_contents_detail.xml

@@ -1,16 +1,26 @@
 <?xml version="1.0" encoding="utf-8"?>
 <android.support.constraint.ConstraintLayout
+  android:id="@+id/layout_container"
   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"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
-  android:descendantFocusability="blocksDescendants">
+  android:descendantFocusability="blocksDescendants"
+  android:background="@color/C000000"
+  tools:paddingTop="52dp">
 
   <android.support.v7.widget.RecyclerView
     android:id="@+id/recycler_view_contents_detail"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"/>
+    android:layout_width="0dp"
+    android:layout_height="0dp"
+    android:background="@color/CFFFFFF"
+    app:layout_constraintBottom_toBottomOf="parent"
+    app:layout_constraintEnd_toEndOf="parent"
+    app:layout_constraintStart_toStartOf="parent"
+    app:layout_constraintTop_toTopOf="parent"
+    app:layout_constraintVertical_bias="0"
+    tools:layout_constraintDimensionRatio="H,9:9"/>
 
   <View
     android:id="@+id/view_dim_2"
@@ -34,8 +44,8 @@
     android:textStyle="bold"
     android:visibility="gone"
     app:layout_constrainedWidth="true"
-    app:layout_constraintBottom_toBottomOf="parent"
-    app:layout_constraintEnd_toEndOf="parent"
+    app:layout_constraintBottom_toBottomOf="@+id/recycler_view_contents_detail"
+    app:layout_constraintEnd_toEndOf="@+id/recycler_view_contents_detail"
     tools:background="@color/C000000"
     tools:text="1 / 5"
     tools:visibility="visible"