Browse Source

[컨텐츠][New] click rect 위치 이동 -> margin 으로 처리

hyodong.min 7 năm trước cách đây
mục cha
commit
f83e84c13c

+ 17 - 9
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/ContentsCardHolder.java

@@ -4,6 +4,7 @@ import android.graphics.Bitmap;
 import android.support.annotation.CallSuper;
 import android.support.annotation.Nullable;
 import android.support.constraint.ConstraintLayout;
+import android.support.constraint.ConstraintSet;
 import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
@@ -110,32 +111,37 @@ public class ContentsCardHolder extends ContentsHolder<ContentsItemBean> {
         if (null != rectList) {
           int len = rectList.size();
           if (len > 0) {
-            ViewGroup parent = (ViewGroup) imageViewCardListicleCover.getParent();
+            ConstraintLayout parent = (ConstraintLayout) imageViewCardListicleCover.getParent();
 
             for (int i = 0; i < len; ++i) {
               ItemRectBean rectBean = rectList.get(i);
               ImageView imageView = new ImageView(itemView.getContext());
               imageView.setScaleType(ImageView.ScaleType.FIT_XY);
               imageView.setImageResource(R.drawable.rectangle_trasparent);
+              imageView.setId(View.generateViewId());
 
               ViewGroup.MarginLayoutParams margins = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
               parent.addView(imageView, margins);
               imageView.post(() -> {
                 int width = imageView.getWidth();
                 int height = imageView.getHeight();
-
-                ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) imageView.getLayoutParams();
                 float x = rectBean.getPercentTopLeftX() * width / 100;
                 float y = rectBean.getPercentTopLeftY() * height / 100;
 
-                Log.i("APP# ContentsCardHolder | bindInternal", "|" + "x: " + x + ", y: " + y);
-
-                params.setMargins((int)x, (int)y, 0, 0);
+                ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) imageView.getLayoutParams();
                 params.width = (width * (rectBean.getPercentBottomRightX() - rectBean.getPercentTopLeftX())) / 100;
                 params.height = (height * (rectBean.getPercentBottomRightY() - rectBean.getPercentTopLeftY())) / 100;
-//                imageView.setLayoutParams(params);
-                imageView.setTranslationX(x);
-                imageView.setTranslationY(y);
+
+                ConstraintSet constraintSet = new ConstraintSet();
+                constraintSet.clone(parent);
+
+                constraintSet.connect(imageView.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START, (int)x);
+                constraintSet.setMargin(imageView.getId(), ConstraintSet.START, (int)x);
+                constraintSet.connect(imageView.getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP, (int)y);
+                constraintSet.setMargin(imageView.getId(), ConstraintSet.TOP, (int)y);
+
+                imageView.setLayoutParams(params);
+                constraintSet.applyTo(parent);
               });
 
               imageView.setOnClickListener(v -> {
@@ -143,6 +149,8 @@ public class ContentsCardHolder extends ContentsHolder<ContentsItemBean> {
               });
 
             }
+
+            parent.invalidate();
           }
         }
       }