Skip to content

Commit 3ba068c

Browse files
committed
返回至列表时,只有目标item不可见的时候才会滚动
1 parent 9612782 commit 3ba068c

File tree

3 files changed

+36
-21
lines changed

3 files changed

+36
-21
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ android {
1313
applicationId "ceui.lisa.pixiv"
1414
minSdkVersion 21
1515
targetSdkVersion 30
16-
versionCode 180
17-
versionName "3.1.1"
16+
versionCode 182
17+
versionName "3.1.2"
1818
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1919

2020
javaCompileOptions {

app/src/main/java/ceui/lisa/fragments/NetListFragment.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -279,12 +279,16 @@ public void onReceive(Context context, Intent intent) {
279279
int index = bundle.getInt(Params.INDEX);
280280
String pageUUID = bundle.getString(Params.PAGE_UUID);
281281
if (TextUtils.equals(pageUUID, uuid)) {
282-
mRecyclerView.postDelayed(new Runnable() {
283-
@Override
284-
public void run() {
285-
mRecyclerView.smoothScrollToPosition(index + mAdapter.headerSize());
286-
}
287-
}, 200L);
282+
try {
283+
mRecyclerView.postDelayed(new Runnable() {
284+
@Override
285+
public void run() {
286+
mRecyclerView.smoothScrollToPosition(index + mAdapter.headerSize());
287+
}
288+
}, 200L);
289+
} catch (Exception e) {
290+
e.printStackTrace();
291+
}
288292
}
289293
}
290294
}

app/src/main/java/ceui/lisa/helper/StaggeredtManager.java

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
import androidx.recyclerview.widget.RecyclerView;
1212
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
1313

14+
import com.facebook.rebound.SimpleSpringListener;
15+
import com.facebook.rebound.Spring;
16+
import com.facebook.rebound.SpringConfig;
17+
import com.facebook.rebound.SpringSystem;
18+
1419
import ceui.lisa.utils.Common;
1520
import ceui.lisa.utils.DensityUtil;
1621

@@ -34,19 +39,25 @@ protected int getVerticalSnapPreference() {
3439

3540
@Override
3641
protected void onTargetFound(View targetView, RecyclerView.State state, Action action) {
37-
Rect rect = new Rect();
38-
recyclerView.getLocalVisibleRect(rect);
39-
40-
int parentHeight = rect.bottom - rect.top;
41-
int childHeight = targetView.getHeight();
42-
int offset = (parentHeight - childHeight) / 2;
43-
44-
final int dx = calculateDxToMakeVisible(targetView, getHorizontalSnapPreference());
45-
final int dy = calculateDyToMakeVisible(targetView, getVerticalSnapPreference()) + offset;
46-
final int distance = (int) Math.sqrt(dx * dx + dy * dy);
47-
final int time = calculateTimeForDeceleration(distance);
48-
if (time > 0) {
49-
action.update(-dx, -dy, time, mDecelerateInterpolator);
42+
try {
43+
if (!targetView.getGlobalVisibleRect(new Rect())) {
44+
Rect rect = new Rect();
45+
recyclerView.getGlobalVisibleRect(rect);
46+
47+
int parentHeight = rect.bottom - rect.top;
48+
int childHeight = targetView.getHeight();
49+
int offset = (parentHeight - childHeight) / 2;
50+
51+
final int dx = calculateDxToMakeVisible(targetView, getHorizontalSnapPreference());
52+
final int dy = calculateDyToMakeVisible(targetView, getVerticalSnapPreference()) + offset;
53+
final int distance = (int) Math.sqrt(dx * dx + dy * dy);
54+
final int time = calculateTimeForDeceleration(distance);
55+
if (time > 0) {
56+
action.update(-dx, -dy, time, mDecelerateInterpolator);
57+
}
58+
}
59+
} catch (Exception e) {
60+
e.printStackTrace();
5061
}
5162
}
5263

0 commit comments

Comments
 (0)