El Arsenal de Android – Vistas de desplazamiento

Agregue una animación de desplazamiento excesivo similar a IOS a sus vistas de desplazamiento usando PrimaveraAnimación.

Actualmente incluye BouncyRecyclerView y BouncyNestedScrollView.

En el módulo build.gradle de su aplicación:

   dependencies {
        implementation 'androidx.recyclerview:recyclerview:1.1.0'
        implementation 'com.factor:bouncy:1.5'
   }

(Se requiere androidx.recyclerview para que BouncyRecyclerView funcione)

NestedScrollView con efecto rebote de desplazamiento, logrado al anular el efecto de borde predeterminado

Uso:

Utilizar como NestedScrollView normal. Ponlo en tu diseño:

<com.factor.bouncy.BouncyNestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:fling_animation_size=".7"
        app:overscroll_animation_size=".7">

    <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            
            ...
            ...
            ...

    </LinearLayout>

</com.factor.bouncy.BouncyNestedScrollView>

fling_animation_size especifica la magnitud del efecto de desplazamiento excesivo para el lanzamiento, el valor predeterminado es 0,5 si no se proporciona ningún valor.

overscroll_animation_size especifica la cantidad de efecto de desplazamiento excesivo para el arrastre, el valor predeterminado es 0,5 si no se proporciona ningún valor.

Recomendamos encarecidamente mantener ambos valores por debajo de 5.

BouncyRecyclerView agrega un efecto de desplazamiento excesivo a RecyclerView y admite gestos de arrastrar y soltar y de desplazamiento

Uso:

Úselo como un RecyclerView normal. Ponlo en tu diseño:

<com.factor.bouncy.BouncyRecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:recyclerview_fling_animation_size=".7"
        app:recyclerview_overscroll_animation_size=".7"
        app:allow_drag_reorder="true"
        app:allow_item_swipe="false"/>

configure el administrador de diseño y el adaptador. En teoría, es compatible con cualquier LayoutManager:

   recycler_view.setAdapter(myAdapter);
   recycler_view.setLayoutManager(new LinearLayoutManager(context));
   //recycler_view.setLayoutManager(new GridLayoutManager(context, 3));

recyclerview_fling_animation_size especifica la magnitud del efecto de desplazamiento excesivo para el lanzamiento, el valor predeterminado es 0,5 si no se proporciona ningún valor recyclerview_overscroll_animation_size especifica la cantidad de efecto de desplazamiento excesivo para el arrastre, el valor predeterminado es 0.5 si no se proporciona ningún valor

allow_drag_reorder es allow_item_swipe se establecen en falso de forma predeterminada. Si desea habilitar estas funciones, simplemente configúrelas como verdaderas.

** Arrastrar y soltar no funciona de inmediato.

Para que funcionen los gestos de arrastrar o deslizar, extienda el adaptador BouncyRecyclerView.Adapter y agregue el padre correspondiente al constructor. (Si el adaptador no extiende BouncyRecyclerView.Adapter, BouncyRecyclerView solo deshabilitará los gestos)

public class MyAdapter extends BouncyRecyclerView.Adapter
{
    private final ArrayList<MyData> dataSet;

    public MyAdapter(ArrayList<MyData> dataSet)
    {
        this.dataSet = dataSet;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
    {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position)
    {
        MyViewHolder h = (MyViewHolder) holder;
        h.getTextView().setText(dataSet.get(position).getData());
    }

    @Override
    public int getItemCount()
    {
        return dataSet.size();
    }

    @Override
    public void onItemMoved(int fromPosition, int toPosition)
    {
        //*****must override to save changes 
        //called repeatedly when item is dragged (reordered)
        
        //example of handling reorder
        MyData item = dataSet.remove(fromPosition);
        dataSet.add(toPosition, item);
        notifyItemMoved(fromPosition, toPosition);
    }

    @Override
    public void onItemSwipedToStart(RecyclerView.ViewHolder viewHolder, int position)
    {
        //item swiped left
    }

    @Override
    public void onItemSwipedToEnd(RecyclerView.ViewHolder viewHolder, int position)
    {
        //item swiped right
    }

    @Override
    public void onItemSelected(RecyclerView.ViewHolder viewHolder)
    {
        //item long pressed (selected)
    }

    @Override
    public void onItemReleased(RecyclerView.ViewHolder viewHolder)
    {
        //item released (unselected)
    }
}

Lanzador de factores – Un lanzador inspirado en Windows Phone con un toque moderno

Mutificar – Activa automáticamente No molestar según el lugar en el que te encuentres

.

Compruebe también

en vivo desde Droidcon, incluida la mayor actualización de Gemini en Android Studio y más lanzamientos del SDK de Android.

Acabamos de lanzar nuestro episodio de otoño de #TheAndroidShow en YouTube etcétera desarrollador.android.comy esta vez …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *