Steuern Seitensprung speed für recycler anzeigen
Ich habe eine RecyclerView
in dem ich ein Bild haben ,ein paar TextView
s und 2 ImageButton
s.
Ich habe 7-8 solche Zeilen anzuzeigen, die in meinem Activity
.
Das scrollen ist sehr glatt in android 4.4.4 und unten Versionen, aber es gibt einige Rucken Effekt in lollipop.
Ich denke, dass die Steuerung der Seitensprung-Geschwindigkeit für die RecyclerView
wird den trick tun.
Ich habe gesucht, aber nichts gefunden.Stattdessen fand ich wie Sie die Ansicht an eine bestimmte position für den Seitensprung.
Aber ich möchte festlegen, das Seitensprung speed. Können Reibung verwendet werden. Und wie Sie die Reibung.
menuRecyclerView = (RecyclerView) findViewById(R.id.menuList);
menuRecyclerView.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(context);
menuRecyclerView.setLayoutManager(llm);
Scroller sc = new Scroller(context);
sc.setFriction(ViewConfiguration.getScrollFriction() * 10);
Dies ist mein adapter zu setzen rcycler-view-layout.
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import news.circle.circle.R;
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.CustomViewHolder> {
public RecyclerViewAdapter(Context context, List<MenuDescription> listOrder, DatabaseHandlerCart db
, List<MenuDescription> vegList, List<MenuDescription> nonVegList, String menuTextData) {
this.listOrder = listOrder;
this.inflater = LayoutInflater.from(context);
this.context = context;
imageLoader = new ImageLoader(context);
this.db = db;
this.vegList = vegList;
this.nonVegList = nonVegList;
this.completeList = listOrder;
this.menuTextData = menuTextData;
}
@Override
public RecyclerViewAdapter.CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_ITEM) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_view, parent, false);
return new CustomViewHolder(view, viewType);
} else if (viewType == TYPE_HEADER) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.header, parent, false);
return new CustomViewHolder(view, viewType);
}
return null;
}
@Override
public void onBindViewHolder(final RecyclerViewAdapter.CustomViewHolder holder, int position) {
if (holder.Holderid == 1) {
final MenuDescription menu = listOrder.get(position - 1);
holder.title.setText(menu.getName() + "");
holder.quant.setText(menu.getQuantity() + "");
holder.description.setText(menu.getDescription());
holder.title.setTypeface(Fonts.getFont(context, Constants.AVENIR_REGULAR));
holder.description.setTypeface(Fonts.getFont(context, Constants.AVENIR_REGULAR));
Glide.with(context).load(menu.getFlag_path()).placeholder(R.drawable.ic_order_now).fitCenter().into(holder.image);
holder.inc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODO Auto-generated method stub
if (Constants.internet) {
menu.decrQuantity();
if (menu.getQuantity() == 0) {
menu.setDecr_button_visibility(0);
try {
db.DeleteCartItem(menu.getItem_id());
} catch (SQLException e) {
e.printStackTrace();
}
} else {
try {
db.updateQuantity(menu.getQuantity(), menu.getItem_id());
} catch (SQLException e) {
e.printStackTrace();
}
}
holder.quant.setText(menu.getQuantity() + "");
notifyDataSetChanged();
} else {
Toast.makeText(context, "Please check your internet connection", Toast.LENGTH_SHORT).
}
show();
}
});
holder.decr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Constants.internet) {
try {
if (!db.CheckIsItemAlreadyInDBorNot(menu.getItem_id(), "cart")) {
menu.incrQuantity();
db.addDataToCart(menu);
//cart_items.add(menu);
holder.quant.setText(menu.getQuantity() + "");
} else {
menu.incrQuantity();
db.updateQuantity(menu.getQuantity(), menu.getItem_id());
holder.quant.setText(menu.getQuantity() + "");
}
} catch (SQLException | IllegalStateException e) {
e.printStackTrace();
}
if (menu.getDecr_button_visibility() == 1) {
holder.decr.setVisibility(View.VISIBLE);
holder.quant.setVisibility(View.VISIBLE);
if (total == 1)
RecyclerViewMainActivity.bottomBarUp();
notifyDataSetChanged();
} else
Toast.makeText(context, "Please check your internet connection", Toast.LENGTH_SHORT).show();
}
}
});
}
}
@Override
public int getItemCount() {
return (null != listOrder ? listOrder.size() + 1 : 0);
}
@Override
public int getItemViewType(int position) {
if (isPositionHeader(position))
return TYPE_HEADER;
return TYPE_ITEM;
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
private boolean isPositionHeader(int position) {
return position == 0;
}
}
InformationsquelleAutor Abhishek Lodha | 2015-08-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist eine
RecyclerView
Methode speziell entwickelt, um Kontrolle der Seitensprung speed Sie nur brauchen, um es zu überschreiben, zu erreichen, die Reibung/Verlangsamung Effekt, den Sie in Ihrer Frage erwähnt.Einer einfachen Implementierung, die Sie könnten versuchen:
konnten Sie Ihr problem lösen? Könnten Sie Kennzeichnen diese als die akzeptierte Antwort bitte?
InformationsquelleAutor HenriqueMS
Dies funktioniert gut, um eine maximale Schwellenwert auf der Seitensprung speed:
InformationsquelleAutor MikeMcC
RecyclerView ist groß, dass es super ist modular aufgebaut. Sie können Ihre benutzerdefinierten scroller der LayoutMananger
Können Sie https://github.com/apptik/MultiView/tree/master/scrollers
Beispiel:
können Sie überprüfen, weitere Beispiele: https://github.com/apptik/MultiView/blob/master/app/src/main/java/io/apptik/multiview/ScrollersFragment.java
InformationsquelleAutor djodjo
zur Steuerung Ihrer recycler Ansicht scroll-Geschwindigkeit
Siehe dieser post SO:
Bissig scrollen in der RecyclerView
Im Grunde könnte man überschreiben recyclerviews smoothScroll, oder der Umsetzung Ihrer eigenen onGestureListener und befestigen Sie es an der recyclerView
InformationsquelleAutor cj1098