Skip to content

Commit d3a91c7

Browse files
committed
photo saveinstance
1 parent c2caea8 commit d3a91c7

File tree

10 files changed

+74
-63
lines changed

10 files changed

+74
-63
lines changed

PowerFileExplorer/src/main/java/com/veinhorn/example/GlideImageLoader.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public static void loadMedia(final Uri uri, final Context context, final ImageVi
5151
try {
5252
if (ContentResolver.SCHEME_FILE.equals(uri.getScheme())) {
5353
final File f = new File(Uri.decode(uri.getPath()));
54-
Log.d("GlideImageLoader", "SCHEME_FILE loadMedia " + f.getAbsolutePath());
54+
//Log.d("GlideImageLoader", "SCHEME_FILE loadMedia " + f.getAbsolutePath());
5555
final String name = f.getName();
5656
if (GIF_PATTERN.matcher(name).matches()) {
5757
RequestListener<File, GifDrawable> listener = new RequestListener<File, GifDrawable>() {
@@ -130,15 +130,16 @@ public boolean onResourceReady(final GifDrawable p1, final File p2, final Target
130130
public boolean onException (Exception e, File model, Target <Bitmap> target, boolean isFirstResource) {
131131
// todo log exception
132132
// important to return false so the error placeholder can be placed
133-
e.printStackTrace();
133+
Log.e(TAG, e.getMessage(), e);
134134
return false;
135135
}
136136
@Override
137137
public boolean onResourceReady(
138138
Bitmap resource, File model, Target <Bitmap> target,
139139
boolean isFromMemoryCache, boolean
140140
isFirstResource ) {
141-
Log.d(TAG, "onResourceReady " + model);
141+
142+
Log.d(TAG, "onResourceReady " + imageView.getMeasuredWidth() + ", " + imageView.getMeasuredHeight() + ", " + model);
142143
return false;
143144
}
144145
};

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

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,12 @@ public class ImageFragment extends Fragment {
7878

7979
private TextView centerInfo;
8080
private boolean mIsFirstBrightnessGesture = true;
81-
private View rootView;
81+
8282
private float minZoom;
8383
private float maxZoom;
8484
static float DEFAULT_ZOOM = 2f;
8585
static float curZoom = DEFAULT_ZOOM;
86-
static int curDelay = 1000;//ScrollGalleryView.DELAY;
86+
static int curDelay = 1000;
8787
static int curTransform = 12;
8888

8989
private ViewPager viewPager;
@@ -94,12 +94,16 @@ public class ImageFragment extends Fragment {
9494
@Override
9595
public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
9696
super.onCreateView(inflater, container, savedInstanceState);
97-
98-
rootView = inflater.inflate(R.layout.image_fragment, container, false);
97+
return inflater.inflate(R.layout.image_fragment, container, false);
98+
}
99+
100+
@Override
101+
public void onViewCreated(View view, Bundle savedInstanceState) {
102+
super.onViewCreated(view, savedInstanceState);
99103
context = getContext();
100-
101-
image = (TouchImageView) rootView.findViewById(R.id.image);
102-
videoPlayImage = (ImageView) rootView.findViewById(R.id.videoPlayImage);
104+
105+
image = (TouchImageView) view.findViewById(R.id.image);
106+
videoPlayImage = (ImageView) view.findViewById(R.id.videoPlayImage);
103107
minZoom = TouchImageView.SUPER_MIN_MULTIPLIER * image.getMinZoom();
104108
maxZoom = TouchImageView.SUPER_MAX_MULTIPLIER * image.getMaxZoom();
105109
image.setZoom(curZoom);
@@ -117,22 +121,20 @@ public boolean onSingleTapConfirmed(MotionEvent e) {
117121
return false;//performClick();
118122
}
119123
});
120-
rootView.setOnTouchListener(onTouch);
124+
view.setOnTouchListener(onTouch);
121125
//videoPlayImage.setOnTouchListener(onTouch);
122126
image.setOnTouchListener(onTouch);
123127
//rootView.setOnDoubleTapListener(onDoubleTapListener);
124128
//image.setOnDoubleTapListener(onDoubleTapListener);
125-
centerInfo = (TextView) rootView.findViewById(R.id.centerInfo);
129+
centerInfo = (TextView) view.findViewById(R.id.centerInfo);
126130
//backgroundImage.setZoom(1.5f);
127131
//backgroundImage.setMinZoom(1.0f);
128132
//backgroundImage.setMaxZoom(3.0f);
129133
//backgroundImage.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
130134
//backgroundImage.setZoom(1);
131135

132136
loadImageToView();
133-
134-
return rootView;
135-
}
137+
}
136138

137139
public TouchImageView getImage() {
138140
return image;
@@ -155,9 +157,10 @@ public boolean onTouch(final View p1, final MotionEvent event) {
155157
private boolean dispatchCenterWrapperTouchEvent(final View p1, final MotionEvent event) {
156158
//Log.d(TAG, "dispatchCenterWrapperTouchEvent " + event);
157159

158-
final int measuredWidth = rootView.getMeasuredWidth();
160+
final View view = getView();
161+
final int measuredWidth = view.getMeasuredWidth();
159162
if (mSurfaceYDisplayRange == 0) {
160-
mSurfaceYDisplayRange = Math.min(measuredWidth, rootView.getMeasuredHeight());
163+
mSurfaceYDisplayRange = Math.min(measuredWidth, view.getMeasuredHeight());
161164
}
162165

163166
float x_changed, y_changed;

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,10 @@ public float getPageWidth(int position) {
124124

125125
@Override
126126
public int getCount() {
127-
final int size = mListOfMedia.size();
128-
if(size == 1) {
127+
if(sizeMediaFiles == 1) {
129128
return 1;
130129
} else {
131-
return size + 2;
130+
return sizeMediaFiles + 2;
132131
}
133132
}
134133
}

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

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public class ScrollGalleryView extends LinearLayout implements OnDoubleTapListen
103103

104104
private FragmentManager fragmentManager;
105105
private ScreenSlidePagerAdapter imageViewPagerAdapter;
106-
private List<File> mListOfMedia = new LinkedList<>();
106+
private ArrayList<File> mListOfMedia;
107107
private int sizeMediaFiles;
108108

109109
private int thumbnailSize = 54; // width and height in pixels
@@ -123,7 +123,7 @@ public class ScrollGalleryView extends LinearLayout implements OnDoubleTapListen
123123
private String orderType = "";
124124
private String asc = "";
125125

126-
static boolean SLIDESHOW = false;
126+
private boolean SLIDESHOW = false;
127127
//static int DELAY = 1000;
128128
static ABaseTransformer[] transforms = new ABaseTransformer[]{
129129
new DefaultTransformer(),
@@ -162,7 +162,7 @@ public class ScrollGalleryView extends LinearLayout implements OnDoubleTapListen
162162

163163
protected ThumbnailAdapter thumbnailRecyclerAdapter;
164164
protected LinearLayoutManager mLayoutManager;
165-
protected String[] mDataset;
165+
166166
boolean scrolledByViewPager = true;
167167

168168
public ScrollGalleryView(final Context context) {
@@ -258,8 +258,13 @@ public ScrollGalleryView(final Context context, final AttributeSet attrs, final
258258
public Parcelable onSaveInstanceState() {
259259
Log.d(TAG, "onSaveInstanceState ");
260260
final Bundle bundle = new Bundle();
261+
261262
bundle.putParcelable("instanceState", super.onSaveInstanceState());
262263
bundle.putBoolean("SLIDESHOW", SLIDESHOW);
264+
bundle.putBoolean("hidden", hidden);
265+
bundle.putSerializable("mListOfMedia", mListOfMedia);
266+
bundle.putInt("thumbnailSize", thumbnailSize);
267+
bundle.putInt("pageSelected", pageSelected);
263268
removeCallbacks(runSlideshow);
264269
return bundle;
265270
}
@@ -270,11 +275,19 @@ public void onRestoreInstanceState(Parcelable state) {
270275
if (state != null && state instanceof Bundle) {
271276
final Bundle bundle = (Bundle) state;
272277
SLIDESHOW = bundle.getBoolean("SLIDESHOW", false);
273-
postDelayed(runSlideshow, ImageFragment.curDelay);
274-
super.onRestoreInstanceState(bundle.getParcelable("instanceState"));
278+
hidden = bundle.getBoolean("hidden", false);
279+
mListOfMedia = (ArrayList<File>) bundle.getSerializable("mListOfMedia");
280+
sizeMediaFiles = mListOfMedia.size();
281+
thumbnailSize = bundle.getInt("thumbnailSize", 54);
282+
pageSelected = bundle.getInt("pageSelected", pageSelected);
283+
284+
super.onRestoreInstanceState(bundle.getParcelable("instanceState"));
275285
} else {
276286
super.onRestoreInstanceState(state);
277287
}
288+
hideThumbnails(hidden);
289+
initializeViewPager();
290+
runSlideshow.run();
278291
}
279292

280293
private Runnable runSorting = new Runnable() {
@@ -290,7 +303,6 @@ public void run() {
290303
final int newpos = pageSelected == 0 ? (sizeMediaFiles - 1) : pageSelected == (sizeMediaFiles + 1) ? 0 : (pageSelected - 1);
291304
final ImageView childAt = (ImageView) mLayoutManager.findViewByPosition(newpos);
292305
scrollRecycler(newpos, childAt);
293-
//setupBar(newpos);
294306
}
295307
};
296308

@@ -329,7 +341,7 @@ public void onPageSelected(int pagerPos) {
329341
final int measuredWidth = getMeasuredWidth();
330342
final int mid = (measuredWidth - thumbnailSize) / 2;
331343
Log.d(TAG, "onPageSelected pagerPos " + pagerPos + ", mediaPos " + mediaPos + ", mid " + mid + ", childCount " + childCount);
332-
if ((mediaPos) <= mid / thumbnailSize || sizeMediaFiles == 1) {
344+
if ((mediaPos) <= mid / thumbnailSize) {
333345
thumbnailsRecyclerView.setPadding(Math.max(mid - (mediaPos) * thumbnailSize, 0), 0, 0, 0);
334346
} else if ((sizeMediaFiles - 1 - (mediaPos)) <= childCount / 2) {
335347
thumbnailsRecyclerView.setPadding(0, 0, Math.max(mid - (sizeMediaFiles - 1 - (mediaPos)) * thumbnailSize, 0), 0);
@@ -379,21 +391,21 @@ public void onScrolled(final RecyclerView recyclerView, final int dx, final int
379391
final int paddingLeft = thumbnailsRecyclerView.getPaddingLeft();
380392
final int measuredWidth = getMeasuredWidth();
381393
final int childCount = mLayoutManager.getChildCount();
382-
Log.d(TAG, "onScrolled dx " + dx + ", dy " + dy + ", PaddingLeft " + paddingLeft + ", measuredWidth " + measuredWidth + ", thumbnailSize " + thumbnailSize + ", pageSelected " + pageSelected + ", childCount " + childCount);
394+
//Log.d(TAG, "onScrolled dx " + dx + ", PaddingLeft " + paddingLeft + ", measuredWidth " + measuredWidth + ", thumbnailSize " + thumbnailSize + ", pageSelected " + pageSelected + ", childCount " + childCount);
383395
if (paddingLeft > 0) {
384396
thumbnailsRecyclerView.setPadding(Math.min(Math.max(paddingLeft - dx, 0), (measuredWidth - thumbnailSize) / 2), 0, 0, 0);
385397
}
386398
int paddingRight = thumbnailsRecyclerView.getPaddingRight();
387-
Log.d(TAG, "onScrolled dx " + dx + ", dy " + dy + ", PaddingRight " + paddingLeft + ", pageSelected " + pageSelected);
399+
//Log.d(TAG, "onScrolled dx " + dx + ", paddingRight " + paddingRight + ", pageSelected " + pageSelected);
388400
if (paddingRight > 0) {
389401
//Log.d(TAG, "(measuredWidth - thumbnailSize) / 2) " + (measuredWidth - thumbnailSize) / 2);
390402
///Log.d(TAG, "Math.min(Math.max(dl + dx, 0), (measuredWidth - thumbnailSize) / 2) " + Math.min(Math.max(dl + dx, 0), (measuredWidth - thumbnailSize) / 2));
391403
thumbnailsRecyclerView.setPadding(0, 0, Math.min(Math.max(paddingRight + dx, 0), (measuredWidth - thumbnailSize) / 2), 0);
392404
}
393405
//paddingLeft = thumbnailsRecyclerView.getPaddingLeft();
394-
Log.d(TAG, "onScrolled dx " + dx + ", dy " + dy + ", PaddingLeft " + paddingLeft + ", PaddingRight " + thumbnailsRecyclerView.getPaddingRight());
406+
//Log.d(TAG, "onScrolled dx " + dx + ", PaddingLeft " + paddingLeft + ", PaddingRight " + thumbnailsRecyclerView.getPaddingRight());
395407
final int mid;
396-
//if (paddingLeft > thumbnailSize / 2) {
408+
//de -thumbnailSize là bi chay lui
397409
mid = ((measuredWidth) / 2 - paddingLeft) / thumbnailSize;//
398410
//} else {
399411
// mid = ((measuredWidth + thumbnailSize) / 2 - paddingLeft) / thumbnailSize;
@@ -405,7 +417,7 @@ public void onScrolled(final RecyclerView recyclerView, final int dx, final int
405417
childAt = (ImageView) mLayoutManager.getChildAt(mid - 1);
406418
}
407419
int mediaPos = Integer.valueOf(childAt.getContentDescription() + "");
408-
Log.d(TAG, "onScrolled paddingLeft " + paddingLeft + ", mid " + mid + ", mediaPos " + mediaPos + ", childAt " + childAt);
420+
//Log.d(TAG, "onScrolled paddingLeft " + paddingLeft + ", mid " + mid + ", mediaPos " + mediaPos + ", childAt " + childAt);
409421
setCurrentItem(mediaPos + 1, false);
410422

411423
}
@@ -420,11 +432,12 @@ public void onScrollStateChanged(final RecyclerView recyclerView, final int newS
420432
case RecyclerView.SCROLL_STATE_IDLE:
421433
final int mid = (getMeasuredWidth() + thumbnailSize) / 2;//
422434
final ImageView childAt = (ImageView) mLayoutManager.getChildAt(mid / thumbnailSize);
423-
final int pos = Integer.valueOf(childAt.getContentDescription() + "");
424-
//Log.d(TAG, "onScrollStateChanged newState " + newState + ", mid " + mid + ", thumbnailSize " + thumbnailSize + ", pos " + pos);
425-
scrollRecycler(pos, childAt);
426-
setCurrentItem(pos + 1, false);
427-
//setupBar(pos);
435+
if (childAt != null) {
436+
final int pos = Integer.valueOf(childAt.getContentDescription() + "");
437+
//Log.d(TAG, "onScrollStateChanged newState " + newState + ", mid " + mid + ", thumbnailSize " + thumbnailSize + ", pos " + pos);
438+
scrollRecycler(pos, childAt);
439+
setCurrentItem(pos + 1, false);
440+
}
428441
break;
429442
// case RecyclerView.SCROLL_STATE_SETTLING:
430443
// break;
@@ -536,7 +549,7 @@ public boolean onSingleTapConfirmed(final MotionEvent event) {
536549
//// rightRecycler.setLayoutParams(lp);
537550
// }
538551

539-
public void setFileMedia(final List<File> infos) {//, final List<String> mimes, final String parentPath
552+
public void setFileMedia(final ArrayList<File> infos) {
540553
SLIDESHOW = false;
541554
mListOfMedia = infos;
542555
sizeMediaFiles = mListOfMedia.size();
@@ -639,13 +652,13 @@ public void run() {
639652
setupBar(mediaPos);
640653
}
641654

642-
private void setupBar(final int pos) {
655+
private void setupBar(final int mediaPos) {
643656
if (infoLayout.getVisibility() == VISIBLE) {
644-
final File file = mListOfMedia.get(pos);
657+
final File file = mListOfMedia.get(mediaPos);
645658
fileNameTV.setText((orderType.equals("Name") ? asc : "") + file.getName());
646659
fileSizeTV.setText((orderType.equals("Size") ? asc : "") + Util.nf.format(file.length()) + " B");
647660
fileDateTV.setText((orderType.equals("Date") ? asc : "") + Util.dtf.format(file.lastModified()));
648-
fileOrderTV.setText((pos + 1) + "/" + sizeMediaFiles);
661+
fileOrderTV.setText((mediaPos + 1) + "/" + sizeMediaFiles);
649662

650663
final BitmapFactory.Options bitmapDimesions = BitmapUtil.getBitmapDimesions(file.getAbsolutePath());
651664
//final TouchImageView image = pagerAdapter.fragMap.get(pos).getImage();
@@ -710,9 +723,6 @@ public void run() {
710723
};
711724
GeneralDialogCreation.deleteFilesDialog(mContext, //getLayoutElements(),
712725
(ThemedActivity)mContext, ele, ((ThemedActivity)mContext).getAppTheme(), r);
713-
//}
714-
//new Futils().deleteFiles(ele, (ExplorerActivity)mContext, /*positions, */((ThemedActivity)mContext).getAppTheme());
715-
716726
break;
717727
case R.id.slideshowButton:
718728
if (sizeMediaFiles > 1) {
@@ -932,7 +942,7 @@ public final void setBitmapToView(Bitmap bmp, String name) {
932942
//Log.v( TAG, "Bitmap is ready" );
933943
//hideWait();
934944
if (bmp != null) {
935-
TouchImageView image = ((ImageFragment)imageViewPagerAdapter.getCurrentItem()).getImage();
945+
TouchImageView image = imageViewPagerAdapter.getCurrentItem().getImage();
936946
image.setVisibility(View.VISIBLE);
937947
image.setImageBitmap(bmp);
938948

PowerFileExplorer/src/main/java/net/gnu/explorer/Frag.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ public boolean select(boolean sel) {
207207
@Override
208208
public void onCreate(Bundle savedInstanceState) {
209209
super.onCreate(savedInstanceState);
210+
setRetainInstance(true);
210211
if ((fragActivity = getActivity()) instanceof ExplorerActivity) {
211212
activity = (ExplorerActivity)fragActivity;
212213
}
@@ -221,7 +222,6 @@ public void onViewCreated(final View view, final Bundle savedInstanceState) {
221222
activity = (ExplorerActivity)fragActivity;
222223
}
223224

224-
setRetainInstance(true);
225225
AndroidUtils.setOnTouchListener(view, this);
226226
final Bundle args = getArguments();
227227
if ((currentPathTitle == null || currentPathTitle.length() == 0) && args != null) {

PowerFileExplorer/src/main/res/layout-port/activity_folder_chooser.xml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,17 +89,23 @@
8989

9090
</RelativeLayout>
9191

92-
92+
<ListView android:id="@+id/left_drawer"
93+
android:layout_width="240dp"
94+
android:layout_height="match_parent"
95+
android:layout_gravity="start"
96+
android:drawSelectorOnTop="true"
97+
/>
9398

9499
<!-- The navigation drawer -->
95100
<!-- should not be larger than 320 to show content -->
96-
<ListView android:id="@+id/left_drawer"
101+
<!--<ListView android:id="@+id/left_drawer"
97102
android:layout_width="240dp"
98103
android:layout_height="match_parent"
99104
android:layout_gravity="start"
100105
android:choiceMode="singleChoice"
101106
android:divider="@android:color/transparent"
102107
android:dividerHeight="0dp"
103-
android:background="#eeeeeeee"/>
108+
android:background="#eeeeeeee"/>-->
109+
104110
</android.support.v4.widget.DrawerLayout>
105111

PowerFileExplorer/src/main/res/layout/fragment_sample.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
android:id="@+id/viewpager"
1919
android:layout_width="match_parent"
2020
android:layout_height="match_parent"
21-
android:layout_weight="1"
2221
android:overScrollMode="never"
2322
/>
2423

PowerFileExplorer/src/main/res/layout/image_fragment.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
android:minWidth="480dp"
1919
android:minHeight="480dp"
2020
android:src="@drawable/placeholder_image" />
21+
2122
<ImageView
2223
android:id="@+id/videoPlayImage"
2324
android:layout_width="wrap_content"
@@ -27,6 +28,7 @@
2728
android:scaleType="fitCenter"
2829
android:minWidth="128dp"
2930
android:minHeight="128dp"
31+
android:visibility="gone"
3032
/>
3133

3234
<TextView

PowerFileExplorer/src/main/res/layout/imageview.xml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
<FrameLayout
22
xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:id="@+id/frame"
34
android:layout_width="match_parent"
45
android:layout_height="match_parent"
5-
android:gravity="center"
6-
android:layout_gravity="center"
7-
android:layout_centerInParent="true"
8-
96
>
107
<com.veinhorn.scrollgalleryview.ScrollGalleryView
118
android:id="@+id/scroll_gallery_view"

0 commit comments

Comments
 (0)