Я новичок ie, извините за мое невежество. У меня есть некоторые трудности с viewpager2. Может ли кто-нибудь дать мне знать, как открыть определенную c активность, щелкнув указанное изображение c в viewpager2? Мой viewPager состоит из четырех изображений. Я получил этот код онлайн. Это работает очень хорошо, но я хочу, чтобы изображения в моем пейджере просмотра работали как кнопка, которая позволяет мне go перейти к следующему (заданному c) действию. Вот мой основной код активности:
public class HomeScreenAct extends AppCompatActivity {
private ViewPager2 viewPager2;
private Handler sliderHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
viewPager2 = findViewById(R.id.view_pager_image);
// Preparing image from drawable
// You can get from API as well
List<SliderItem> sliderItems = new ArrayList<>();
sliderItems.add(new SliderItem(R.drawable.jodipan));
sliderItems.add(new SliderItem(R.drawable.penataran));
sliderItems.add(new SliderItem(R.drawable.gumul));
sliderItems.add(new SliderItem(R.drawable.ijen));
viewPager2.setAdapter(new SliderAdapter(sliderItems, viewPager2));
viewPager2.setClipToPadding(false);
viewPager2.setClipChildren(false);
viewPager2.setOffscreenPageLimit(3);
viewPager2.getChildAt(0).setOverScrollMode(RecyclerView.OVER_SCROLL_NEVER);
CompositePageTransformer compositePageTransformer = new CompositePageTransformer();
compositePageTransformer.addTransformer(new MarginPageTransformer(40));
compositePageTransformer.addTransformer(new ViewPager2.PageTransformer() {
@Override
public void transformPage(@NonNull View page, float position) {
float r = 1 - Math.abs(position);
page.setScaleY(0.85f + r * 0.15f);
}
});
viewPager2.setPageTransformer(compositePageTransformer);
viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
sliderHandler.removeCallbacks(sliderRunnable);
sliderHandler.postDelayed(sliderRunnable, 3000); //Slide duration
}
});
}
private Runnable sliderRunnable = new Runnable() {
@Override
public void run() {
viewPager2.setCurrentItem(viewPager2.getCurrentItem() + 1);
}
};
@Override
protected void onPause() {
super.onPause();
sliderHandler.removeCallbacks(sliderRunnable);
}
@Override
protected void onResume() {
super.onResume();
sliderHandler.postDelayed(sliderRunnable,3000);
}}
А вот мой адаптер ViewPager:
public class SliderAdapter extends RecyclerView.Adapter<SliderAdapter.SliderViewHolder>{
private List<SliderItem> sliderItems;
private ViewPager2 viewPager2;
SliderAdapter(List<SliderItem> sliderItems, ViewPager2 viewPager2) {
this.sliderItems = sliderItems;
this.viewPager2 = viewPager2;
}
@NonNull
@Override
public SliderViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new SliderViewHolder(
LayoutInflater.from(parent.getContext()).inflate(
R.layout.slide_item_container,
parent,
false
)
);
}
@Override
public void onBindViewHolder(@NonNull SliderViewHolder holder, int position) {
holder.setImage(sliderItems.get(position));
if(position == sliderItems.size() - 1){
viewPager2.post(runnable);
}
}
@Override
public int getItemCount() {
return sliderItems.size();
}
class SliderViewHolder extends RecyclerView.ViewHolder{
private RoundedImageView imageView;
SliderViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageSlide);
}
void setImage(SliderItem sliderItem) {
// If you want to display your image from the internet
// you can put your code here using glide or picasso
imageView.setImageResource(sliderItem.getImage());
}
}
private Runnable runnable = new Runnable() {
@Override
public void run() {
sliderItems.addAll(sliderItems);
notifyDataSetChanged();
}
};}
А вот мой код слайдера:
public class SliderItem {
// Here you can use String variable to store url
// If you want to load image from the internet
private int image;
SliderItem(int image)
{
this.image = image;
}
public int getImage() {
return image;
}}