ads_header

How To Create Images Slider In Android



Hello everyone, in this post I will discuss about how to create a "Images Slider" program in Android Studio which is accompanied by an indicator. Programs like this are often seen in applications that are global like Instagram. Okay, first open Android Studio and create a new project.





When finished, we need two layouts (activity_main and slide) and two class (MainActivity and MyAdapter). Before that enter some Dependencies needed as follows


dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   testCompile 'junit:junit:4.12'
   compile 'com.android.support:appcompat-v7:25.3.1'
   compile 'com.android.support:design:25.3.1'
   compile 'me.relex:circle'
}

When finished, prepare several images and save them to the drawable folder on your project.


Now, open slide.xml and enter the following code

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"   
    android:layout_height="fill_parent"
    android:layout_width="fill_parent">

    <ImageView
        android:id="@+id/image"
        android:adjustViewBounds="true"
        android:layout_gravity="center"
        android:src="@drawable/one"
        android:scaleType="centerCrop"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
</FrameLayout>

Continue to the activity_main.xml layout and enter the following code

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
   android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_alignParentTop="true"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"/>
        <me.relex.circleindicator.CircleIndicator
            android:id="@+id/indicator"
            android:layout_alignParentBottom="true"
            android:layout_width="match_parent"
            android:layout_height="48dp"/>
    </RelativeLayout>

</LinearLayout>

When it's finished, we move to the class section, then open MyAdapter and enter the following code

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import java.util.ArrayList;

public class MyAdapter extends PagerAdapter {

    private ArrayList<Integer> images;
    private LayoutInflater inflater;
    private Context context;

    public MyAdapter(Context context, ArrayList<Integer> images){
        this.context = context;
        this.images = images;
        inflater = LayoutInflater.from(context);
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object){
        container.removeView((View)object);
    }


    @Override
    public int getCount() {
        return images.size();
    }

    @Override
    public Object instantiateItem(ViewGroup view, int position){
        View myImageLayout  = inflater.inflate(R.layout.slide, view, false);
        ImageView myImage = (ImageView) myImageLayout.findViewById(R.id.image);   
        myImage.setImageResource(images.get(position));
        view.addView(myImageLayout, 0);
        return myImageLayout;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view.equals(object);
    }
}

And finally open Main_Activity and enter the following code

import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
import me.relex.circleindicator.CircleIndicator;

public class MainActivity extends AppCompatActivity {

    private static ViewPager mPager;
    private static int currentPage = 0;
    private static final Integer[] img = {R.drawable.one,R.drawable.two,R.drawable.three,R.drawable.four,R.drawable.five,R.drawable.six};   
    private ArrayList<Integer>  ImgArray = new ArrayList<Integer>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }

    private void init (){
        for (int i=0; i<img.length; i++)
            ImgArray.add(img[i]);

            mPager = (ViewPager) findViewById(R.id.pager);
            mPager.setAdapter(new MyAdapter(MainActivity.this, ImgArray));
            CircleIndicator indicator = (CircleIndicator)findViewById(R.id.indicator);
            indicator.setViewPager(mPager);

            final Handler handler = new Handler();
            final Runnable Update = new Runnable() {
                @Override
                public void run() {
                    if (currentPage == img.length){
                        currentPage = 0;
                    }
                    mPager.setCurrentItem(currentPage++, true);
                }
            };
            //Auto start
            Timer swipeTimer = new Timer();
            swipeTimer.schedule(new TimerTask() {
                @Override
                public void run() {
                    handler.post(Update);
                }
            }, 2500, 2500);
        }
}

If there is no error here, the program is ready to run. You need to know that this program will display images automatically, if you want to make it not automatic, you just delete the code in the Auto start section.

2 comments:

  1. compile 'me.relex:circle'
    This dependency is not working

    ReplyDelete
  2. Thanks for sharing your blog. In this Blog you have given an Informative Information which are very important for users.

    Shared Hosting Plans

    Managed service provider

    Unmanaged Dedicated Server Hosting

    Best Minecraft Server Hosting

    ReplyDelete

Powered by Blogger.