usar - viewpager example android studio
Cómo establecer el relleno entre las páginas de ViewPager mientras se mantiene el ancho completo de la página (3)
Actualmente no hay forma de hacerlo en el diseño XML, pero puede usar las siguientes funciones en java:
setPageMargin(int marginPixels)
setPageMarginDrawable(drawable d)
setPageMarginDrawable(int resId)
Primero deberás tomar el buscapersonas de tu diseño XML:
ViewPager pager = (ViewPager) findViewById(R.id.pager);
Esta pregunta ya tiene una respuesta aquí:
Estoy usando la nueva vista ViewPager
de la biblioteca de compatibilidad de Android, y no puedo descubrir cómo ViewPager
el relleno entre las páginas, de modo que cuando se deslice entre ellas, haya un borde visible.
El ancho de Mi ViewPager
se establece en fill_parent
por lo que ocupa todo el ancho de la pantalla. Puedo obtener este borde entre las páginas configurando android:padding
en el ViewPager
, pero eso tiene el efecto agregado (no deseado) de reducir el tamaño visible de la página cuando se muestra completamente.
Supongo que lo que necesito es introducir un borde fuera del ancho de la vista de alguna manera, si eso tiene sentido ...
El nuevo Android Market hace esto como me gustaría, pero no puedo entender cómo se ha logrado.
Esto sería un poco de trabajo, pero podría lograr el efecto que desea al tener un elemento UI de borde que luego continuará animando fuera de la pantalla a la misma velocidad a la que ocurre el deslizamiento.
Por ejemplo, diga que está deslizando de derecha a izquierda:
1) La página que viene a ver tiene el elemento de borde adicional en su borde izquierdo de forma predeterminada.
2) Supervisa el deslizamiento implementando un ViewPager.OnPageChangeListener()
con un onPageScrolled()
personalizado onPageScrolled()
. Calcule la velocidad del barrido aquí también.
3) Cuando el borde izquierdo de la página entrante toque el borde izquierdo de la pantalla, comience a animar el elemento del borde a la izquierda a la velocidad que calculó.
... Pensando más en esto, creo que la ilusión sería más efectiva si animara el elemento del borde que se está traduciendo por su ancho durante la duración del golpe . Suena raro, pero una vez que lo imagines, tendrá sentido :)
La fuente de ViewPager está disponible con las librerías de compatibilidad de Android v4.
/**
* This method will be invoked when the current page is scrolled, either as part
* of a programmatically initiated smooth scroll or a user initiated touch scroll.
*
* @param position Position index of the first page currently being displayed.
* Page position+1 will be visible if positionOffset is nonzero.
* @param positionOffset Value from [0, 1) indicating the offset from the page at position.
* @param positionOffsetPixels Value in pixels indicating the offset from position.
*/
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels);
Parece que las versiones más recientes del paquete de soporte (desde la revisión 5) han agregado soporte para los márgenes entre las páginas de ViewPager
través de setPageMargin()
y setPageMarginDrawable()
.