diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e11473eec..f67dcbafb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -201,6 +201,7 @@ android:name="android.support.PARENT_ACTIVITY" android:value=".views.main.MainActivity" /> + = 11) { + // display some nice animation while swiping + viewPager.setPageTransformer(true, new DepthPageTransformer()); + } + } + + private class ScreenShotPagerAdapter extends FragmentStatePagerAdapter { + + private final String[] screenshots; + + ScreenShotPagerAdapter(FragmentManager fragmentManager, String[] screenshots) { + super(fragmentManager); + this.screenshots = screenshots; + } + + @Override + public Fragment getItem(int position) { + return ScreenShotPageFragment.newInstance(screenshots[position]); + } + + @Override + public int getCount() { + return screenshots.length; + } + } + + /** + * A single screenshot page. + */ + public static class ScreenShotPageFragment extends Fragment { + + private static final String ARG_SCREENSHOT_URL = "ARG_SCREENSHOT_URL"; + + static ScreenShotPageFragment newInstance(String screenshotUrl) { + ScreenShotPageFragment fragment = new ScreenShotPageFragment(); + Bundle args = new Bundle(); + args.putString(ARG_SCREENSHOT_URL, screenshotUrl); + fragment.setArguments(args); + return fragment; + } + + private String screenshotUrl; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + screenshotUrl = getArguments() != null ? getArguments().getString(ARG_SCREENSHOT_URL) : null; + } + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + + DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder() + .cacheInMemory(true) + .cacheOnDisk(true) + .imageScaleType(ImageScaleType.NONE) + .showImageOnLoading(R.drawable.screenshot_placeholder) + .showImageForEmptyUri(R.drawable.screenshot_placeholder) + .bitmapConfig(Bitmap.Config.RGB_565) + .build(); + + View rootView = inflater.inflate(R.layout.activity_screenshots_page, container, false); + + ImageView screenshotView = (ImageView) rootView.findViewById(R.id.screenshot); + ImageLoader.getInstance().displayImage(screenshotUrl, screenshotView, displayImageOptions); + + return rootView; + } + } + + @TargetApi(11) + public class DepthPageTransformer implements ViewPager.PageTransformer { + + public void transformPage(View view, float position) { + int pageWidth = view.getWidth(); + + if (position <= 0) { + // use the default slide transition when moving to the left page + view.setAlpha(1); + view.setTranslationX(0); + + } else if (position <= 1) { + // fade the page out. + view.setAlpha(1 - position); + + // add parallax effect + view.setTranslationX(pageWidth * -position / 2); + + } else { + // this page is way off-screen to the right. + view.setAlpha(0); + } + } + } +} diff --git a/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsRecyclerViewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsRecyclerViewAdapter.java index 048395dfe..1ce4aee02 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsRecyclerViewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsRecyclerViewAdapter.java @@ -18,9 +18,12 @@ import org.fdroid.fdroid.data.App; class ScreenShotsRecyclerViewAdapter extends RecyclerView.Adapter { private final String[] screenshots; private final DisplayImageOptions displayImageOptions; + private final Listener listener; - ScreenShotsRecyclerViewAdapter(Context context, App app) { + ScreenShotsRecyclerViewAdapter(Context context, App app, Listener listener) { super(); + this.listener = listener; + screenshots = app.getAllScreenshots(context); displayImageOptions = new DisplayImageOptions.Builder() .cacheInMemory(true) @@ -33,8 +36,8 @@ class ScreenShotsRecyclerViewAdapter extends RecyclerView.Adapter + + + + diff --git a/app/src/main/res/layout/activity_screenshots_page.xml b/app/src/main/res/layout/activity_screenshots_page.xml new file mode 100644 index 000000000..55c0a4a6d --- /dev/null +++ b/app/src/main/res/layout/activity_screenshots_page.xml @@ -0,0 +1,10 @@ + + +