左右移动焦点优化 item选中放大效果

dev
李桢 1 year ago
parent 00795968c3
commit 1ea0b5c9f9
  1. 2
      app/src/main/java/com/unionmed/unionmedtv/activity/DoctorActivity.java
  2. 2
      app/src/main/java/com/unionmed/unionmedtv/activity/HospitalActivity.java
  3. 39
      app/src/main/java/com/unionmed/unionmedtv/utils/LinearSpacingItemDecoration.java
  4. 5
      app/src/main/java/com/unionmed/unionmedtv/utils/MyGridLayoutManager.java
  5. 22
      app/src/main/java/com/unionmed/unionmedtv/widgets/ImgConstraintLayout.java
  6. 2
      app/src/main/res/layout/activity_hospital.xml
  7. 5
      app/src/main/res/layout/fragment_my_doctor.xml
  8. 1
      app/src/main/res/layout/item_load_more_layout.xml
  9. 1
      app/src/main/res/layout/item_load_more_layout1.xml
  10. 1
      app/src/main/res/layout/item_type_doctor_layout.xml
  11. 1
      app/src/main/res/layout/item_type_hospital_layout.xml

@ -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

@ -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() {

@ -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);
}
}
}
}
}

@ -7,6 +7,8 @@ import android.view.View;
import androidx.recyclerview.widget.GridLayoutManager;
import java.util.logging.Handler;
/**
* NAMEYONG_
* 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:

@ -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();
}
}

@ -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"

@ -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">

@ -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">

@ -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">

@ -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">

@ -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">

Loading…
Cancel
Save