Created by
Александр Волохов
last modified
| public class YourAdapter
extends RecyclerView.Adapter<YourAdapter.ItemHolder> {
List<Object> parameters;
public YourAdapter(List<Object> parameters) {
this.parameters = parameters;
}
@NonNull
@Override
public ItemHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ItemtHolder(
DataBindingUtil.inflate(
LayoutInflater.from(parent.getContext()), R.layout.item, parent, false));
}
@Override
public void onBindViewHolder(@NonNull ItemHolder holder, int position) {
...
}
@Override
public int getItemCount() {
return parameters.size();
}
public class ItemHolder extends RecyclerView.ViewHolder {
ItemBinding binding;
public ItemHolder(ItemBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
}
|
| public class YourFragment extends Fragment {
public FragmentBinding binding;
public constMarginPx = 400;
@Override
public View onCreateView(
@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
binding =
DataBindingUtil.inflate(inflater, R.layout.fragment, container, false);
binding.viewPager.setAdapter(new YourAdapter(getData()));
binding.viewPager.setClipToPadding(false);
binding.viewPager.setClipChildren(false);
binding.viewPager.setOffscreenPageLimit(2);
binding.viewPager.setPageTransformer(new YourPagerTransformer(marginPx));
return binding.getRoot();
}
private List<Object> getData() {
...
}
}
|
| public class YourPagerTransformer implements ViewPager2.PageTransformer {
int marginPx;
public YourPagerTransformer(int marginPx) {
this.marginPx = marginPx;
}
@Override
public void transformPage(@NonNull View page, float position) {
page.setTranslationX(-marginPx * position);
}
}
|
| <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/fragment_layout"
android:layout_width="match_parent"
android:layout_height="204dp"
app:layout_constraintTop_toTopOf="parent">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
|
| <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/item"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.cardview.widget.CardView
android:id="@+id/item_preview"
android:layout_width="148dp"
android:layout_height="148dp"
app:cardCornerRadius="6dp"
app:cardElevation="6dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
|