Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Field mFlingDistance;
- mFlingDistance = ViewPager.class.getDeclaredField("mFlingDistance");
- mFlingDistance.setAccessible(true);
- // Set custom value:
- mFlingDistance.set(this, 20);
- package de.XXX.app.Activitys.fragments;
- import android.content.Context;
- import android.support.v4.view.ViewPager;
- import android.util.AttributeSet;
- import android.view.MotionEvent;
- import android.view.View;
- import java.lang.reflect.Field;
- import java.lang.reflect.Modifier;
- public class VerticalViewPager extends ViewPager {
- public VerticalViewPager(Context context) {
- super(context);
- init();
- }
- public VerticalViewPager(Context context, AttributeSet attrs) {
- super(context, attrs);
- init();
- }
- private void init() {
- try {
- Field mFlingDistance;
- mFlingDistance = ViewPager.class.getDeclaredField("mFlingDistance");
- mFlingDistance.setAccessible(true);
- // Set custom value:
- mFlingDistance.set(this, 20);
- }catch (Exception e){
- System.out.println("SMTH Happend!:(");
- }
- setPageTransformer(true, new VerticalPageTransformer());
- setOverScrollMode(OVER_SCROLL_NEVER);
- }
- private class VerticalPageTransformer implements ViewPager.PageTransformer {
- @Override
- public void transformPage(View view, float position) {
- if (position < -1) {
- view.setAlpha(0);
- } else if ( position <= 1) {
- view.setAlpha(1);
- view.setTranslationX(view.getWidth() * -position);
- float yPosition = position * (view.getHeight()/(1/0.6f));
- view.setTranslationY(yPosition);
- } else {
- view.setAlpha(0);
- }
- }
- }
- private MotionEvent swapXY(MotionEvent ev) {
- float width = getWidth();
- float height = getHeight();
- float newX = (ev.getY() / height) * width;
- float newY = (ev.getX() / width) * height;
- ev.setLocation(newX, newY);
- return ev;
- }
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- boolean intercepted = super.onInterceptTouchEvent(swapXY(ev));
- swapXY(ev);
- return intercepted;
- }
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- return super.onTouchEvent(swapXY(ev));
- }
- private static void setFinalStaticField(Class<?> clazz, String fieldName, Object value)
- throws ReflectiveOperationException {
- Field field = clazz.getDeclaredField(fieldName);
- field.setAccessible(true);
- Field modifiers = Field.class.getDeclaredField("modifiers");
- modifiers.setAccessible(true);
- modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL);
- field.set(null, value);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement