es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

vista desplazable en Android Studio con rebote

Intenté mucho hacer una vista de desplazamiento reboteable, pero no lo logré y todo lo que encontré en internet no funcionaba adecuadamente. Solo quiero una vista de desplazamiento reboteable como la de iOS. Si alguien puede ayudarme, sería genial. He intentado con esta clase:

`public class BounceScrollView extends ScrollView {
private static final int MAX_Y_OVERSCROLL_DISTANCE = 200;
private Context mContext;
private int mMaxYOverscrollDistance;

public BounceScrollView(Context context) {
    super(context);
    mContext = context;
    initBounceScrollView();
}

public BounceScrollView(Context context, AttributeSet attrs) {
    super(context, attrs);
    mContext = context;
    initBounceScrollView();
}

public BounceScrollView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    mContext = context;
    initBounceScrollView();
}

private void initBounceScrollView() {
    final DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
    final float density = metrics.density;

    mMaxYOverscrollDistance = (int)(density * MAX_Y_OVERSCROLL_DISTANCE);
}

@Override
protected boolean overScrollBy(int deltaX , int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
    return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, mMaxYOverscrollDistance, isTouchEvent);
}

}`

Este es un ejemplo de que funciona, pero en algún punto la vista de desplazamiento se atasca y hay problemas similares a eso. También probé con otras bibliotecas disponibles, pero no funcionaron. ¿Es posible hacer una vista de desplazamiento reboteable o no hay esperanza?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no es posible crear una vista desplazable rebotable en Android como lo es en iOS. Esto se debe a que la forma en que se implementa el desplazamiento en las dos plataformas es diferente. En iOS, la vista de desplazamiento rebota cuando llega al borde del contenido, mientras que en Android, la vista de desplazamiento se detiene cuando llega al borde del contenido.

    Aunque hay algunas bibliotecas de terceros e implementaciones personalizadas disponibles que intentan imitar el comportamiento de iOS, es posible que no funcionen correctamente en todas las situaciones y puedan tener problemas como el que mencionaste con la vista atascada.

    Puedes intentar usar un RecyclerView con un LinearLayoutManager y establecer overscrollMode en View.OVER_SCROLL_ALWAYS para lograr un efecto similar, pero no será exactamente igual que la vista desplazable rebotable en iOS.

Comments are closed.