From 1ea0b5c9f9616ff80f2673275ccaf407b6308cdb Mon Sep 17 00:00:00 2001 From: linminjie <1004644107@qq.com> Date: Wed, 7 Jun 2023 17:31:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A6=E5=8F=B3=E7=A7=BB=E5=8A=A8=E7=84=A6?= =?UTF-8?q?=E7=82=B9=E4=BC=98=E5=8C=96=20=20item=E9=80=89=E4=B8=AD?= =?UTF-8?q?=E6=94=BE=E5=A4=A7=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../unionmedtv/activity/DoctorActivity.java | 2 +- .../unionmedtv/activity/HospitalActivity.java | 2 +- .../utils/LinearSpacingItemDecoration.java | 39 ++++++++++++++++++++-- .../unionmedtv/utils/MyGridLayoutManager.java | 5 +++ .../unionmedtv/widgets/ImgConstraintLayout.java | 22 ++++++++++++ app/src/main/res/layout/activity_hospital.xml | 2 +- app/src/main/res/layout/fragment_my_doctor.xml | 5 ++- app/src/main/res/layout/item_load_more_layout.xml | 1 + app/src/main/res/layout/item_load_more_layout1.xml | 1 + .../main/res/layout/item_type_doctor_layout.xml | 1 + .../main/res/layout/item_type_hospital_layout.xml | 1 + 11 files changed, 72 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/unionmed/unionmedtv/activity/DoctorActivity.java b/app/src/main/java/com/unionmed/unionmedtv/activity/DoctorActivity.java index 5dce5ab..965bb10 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/activity/DoctorActivity.java +++ b/app/src/main/java/com/unionmed/unionmedtv/activity/DoctorActivity.java @@ -104,7 +104,7 @@ public class DoctorActivity extends BaseActivity { } }); recyclerView.setAdapter(doctorAdapter); - recyclerView.addItemDecoration(new LinearSpacingItemDecoration(DoctorActivity.this,24)); + recyclerView.addItemDecoration(new LinearSpacingItemDecoration(DoctorActivity.this,14)); } private Runnable searchRunnable = new Runnable() { @Override diff --git a/app/src/main/java/com/unionmed/unionmedtv/activity/HospitalActivity.java b/app/src/main/java/com/unionmed/unionmedtv/activity/HospitalActivity.java index b43ae32..1371bc7 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/activity/HospitalActivity.java +++ b/app/src/main/java/com/unionmed/unionmedtv/activity/HospitalActivity.java @@ -107,7 +107,7 @@ public class HospitalActivity extends BaseActivity { } }); recyclerView.setAdapter(hospitalAdapter); - recyclerView.addItemDecoration(new LinearSpacingItemDecoration(HospitalActivity.this, 24)); + recyclerView.addItemDecoration(new LinearSpacingItemDecoration(HospitalActivity.this, 14)); } private Runnable searchRunnable = new Runnable() { diff --git a/app/src/main/java/com/unionmed/unionmedtv/utils/LinearSpacingItemDecoration.java b/app/src/main/java/com/unionmed/unionmedtv/utils/LinearSpacingItemDecoration.java index a3caef9..7ef81c7 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/utils/LinearSpacingItemDecoration.java +++ b/app/src/main/java/com/unionmed/unionmedtv/utils/LinearSpacingItemDecoration.java @@ -1,6 +1,7 @@ package com.unionmed.unionmedtv.utils; import android.content.Context; +import android.graphics.Canvas; import android.graphics.Rect; import android.view.View; @@ -8,18 +9,19 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.blankj.utilcode.util.SizeUtils; +import com.unionmed.unionmedtv.widgets.ImgConstraintLayout; + +import org.jetbrains.annotations.NotNull; public class LinearSpacingItemDecoration extends RecyclerView.ItemDecoration { private int spacing;//间距padding public LinearSpacingItemDecoration(Context context, int spacings) { - //获取需要设置的间距值dp,这里不写死,调用时传过来 -// spacing = context.getResources().getDimensionPixelSize(R.dimen.d10); spacing = SizeUtils.dp2px(spacings); -// spacing = spacings; } + @Override public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); @@ -29,4 +31,35 @@ public class LinearSpacingItemDecoration extends RecyclerView.ItemDecoration { outRect.bottom = spacing;//设置bottom padding } + @Override + public void onDraw(@NonNull @NotNull Canvas c, @NonNull @NotNull RecyclerView parent, @NonNull @NotNull RecyclerView.State state) { + super.onDraw(c, parent, state); + for (int i = 0; i < parent.getChildCount(); i++) { + View child = parent.getChildAt(i); + if(child instanceof ImgConstraintLayout) { + boolean isSelected = ((ImgConstraintLayout) child).isFocus(); + if (isSelected) { + // 计算缩放比例 + float scale = 1.05f; + // 设置缩放pivot点 + child.setPivotX(child.getWidth() / 2); + child.setPivotY(child.getHeight() / 2); + + // 进行缩放 + child.setScaleX(scale); + child.setScaleY(scale); + }else { + // 计算缩放比例 + float scale = 1; + // 设置缩放pivot点 + child.setPivotX(child.getWidth() / 2); + child.setPivotY(child.getHeight() / 2); + + // 进行缩放 + child.setScaleX(scale); + child.setScaleY(scale); + } + } + } + } } diff --git a/app/src/main/java/com/unionmed/unionmedtv/utils/MyGridLayoutManager.java b/app/src/main/java/com/unionmed/unionmedtv/utils/MyGridLayoutManager.java index dc56cd3..96b046f 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/utils/MyGridLayoutManager.java +++ b/app/src/main/java/com/unionmed/unionmedtv/utils/MyGridLayoutManager.java @@ -7,6 +7,8 @@ import android.view.View; import androidx.recyclerview.widget.GridLayoutManager; +import java.util.logging.Handler; + /** * NAME:YONG_ * Created at: 2019/4/30 @@ -57,6 +59,9 @@ public class MyGridLayoutManager extends GridLayoutManager { int nextRowFirstPosition1 = currentPosition + getSpanCount(); scrollToPosition(nextRowFirstPosition1); return findViewByPosition(nextRowFirstPosition1); + }else if(currentPosition + getSpanCount()>lastVisiblePosition){ + scrollToPosition(lastVisiblePosition); + return findViewByPosition(lastVisiblePosition); } break; case View.FOCUS_UP: diff --git a/app/src/main/java/com/unionmed/unionmedtv/widgets/ImgConstraintLayout.java b/app/src/main/java/com/unionmed/unionmedtv/widgets/ImgConstraintLayout.java index 55115d8..c46b2af 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/widgets/ImgConstraintLayout.java +++ b/app/src/main/java/com/unionmed/unionmedtv/widgets/ImgConstraintLayout.java @@ -17,6 +17,15 @@ public class ImgConstraintLayout extends ConstraintLayout implements View.OnFocu private ValueAnimator valueAnimator; + private boolean focus=false; + + public boolean isFocus() { + return focus; + } + + public void setFocus(boolean focus) { + this.focus = focus; + } public ImgConstraintLayout(Context context) { this(context, null); @@ -39,11 +48,24 @@ public class ImgConstraintLayout extends ConstraintLayout implements View.OnFocu @Override public void onFocusChange(View v, boolean hasFocus) { + focus=hasFocus; if (v != null) { if (hasFocus) { Log.e("dch", "onFocusChange: " ); + setPivotX(getWidth() / 2); + setPivotY(getHeight() / 2); + + // 进行缩放 + setScaleX(1.05f); + setScaleY(1.05f); move(v.findViewById(R.id.light)); } else { + setPivotX(getWidth() / 2); + setPivotY(getHeight() / 2); + + // 进行缩放 + setScaleX(1f); + setScaleY(1f); remove(); } } diff --git a/app/src/main/res/layout/activity_hospital.xml b/app/src/main/res/layout/activity_hospital.xml index 0498dd1..99f9a38 100644 --- a/app/src/main/res/layout/activity_hospital.xml +++ b/app/src/main/res/layout/activity_hospital.xml @@ -61,7 +61,7 @@ android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginLeft="93dp" + android:layout_marginLeft="59dp" android:layout_marginRight="47dp" android:layout_marginTop="29dp" android:clipChildren="false" diff --git a/app/src/main/res/layout/fragment_my_doctor.xml b/app/src/main/res/layout/fragment_my_doctor.xml index a981fbe..9ce638e 100644 --- a/app/src/main/res/layout/fragment_my_doctor.xml +++ b/app/src/main/res/layout/fragment_my_doctor.xml @@ -24,8 +24,7 @@ style="@style/FocusStyle" android:layout_width="0dp" android:layout_height="190dp" - android:layout_marginTop="20dp" - android:layout_marginRight="20dp" + android:layout_margin="10dp" android:nextFocusLeft="@null" android:layout_weight="1"> @@ -69,7 +68,7 @@ style="@style/FocusStyle" android:layout_width="0dp" android:layout_height="190dp" - android:layout_marginTop="20dp" + android:layout_margin="10dp" android:nextFocusRight="@null" android:layout_weight="1"> diff --git a/app/src/main/res/layout/item_load_more_layout.xml b/app/src/main/res/layout/item_load_more_layout.xml index d62351b..1536d5e 100644 --- a/app/src/main/res/layout/item_load_more_layout.xml +++ b/app/src/main/res/layout/item_load_more_layout.xml @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" style="@style/FocusStyle" + android:layout_margin="@dimen/dp_10" android:layout_width="170dp" android:layout_height="232dp" android:background="@drawable/shape_corners10_color_1b4765"> diff --git a/app/src/main/res/layout/item_load_more_layout1.xml b/app/src/main/res/layout/item_load_more_layout1.xml index 4f90fa1..62d69bf 100644 --- a/app/src/main/res/layout/item_load_more_layout1.xml +++ b/app/src/main/res/layout/item_load_more_layout1.xml @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" style="@style/FocusStyle" + android:layout_margin="10dp" android:layout_width="396dp" android:layout_height="222dp" android:background="@drawable/shape_corners10_color_1b4765"> diff --git a/app/src/main/res/layout/item_type_doctor_layout.xml b/app/src/main/res/layout/item_type_doctor_layout.xml index dfce122..7c25b9c 100644 --- a/app/src/main/res/layout/item_type_doctor_layout.xml +++ b/app/src/main/res/layout/item_type_doctor_layout.xml @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" style="@style/FocusStyle" + android:layout_margin="@dimen/dp_10" android:layout_width="170dp" android:layout_height="232dp" android:background="@drawable/shape_corners10_color_1b4765"> diff --git a/app/src/main/res/layout/item_type_hospital_layout.xml b/app/src/main/res/layout/item_type_hospital_layout.xml index d7ffa8c..861deff 100644 --- a/app/src/main/res/layout/item_type_hospital_layout.xml +++ b/app/src/main/res/layout/item_type_hospital_layout.xml @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" style="@style/FocusStyle" + android:layout_margin="10dp" android:layout_width="396dp" android:layout_height="222dp" android:background="@drawable/shape_corners10_color_1b4765">