Fix GalleryView pause and resume
This commit is contained in:
1 parent
74ae747c94
commit
1be88799dd
3 files changed
+42
-8
No files matched your search
@@ -144,6 +144,7 @@ public class GalleryView extends GLView implements GestureRecognizer.Listener {
|
||||
private final List<Object[]> mArgsListTemp = new ArrayList<>(5);
|
||||
|
||||
private final AtomicInteger mCurrentIndex = new AtomicInteger(GalleryPageView.INVALID_INDEX);
|
||||
private boolean mPause;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public GalleryView(@NonNull Context context, @NonNull Adapter adapter,
|
||||
@@ -262,7 +263,7 @@ public class GalleryView extends GLView implements GestureRecognizer.Listener {
|
||||
}
|
||||
|
||||
private void pauseInternal() {
|
||||
detachLayoutManager();
|
||||
mPause = true;
|
||||
}
|
||||
|
||||
public void pause() {
|
||||
@@ -270,11 +271,12 @@ public class GalleryView extends GLView implements GestureRecognizer.Listener {
|
||||
}
|
||||
|
||||
private void resumeInternal() {
|
||||
if (null == mPageTextTexture) {
|
||||
// Not attached
|
||||
return;
|
||||
if (mPause) {
|
||||
mPause = false;
|
||||
if (null != mLayoutManager) {
|
||||
mLayoutManager.bindUnloadedPage();
|
||||
}
|
||||
}
|
||||
attachLayoutManager();
|
||||
}
|
||||
|
||||
public void resume() {
|
||||
@@ -831,9 +833,7 @@ public class GalleryView extends GLView implements GestureRecognizer.Listener {
|
||||
|
||||
@RenderThread
|
||||
public GalleryPageView findPageByIndex(int id) {
|
||||
GalleryUtils.assertInRenderThread();
|
||||
|
||||
if (mLayoutManager != null) {
|
||||
if (!mPause && mLayoutManager != null) {
|
||||
return mLayoutManager.findPageByIndex(id);
|
||||
} else {
|
||||
return null;
|
||||
@@ -975,6 +975,8 @@ public class GalleryView extends GLView implements GestureRecognizer.Listener {
|
||||
|
||||
public abstract void onDataChanged();
|
||||
|
||||
public abstract void bindUnloadedPage();
|
||||
|
||||
public abstract void onPageLeft();
|
||||
|
||||
public abstract void onPageRight();
|
||||
|
||||
@@ -717,6 +717,23 @@ public class PagerLayoutManager extends GalleryView.LayoutManager {
|
||||
mGalleryView.requestFill();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bindUnloadedPage() {
|
||||
if (null == mAdapter) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (null != mCurrent && !mCurrent.getImageView().isLoaded()) {
|
||||
mAdapter.bind(mCurrent, mIndex);
|
||||
}
|
||||
if (null != mPrevious && !mPrevious.getImageView().isLoaded()) {
|
||||
mAdapter.bind(mPrevious, mIndex - 1);
|
||||
}
|
||||
if (null != mNext && !mNext.getImageView().isLoaded()) {
|
||||
mAdapter.bind(mNext, mIndex + 1);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageLeft() {
|
||||
int size = mAdapter.size();
|
||||
|
||||
@@ -653,6 +653,21 @@ public class ScrollLayoutManager extends GalleryView.LayoutManager {
|
||||
mGalleryView.requestFill();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bindUnloadedPage() {
|
||||
if (null == mAdapter || 0 <= mPages.size()) {
|
||||
return;
|
||||
}
|
||||
|
||||
int index = mIndex;
|
||||
for (GalleryPageView page: mPages) {
|
||||
if (!page.getImageView().isLoaded()) {
|
||||
mAdapter.bind(page, index);
|
||||
}
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageLeft() {
|
||||
int size = mAdapter.size();
|
||||
|
||||
Reference in new issue
Block a user