Skip to content

Commit d902a16

Browse files
committed
fix rotate
1 parent f096ac8 commit d902a16

File tree

2 files changed

+33
-24
lines changed

2 files changed

+33
-24
lines changed

PowerFileExplorer/src/main/java/com/veinhorn/scrollgalleryview/ScreenSlidePagerAdapter.java

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,20 @@
1515
import android.view.View;
1616
import android.view.GestureDetector;
1717
import com.ortiz.touch.TouchImageView;
18+
import java.util.*;
19+
import net.gnu.util.*;
1820

1921
public class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {//}implements Runnable {
2022

2123
private static final String TAG = "ScreenSlidePagerAdapter";
2224

2325
private final List<File> mListOfMedia;
2426
private final ViewPager viewPager;
25-
// TreeMap<Integer, ImageFragment> fragMap = new TreeMap<>();
27+
List<ComparableEntry<Integer, ImageFragment>> fragMap = new ArrayList<>(3);
2628
final GestureDetector.OnDoubleTapListener onDoubleTapListener;
2729
static int numOfPages = 1;
28-
30+
private final int sizeMediaFiles;
31+
2932
public ScreenSlidePagerAdapter(final FragmentManager fm,
3033
final ViewPager vp,
3134
final List<File> listOfMedia,
@@ -35,34 +38,39 @@ public ScreenSlidePagerAdapter(final FragmentManager fm,
3538
this.viewPager = vp;
3639
this.mListOfMedia = listOfMedia;
3740
this.onDoubleTapListener = onDoubleTapListener;
41+
sizeMediaFiles = mListOfMedia.size();
3842
}
3943

4044
@Override
4145
public Fragment getItem(final int pagerPos) {
42-
final int size = mListOfMedia.size();
43-
int mediaPos = pagerPos;
44-
if (mediaPos == 0) {
45-
mediaPos = size - 1;
46-
} else if (mediaPos == size + 1) {
47-
mediaPos = 0;
48-
} else {
49-
mediaPos--;
46+
final int mediaPos = pagerPos == 0 ? (sizeMediaFiles - 1) : pagerPos == (sizeMediaFiles + 1) ? 0 : (pagerPos - 1);
47+
final ImageFragment curFrag = loadImageFragment(mListOfMedia.get(mediaPos));
48+
if (fragMap.size() >= 3) {
49+
fragMap.remove(0);
5050
}
51-
//if (position < size) {
52-
final ImageFragment fragment = loadImageFragment(mListOfMedia.get(mediaPos));
53-
//fragMap.put(Integer.valueOf(positionOri), fragment);
54-
//}
51+
fragMap.add(new ComparableEntry<Integer, ImageFragment>(Integer.valueOf(pagerPos), curFrag));
5552
Log.d(TAG, "getItem pagerPos " + pagerPos + ", mediaPos " + mediaPos + ", viewPager.getCurrentItem() " + viewPager.getCurrentItem());
56-
return fragment;
53+
return curFrag;
5754
}
5855

59-
private ImageFragment loadImageFragment(final File mediaInfo) {//, final String mime
56+
private ImageFragment loadImageFragment(final File mediaInfo) {
6057
final ImageFragment fragment = new ImageFragment();
6158
fragment.setMediaInfo(mediaInfo);
6259
fragment.setOnDoubleTapListener(onDoubleTapListener);
6360
//fragment.setCallback(this);
6461
return fragment;
6562
}
63+
64+
public ImageFragment getCurrentItem() {
65+
final int pagerPos = viewPager.getCurrentItem();
66+
for (ComparableEntry<Integer, ImageFragment> e : fragMap) {
67+
//Log.d(TAG, "getCurrentItem pagerPos " + pagerPos + ", key " + e.getKey() + ", viewPager.getCurrentItem() " + viewPager.getCurrentItem());
68+
if (e.getKey().intValue() == pagerPos) {
69+
return e.getValue();
70+
}
71+
}
72+
return null;
73+
}
6674

6775
// @Override
6876
// public void run() {

PowerFileExplorer/src/main/java/com/veinhorn/scrollgalleryview/ScrollGalleryView.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,8 @@ public ScrollGalleryView(final Context context, final AttributeSet attrs, final
256256

257257
@Override
258258
public Parcelable onSaveInstanceState() {
259-
final Bundle bundle = new Bundle();
259+
Log.d(TAG, "onSaveInstanceState ");
260+
final Bundle bundle = new Bundle();
260261
bundle.putParcelable("instanceState", super.onSaveInstanceState());
261262
bundle.putBoolean("SLIDESHOW", SLIDESHOW);
262263
removeCallbacks(runSlideshow);
@@ -321,13 +322,13 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse
321322
}
322323

323324
@Override
324-
public void onPageSelected(int position) {
325+
public void onPageSelected(int pagerPos) {
325326
scrolledByViewPager = true;
326-
final int mediaPos = position == 0 ? (sizeMediaFiles - 1) : position == (sizeMediaFiles + 1) ? 0 : (position - 1);
327+
final int mediaPos = pagerPos == 0 ? (sizeMediaFiles - 1) : pagerPos == (sizeMediaFiles + 1) ? 0 : (pagerPos - 1);
327328
final int childCount = thumbnailsRecyclerView.getLayoutManager().getChildCount();
328329
final int measuredWidth = getMeasuredWidth();
329330
final int mid = (measuredWidth - thumbnailSize) / 2;
330-
Log.d(TAG, "onPageSelected position " + position + ", newpos " + mediaPos + ", mid " + mid + ", childCount " + childCount);
331+
Log.d(TAG, "onPageSelected pagerPos " + pagerPos + ", mediaPos " + mediaPos + ", mid " + mid + ", childCount " + childCount);
331332
if ((mediaPos) <= childCount / 2 || sizeMediaFiles == 1) {
332333
thumbnailsRecyclerView.setPadding(Math.max(mid - (mediaPos) * thumbnailSize, 0), 0, 0, 0);
333334
} else if ((sizeMediaFiles - 1 - (mediaPos)) <= childCount / 2) {
@@ -337,7 +338,7 @@ public void onPageSelected(int position) {
337338
}
338339
final ImageView childAt = (ImageView) mLayoutManager.findViewByPosition(mediaPos);
339340
scrollRecycler(mediaPos, childAt);
340-
pageSelected = position;
341+
pageSelected = pagerPos;
341342
}
342343

343344

@@ -674,15 +675,15 @@ public void onClick(final View p1) {
674675
break;
675676
//}
676677
case R.id.clockwiseButton:
677-
new RotateTask(((ImageFragment)imageViewPagerAdapter.getItem(pageSelected)).getImage().getDrawable(), true).execute();
678+
new RotateTask(imageViewPagerAdapter.getCurrentItem().getImage().getDrawable(), true).execute();
678679
// Glide
679680
// .with(mContext)
680681
// .load(f)
681682
// .transform(new RotateTransformation(mContext, 90f))
682683
// .into(pagerAdapter.fragMap.get(pageSelected).getBackgroundImage());
683684
break;
684685
case R.id.counterClockwiseButton:
685-
new RotateTask(((ImageFragment)imageViewPagerAdapter.getItem(pageSelected)).getImage().getDrawable(), false).execute();
686+
new RotateTask(imageViewPagerAdapter.getCurrentItem().getImage().getDrawable(), false).execute();
686687
// Glide
687688
// .with(mContext)
688689
// .load(f)
@@ -931,7 +932,7 @@ public final void setBitmapToView(Bitmap bmp, String name) {
931932
//Log.v( TAG, "Bitmap is ready" );
932933
//hideWait();
933934
if (bmp != null) {
934-
TouchImageView image = ((ImageFragment)imageViewPagerAdapter.getItem(pageSelected)).getImage();
935+
TouchImageView image = ((ImageFragment)imageViewPagerAdapter.getCurrentItem()).getImage();
935936
image.setVisibility(View.VISIBLE);
936937
image.setImageBitmap(bmp);
937938

0 commit comments

Comments
 (0)