2012-08-27 19 views
6

¿Alguien sabe cómo modificar la sensibilidad de ViewPager?¿Cómo modificar la sensibilidad de viewpager?

Actualmente utilizo ViewPager de la biblioteca de soporte de Android v4 para implementar mi propio visor de fotos.

Sin embargo, el ViewPager predeterminado es demasiado sensible, cuando mi dedo toca la pantalla y se mueve en una muy distinta (tal vez solo 0.5 cm). Luego se cambiará ViewPager para desplazarse a la vista de foto siguiente/anterior.

¿Hay alguna manera de sobrescribir el comportamiento predeterminado de ViewPager para disminuir la sensibilidad?

Gracias a cualquier respuesta.

Respuesta

4

He comprobado ViewPager.java de src de la biblioteca de compatibilidad y parece que no hay forma de hacerlo por xml o algún setter. ViewPager tiene un código como el siguiente:

final float density = context.getResources().getDisplayMetrics().density; 
mFlingDistance = (int) (MIN_DISTANCE_FOR_FLING * density); 
mCloseEnough = (int) (CLOSE_ENOUGH * density); 
mDefaultGutterSize = (int) (DEFAULT_GUTTER_SIZE * density); 

Como se puede ver, se utiliza es constantes internas para determinar la distancia de aventura, etc.

buenas noticias son: Puede copiar ViewPager (en este caso la licencia de lo que debería ser considerado) a su código y ampliarlo, por ejemplo para obtener distancia arrojadiza del atributo xml.

+0

así, voy a tratar de hacerlo, gracias a su respuesta. – Raymond

+0

Es cursi, pero también puedes configurar esto mediante el reflejo. – Ljdawson

+0

@Raymond ¿Obtuviste una solución para esto? Necesito desplazamiento para ViewPager como ScrollVIew predeterminado. – Noundla

2

Puede reflejar el terreno mFlingDistance así:

Field mFlingDistance; 
mFlingDistance = ViewPager.class.getDeclaredField("mFlingDistance"); 
mFlingDistance.setAccessible(true); 

// Set custom value: 
mFlingDistance.set(mPager, 30);