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
.