Fix GalleryView pause and resume

This commit is contained in:
seven332 committed 2016-03-13 13:38:26 +08:00
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();