Create an auto Image Slider activity in android.

Add dependency in your gradle file:

//for ViewPager2
implementation "androidx.viewpager2:viewpager2:1.0.0"
//for RoundImage
implementation 'com.makeramen:roundedimageview:2.3.0'


activity_main.xml :




<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
tools:context=".MainActivity">

<ImageView
android:layout_width="match_parent"
android:layout_height="110dp"
android:src="@drawable/logo"/>

<androidx.viewpager2.widget.ViewPager2
android:id="@+id/ViewPager2"
android:layout_width="match_parent"
android:layout_height="480dp"
android:layout_centerInParent="true"
android:layout_marginStart="70dp"/>

<Button
android:id="@+id/GoToPhone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/ViewPager2"
android:layout_marginTop="10dp"
android:text="Continue With Phone Number"
android:background="@drawable/button_custom"
android:drawableRight="@drawable/rightarrow"
android:onClick="VerifyPhoneNumber"
/>

</RelativeLayout>

Create a XML file name with slide_item_container:
<?xml version="1.0" encoding="utf-8"?>
<com.makeramen.roundedimageview.RoundedImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ImageSlide"
app:riv_corner_radius="12dp"
android:adjustViewBounds="true">

</com.makeramen.roundedimageview.RoundedImageView>

Create a Java class name with Slide_item:
public class SlideItem {
//here you can use string variable to store url
//if you want to load image from internet
private int images;
SlideItem(int images)
{
this.images=images;
}
public int getImages() {
return images;
}
}

Create a sliderAdapter.java class:

public class SliderAdapter extends RecyclerView.Adapter<SliderAdapter.SliderHolder>{
private List<SlideItem> slideItems;
private ViewPager2 viewPager2;

SliderAdapter(List<SlideItem> slideItems, ViewPager2 viewPager2) {
this.slideItems = slideItems;
this.viewPager2 = viewPager2;
}

@NonNull
@Override
public SliderHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new SliderHolder(
LayoutInflater.from(parent.getContext()).inflate(
R.layout.slide_item_container,
parent,
false
)
);
}

@Override
public void onBindViewHolder(@NonNull SliderHolder holder, int position) {
holder.setImages(slideItems.get(position));
if(position==slideItems.size()-2){
viewPager2.post(runnable);

}
}

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

class SliderHolder extends RecyclerView.ViewHolder{
private RoundedImageView imageView;
SliderHolder(@NonNull View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.ImageSlide);
}
void setImages(SlideItem slideItem){
//if necessary to display images from internet we have to
// add code here with help of glide

imageView.setImageResource(slideItem.getImages());
}
}
private Runnable runnable=new Runnable() {
@Override
public void run() {
slideItems.addAll(slideItems);
notifyDataSetChanged();
}
};
}

Main_Activity.java:

public class MainActivity extends AppCompatActivity {
private ViewPager2 viewPager2;
private Handler sliderHandle=new Handler();


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager2=findViewById(R.id.ViewPager2);

//list of images from drawable
List<SlideItem> slideItems=new ArrayList<>();
slideItems.add(new SlideItem(R.drawable.pic1));
slideItems.add(new SlideItem(R.drawable.pic2));
slideItems.add(new SlideItem(R.drawable.pic));
slideItems.add(new SlideItem(R.drawable.pic2));
slideItems.add(new SlideItem(R.drawable.pic1));

viewPager2.setAdapter(new SliderAdapter(slideItems,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);
sliderHandle.removeCallbacks(sliderRunable);
sliderHandle.postDelayed(sliderRunable,2000); //slider duration 3 sec
}
});
}
private Runnable sliderRunable=new Runnable() {
@Override
public void run() {
viewPager2.setCurrentItem(viewPager2.getCurrentItem()+1);
}
};

public void VerifyPhoneNumber(View view) {
Intent intent=new Intent(MainActivity.this, PhoneVerification.class);
startActivity(intent);
}
}

Final Page:






Comments

Popular posts from this blog

Introduction to Python.

Decision Making Statement.