Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:创建一个滑动图像视图_Android_Android Imageview - Fatal编程技术网

Android:创建一个滑动图像视图

Android:创建一个滑动图像视图,android,android-imageview,Android,Android Imageview,我想制作一个像下面第一张图片一样的滑动图像视图。这些图片将从互联网上下载。在我按下一张图片后,将打开一个类似于第二张图片的活动。我只是要求一个指导方针,因为我是新来的,我不知道如何开始实施。谢谢各位: 第一图像 第二图像 以下是在应用程序中滑动多媒体资料的好教程: 以下是在应用程序中滑动多媒体资料的好教程: package com.example.swipableimagegallary import java.util.ArrayList; import android

我想制作一个像下面第一张图片一样的滑动图像视图。这些图片将从互联网上下载。在我按下一张图片后,将打开一个类似于第二张图片的活动。我只是要求一个指导方针,因为我是新来的,我不知道如何开始实施。谢谢各位:

第一图像

第二图像


以下是在应用程序中滑动多媒体资料的好教程:


以下是在应用程序中滑动多媒体资料的好教程:

package com.example.swipableimagegallary

    import java.util.ArrayList;



    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.Dialog;
    import android.app.DialogFragment;
    import android.os.Bundle;
    import android.support.v4.view.ViewPager;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ImageView;

    public class MainActivity extends Activity {

    ArrayList<String> arraylist_Url;
    Button gallary;
    GalleryDialog mGalleryDialog;

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

        arraylist_Url = new ArrayList<String>();

        arraylist_Url.add("http://www.akfreshmart.com/AKFresh_ProductImages/494_20-02-2014_Banana_Small_Size.gif");
        arraylist_Url.add("http://www.dhresource.com/200x200s/f2-albu-g3-M01-5A-A1-rBVaHFSuM9CAdXH-AAAoSL_PdrY916.jpg/8-7cm-small-size-simulation-foam-pumpkin.jpg");
        arraylist_Url.add("http://www.dhresource.com/albu_1066143295_00-1.200x200/middle-size-30cm-and-small-size-20cm-stuffed.jpg");
        arraylist_Url.add("http://i.ebayimg.com/images/g/ZpgAAOSwRLZT8EwE/s-l300.jpg");
        arraylist_Url.add("http://guideimg.alibaba.com/images/shop/2015/08/14/43/super-mario-bros.-small-size-yoshi-plush-doll_7664843.jpeg");



        gallary.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                galleryPopUp();

            }
        });


    }


    public void galleryPopUp() {
        mGalleryDialog = new GalleryDialog();
        mGalleryDialog.show(getFragmentManager(), "dialog");
        mGalleryDialog.setCancelable(false);
    }




    public class GalleryDialog extends DialogFragment {

        @SuppressWarnings("deprecation")
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {

            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

            LayoutInflater inflater = getActivity().getLayoutInflater();

            View convertview = inflater.inflate(R.layout.dialog_show_images,
                    null);
            ViewPager viewPager = (ViewPager) convertview
                    .findViewById(R.id.view_pager);
            ImageView imageview_close = (ImageView) convertview
                    .findViewById(R.id.imageview_close_imageshow);

            ImageView imageview_noimage = (ImageView) convertview
                    .findViewById(R.id.imageview_noimage);

            if (arraylist_Url.size() > 0) {
                viewPager.setVisibility(View.VISIBLE);
                imageview_noimage.setVisibility(View.GONE);
                ImageAdapter adapter = new ImageAdapter(getActivity(),
                        arraylist_Url);
                viewPager.setAdapter(adapter);
            } else {
                viewPager.setVisibility(View.GONE);
                imageview_noimage.setVisibility(View.VISIBLE);
                imageview_noimage.setBackgroundResource(R.drawable.ic_launcher);
            }

            imageview_close.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    mGalleryDialog.dismiss();
                }
            });

            builder.setView(convertview);

            return builder.create();

        }

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    }




**ImageAdapter.java**



    package com.example.swipableimagegallary;

    import java.util.ArrayList;



    import android.content.Context;
    import android.graphics.Bitmap;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.ViewGroup.LayoutParams;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView;

    public class ImageAdapter extends PagerAdapter {

    Context context;
    LayoutInflater inflater;
    ImageLoader imageLoader;
    ArrayList<String> arraylist_image_url;


    public ImageAdapter(Context context, ArrayList<String> arraylist_image_url) {
        this.context = context;
        this.arraylist_image_url = arraylist_image_url;
        inflater = LayoutInflater.from(context);

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return arraylist_image_url.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        // TODO Auto-generated method stub
        return view == ((ViewGroup) object);
    }

    public class ViewHolder {
        TextView textview_count;
        ImageView imageview;

    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {


        View view = inflater.inflate(R.layout.row_imageadapter, null);

        ViewHolder holder = new ViewHolder();

        holder.imageview = (ImageView) view
                .findViewById(R.id.imageview_machin_image);
        holder.textview_count = (TextView) view
                .findViewById(R.id.textview_loadingimage);

        imageLoader = new ImageLoader(context);

            imageLoader.DisplayImage(arraylist_image_url.get(position),
                    holder.imageview);
            holder.textview_count.setText("" + (position + 1) + "/"
                    + arraylist_image_url.size());


        container.addView(view);

        // }
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((ViewGroup) object);

    }
    }



**ImageLoader.java**


    package com.example.swipableimagegallary;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.Collections;
    import java.util.Map;
    import java.util.WeakHashMap;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;


    import android.os.Handler;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Path;
    import android.graphics.Rect;
    import android.widget.ImageView;

    public class ImageLoader {
        Bitmap roundBitmap;
        MemoryCache memoryCache = new MemoryCache();
        FileCache fileCache;
        private Map<ImageView, String> imageViews = Collections
                .synchronizedMap(new WeakHashMap<ImageView, String>());
        ExecutorService executorService;
        Handler handler = new Handler();// handler to display images in UI thread

    public ImageLoader(Context context) {
        fileCache = new FileCache(context);
        executorService = Executors.newFixedThreadPool(5);
    }

    final int stub_id = R.drawable.ic_launcher;

    public void DisplayImage(String url, ImageView imageView) {
        imageViews.put(imageView, url);
        Bitmap bitmap = memoryCache.get(url);
        if (bitmap != null) {
            // roundBitmap=getRoundedShape(bitmap);
            imageView.setImageBitmap(bitmap);
        } else {
            queuePhoto(url, imageView);
            imageView.setImageResource(stub_id);
        }
    }

    private void queuePhoto(String url, ImageView imageView) {
        PhotoToLoad p = new PhotoToLoad(url, imageView);
        executorService.submit(new PhotosLoader(p));
    }

    private Bitmap getBitmap(String url) {
        File f = fileCache.getFile(url);

        // from SD cache
        Bitmap b = decodeFile(f);
        if (b != null)
            return b;

        // from web
        try {
            Bitmap bitmap = null;
            URL imageUrl = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) imageUrl
                    .openConnection();
            conn.setConnectTimeout(30000);
            conn.setReadTimeout(30000);
            conn.setInstanceFollowRedirects(true);
            InputStream is = conn.getInputStream();
            OutputStream os = new FileOutputStream(f);
            Utils.CopyStream(is, os);
            os.close();
            conn.disconnect();
            bitmap = decodeFile(f);
            return bitmap;
        } catch (Throwable ex) {
            ex.printStackTrace();
            if (ex instanceof OutOfMemoryError)
                memoryCache.clear();
            return null;
        }
    }

    // decodes image and scales it to reduce memory consumption
    private Bitmap decodeFile(File f) {
        try {
            // decode image size
            BitmapFactory.Options o = new BitmapFactory.Options();
            o.inJustDecodeBounds = true;
            FileInputStream stream1 = new FileInputStream(f);
            BitmapFactory.decodeStream(stream1, null, o);
            stream1.close();

            // Find the correct scale value. It should be the power of 2.
            final int REQUIRED_SIZE = 300;
            int width_tmp = o.outWidth, height_tmp = o.outHeight;
            int scale = 1;
            while (true) {
                if (width_tmp / 2 < REQUIRED_SIZE
                        || height_tmp / 2 < REQUIRED_SIZE)
                    break;
                width_tmp /= 2;
                height_tmp /= 2;
                scale *= 2;
            }

            // decode with inSampleSize
            BitmapFactory.Options o2 = new BitmapFactory.Options();
            o2.inSampleSize = scale;
            FileInputStream stream2 = new FileInputStream(f);
            Bitmap bitmap = BitmapFactory.decodeStream(stream2, null, o2);
            stream2.close();
            return bitmap;
        } catch (FileNotFoundException e) {
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    // Task for the queue
    private class PhotoToLoad {
        public String url;
        public ImageView imageView;

        public PhotoToLoad(String u, ImageView i) {
            url = u;
            imageView = i;
        }
    }

    class PhotosLoader implements Runnable {
        PhotoToLoad photoToLoad;

        PhotosLoader(PhotoToLoad photoToLoad) {
            this.photoToLoad = photoToLoad;
        }

        @Override
        public void run() {
            try {
                if (imageViewReused(photoToLoad))
                    return;
                Bitmap bmp = getBitmap(photoToLoad.url);
                memoryCache.put(photoToLoad.url, bmp);
                if (imageViewReused(photoToLoad))
                    return;
                BitmapDisplayer bd = new BitmapDisplayer(bmp, photoToLoad);
                handler.post(bd);
            } catch (Throwable th) {
                th.printStackTrace();
            }
        }
    }

    boolean imageViewReused(PhotoToLoad photoToLoad) {
        String tag = imageViews.get(photoToLoad.imageView);
        if (tag == null || !tag.equals(photoToLoad.url))
            return true;
        return false;
    }

    // Used to display bitmap in the UI thread
    class BitmapDisplayer implements Runnable {
        Bitmap bitmap;
        PhotoToLoad photoToLoad;

        public BitmapDisplayer(Bitmap b, PhotoToLoad p) {
            bitmap = b;
            photoToLoad = p;
        }

        public void run() {
            if (imageViewReused(photoToLoad))
                return;
            if (bitmap != null) {

                // for round image
                // roundBitmap=getRoundedShape(bitmap);
                photoToLoad.imageView.setImageBitmap(bitmap);
            } else
                photoToLoad.imageView.setImageResource(stub_id);
        }
    }

    public void clearCache() {
        memoryCache.clear();
        fileCache.clear();
    }

    /** ----Round Image----- **/
    public Bitmap getRoundedShape(Bitmap scaleBitmapImage) {
        int targetWidth = 400;
        int targetHeight = 400;
        Bitmap targetBitmap = Bitmap.createBitmap(targetWidth, targetHeight,
                Bitmap.Config.ARGB_8888);

        Canvas canvas = new Canvas(targetBitmap);
        Path path = new Path();
        path.addCircle(((float) targetWidth - 1) / 2,
                ((float) targetHeight - 1) / 2,
                (Math.min(((float) targetWidth), ((float) targetHeight)) / 2),
                Path.Direction.CCW);

        canvas.clipPath(path);
        Bitmap sourceBitmap = scaleBitmapImage;
        canvas.drawBitmap(sourceBitmap, new Rect(0, 0, sourceBitmap.getWidth(),
                sourceBitmap.getHeight()), new Rect(0, 0, targetWidth,
                targetHeight), null);
        return targetBitmap;
    }
    }





**FileCache.java**


    package com.example.swipableimagegallary;

    import java.io.File;
    import android.content.Context;

    public class FileCache {

    private File cacheDir;

    public FileCache(Context context){
        //Find the dir to save cached images
        if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
            cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"LazyList");
        else
            cacheDir=context.getCacheDir();
        if(!cacheDir.exists())
            cacheDir.mkdirs();
    }

    public File getFile(String url){
        //I identify images by hashcode. Not a perfect solution, good for the demo.
        String filename=String.valueOf(url.hashCode());
        //Another possible solution (thanks to grantland)
        //String filename = URLEncoder.encode(url);
        File f = new File(cacheDir, filename);
        return f;

    }

    public void clear(){
        File[] files=cacheDir.listFiles();
        if(files==null)
            return;
        for(File f:files)
            f.delete();
    }

    }



**MemoryCache.java**


    package com.example.swipableimagegallary;

    import java.util.Collections;
    import java.util.Iterator;
    import java.util.LinkedHashMap;
    import java.util.Map;
    import java.util.Map.Entry;
    import android.graphics.Bitmap;
    import android.util.Log;

    public class MemoryCache {

    private static final String TAG = "MemoryCache";
    private Map<String, Bitmap> cache=Collections.synchronizedMap(
            new LinkedHashMap<String, Bitmap>(10,1.5f,true));//Last argument true for LRU ordering
    private long size=0;//current allocated size
    private long limit=1000000;//max memory in bytes

    public MemoryCache(){
        //use 25% of available heap size
        setLimit(Runtime.getRuntime().maxMemory()/4);
    }

    public void setLimit(long new_limit){
        limit=new_limit;
        Log.i(TAG, "MemoryCache will use up to "+limit/1024./1024.+"MB");
    }

    public Bitmap get(String id){
        try{
            if(!cache.containsKey(id))
                return null;
            //NullPointerException sometimes happen here http://code.google.com/p/osmdroid/issues/detail?id=78 
            return cache.get(id);
        }catch(NullPointerException ex){
            ex.printStackTrace();
            return null;
        }
    }

    public void put(String id, Bitmap bitmap){
        try{
            if(cache.containsKey(id))
                size-=getSizeInBytes(cache.get(id));
            cache.put(id, bitmap);
            size+=getSizeInBytes(bitmap);
            checkSize();
        }catch(Throwable th){
            th.printStackTrace();
        }
    }

    private void checkSize() {
        Log.i(TAG, "cache size="+size+" length="+cache.size());
        if(size>limit){
            Iterator<Entry<String, Bitmap>> iter=cache.entrySet().iterator();//least recently accessed item will be the first one iterated  
            while(iter.hasNext()){
                Entry<String, Bitmap> entry=iter.next();
                size-=getSizeInBytes(entry.getValue());
                iter.remove();
                if(size<=limit)
                    break;
            }
            Log.i(TAG, "Clean cache. New size "+cache.size());
        }
    }

    public void clear() {
        try{
            //NullPointerException sometimes happen here http://code.google.com/p/osmdroid/issues/detail?id=78 
            cache.clear();
            size=0;
        }catch(NullPointerException ex){
            ex.printStackTrace();
        }
    }

    long getSizeInBytes(Bitmap bitmap) {
        if(bitmap==null)
            return 0;
        return bitmap.getRowBytes() * bitmap.getHeight();
    }
    }



**activity_main.xml**



    <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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.swipableimagegallary.MainActivity" >

    <Button
        android:id="@+id/button_gallary"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Button" />

</RelativeLayout>



**dialog_show_images.xml**




     <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical" >

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:background="@android:color/transparent" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
            android:background="@android:color/holo_blue_light"
                android:gravity="center_vertical"
                android:orientation="horizontal"
                android:padding="5dp" >

                <TextView
                    android:id="@+id/textview_dialog_title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                     />
            </LinearLayout>

            <ImageView
                android:id="@+id/imageview_close_imageshow"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right|center"
                android:layout_marginRight="5dp"
                android:background="@drawable/close"
                android:contentDescription="@null" />
        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center" >

            <android.support.v4.view.ViewPager
                android:id="@+id/view_pager"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:layout_marginBottom="10dp"
                android:layout_marginTop="10dp"
                android:contentDescription="@null" />

            <ImageView
                android:id="@+id/imageview_noimage"
                android:layout_width="match_parent"
                android:layout_height="400dp"
                android:layout_gravity="center"
                android:layout_margin="20dp"
                android:background="@drawable/ic_launcher"
                android:contentDescription="@null"
                android:visibility="visible" />
        </FrameLayout>
    </LinearLayout>

</LinearLayout>



**row_imageadapter.xml**



     <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/imageview_machin_image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="10dp"
            android:contentDescription="@null" />
    </LinearLayout>

    <TextView
        android:id="@+id/textview_loadingimage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

</LinearLayout>



**add following permissions in manifest**

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
package com.example.swipableimagegallary

    import java.util.ArrayList;



    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.Dialog;
    import android.app.DialogFragment;
    import android.os.Bundle;
    import android.support.v4.view.ViewPager;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ImageView;

    public class MainActivity extends Activity {

    ArrayList<String> arraylist_Url;
    Button gallary;
    GalleryDialog mGalleryDialog;

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

        arraylist_Url = new ArrayList<String>();

        arraylist_Url.add("http://www.akfreshmart.com/AKFresh_ProductImages/494_20-02-2014_Banana_Small_Size.gif");
        arraylist_Url.add("http://www.dhresource.com/200x200s/f2-albu-g3-M01-5A-A1-rBVaHFSuM9CAdXH-AAAoSL_PdrY916.jpg/8-7cm-small-size-simulation-foam-pumpkin.jpg");
        arraylist_Url.add("http://www.dhresource.com/albu_1066143295_00-1.200x200/middle-size-30cm-and-small-size-20cm-stuffed.jpg");
        arraylist_Url.add("http://i.ebayimg.com/images/g/ZpgAAOSwRLZT8EwE/s-l300.jpg");
        arraylist_Url.add("http://guideimg.alibaba.com/images/shop/2015/08/14/43/super-mario-bros.-small-size-yoshi-plush-doll_7664843.jpeg");



        gallary.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                galleryPopUp();

            }
        });


    }


    public void galleryPopUp() {
        mGalleryDialog = new GalleryDialog();
        mGalleryDialog.show(getFragmentManager(), "dialog");
        mGalleryDialog.setCancelable(false);
    }




    public class GalleryDialog extends DialogFragment {

        @SuppressWarnings("deprecation")
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {

            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

            LayoutInflater inflater = getActivity().getLayoutInflater();

            View convertview = inflater.inflate(R.layout.dialog_show_images,
                    null);
            ViewPager viewPager = (ViewPager) convertview
                    .findViewById(R.id.view_pager);
            ImageView imageview_close = (ImageView) convertview
                    .findViewById(R.id.imageview_close_imageshow);

            ImageView imageview_noimage = (ImageView) convertview
                    .findViewById(R.id.imageview_noimage);

            if (arraylist_Url.size() > 0) {
                viewPager.setVisibility(View.VISIBLE);
                imageview_noimage.setVisibility(View.GONE);
                ImageAdapter adapter = new ImageAdapter(getActivity(),
                        arraylist_Url);
                viewPager.setAdapter(adapter);
            } else {
                viewPager.setVisibility(View.GONE);
                imageview_noimage.setVisibility(View.VISIBLE);
                imageview_noimage.setBackgroundResource(R.drawable.ic_launcher);
            }

            imageview_close.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    mGalleryDialog.dismiss();
                }
            });

            builder.setView(convertview);

            return builder.create();

        }

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    }




**ImageAdapter.java**



    package com.example.swipableimagegallary;

    import java.util.ArrayList;



    import android.content.Context;
    import android.graphics.Bitmap;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.ViewGroup.LayoutParams;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView;

    public class ImageAdapter extends PagerAdapter {

    Context context;
    LayoutInflater inflater;
    ImageLoader imageLoader;
    ArrayList<String> arraylist_image_url;


    public ImageAdapter(Context context, ArrayList<String> arraylist_image_url) {
        this.context = context;
        this.arraylist_image_url = arraylist_image_url;
        inflater = LayoutInflater.from(context);

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return arraylist_image_url.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        // TODO Auto-generated method stub
        return view == ((ViewGroup) object);
    }

    public class ViewHolder {
        TextView textview_count;
        ImageView imageview;

    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {


        View view = inflater.inflate(R.layout.row_imageadapter, null);

        ViewHolder holder = new ViewHolder();

        holder.imageview = (ImageView) view
                .findViewById(R.id.imageview_machin_image);
        holder.textview_count = (TextView) view
                .findViewById(R.id.textview_loadingimage);

        imageLoader = new ImageLoader(context);

            imageLoader.DisplayImage(arraylist_image_url.get(position),
                    holder.imageview);
            holder.textview_count.setText("" + (position + 1) + "/"
                    + arraylist_image_url.size());


        container.addView(view);

        // }
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((ViewGroup) object);

    }
    }



**ImageLoader.java**


    package com.example.swipableimagegallary;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.Collections;
    import java.util.Map;
    import java.util.WeakHashMap;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;


    import android.os.Handler;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Path;
    import android.graphics.Rect;
    import android.widget.ImageView;

    public class ImageLoader {
        Bitmap roundBitmap;
        MemoryCache memoryCache = new MemoryCache();
        FileCache fileCache;
        private Map<ImageView, String> imageViews = Collections
                .synchronizedMap(new WeakHashMap<ImageView, String>());
        ExecutorService executorService;
        Handler handler = new Handler();// handler to display images in UI thread

    public ImageLoader(Context context) {
        fileCache = new FileCache(context);
        executorService = Executors.newFixedThreadPool(5);
    }

    final int stub_id = R.drawable.ic_launcher;

    public void DisplayImage(String url, ImageView imageView) {
        imageViews.put(imageView, url);
        Bitmap bitmap = memoryCache.get(url);
        if (bitmap != null) {
            // roundBitmap=getRoundedShape(bitmap);
            imageView.setImageBitmap(bitmap);
        } else {
            queuePhoto(url, imageView);
            imageView.setImageResource(stub_id);
        }
    }

    private void queuePhoto(String url, ImageView imageView) {
        PhotoToLoad p = new PhotoToLoad(url, imageView);
        executorService.submit(new PhotosLoader(p));
    }

    private Bitmap getBitmap(String url) {
        File f = fileCache.getFile(url);

        // from SD cache
        Bitmap b = decodeFile(f);
        if (b != null)
            return b;

        // from web
        try {
            Bitmap bitmap = null;
            URL imageUrl = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) imageUrl
                    .openConnection();
            conn.setConnectTimeout(30000);
            conn.setReadTimeout(30000);
            conn.setInstanceFollowRedirects(true);
            InputStream is = conn.getInputStream();
            OutputStream os = new FileOutputStream(f);
            Utils.CopyStream(is, os);
            os.close();
            conn.disconnect();
            bitmap = decodeFile(f);
            return bitmap;
        } catch (Throwable ex) {
            ex.printStackTrace();
            if (ex instanceof OutOfMemoryError)
                memoryCache.clear();
            return null;
        }
    }

    // decodes image and scales it to reduce memory consumption
    private Bitmap decodeFile(File f) {
        try {
            // decode image size
            BitmapFactory.Options o = new BitmapFactory.Options();
            o.inJustDecodeBounds = true;
            FileInputStream stream1 = new FileInputStream(f);
            BitmapFactory.decodeStream(stream1, null, o);
            stream1.close();

            // Find the correct scale value. It should be the power of 2.
            final int REQUIRED_SIZE = 300;
            int width_tmp = o.outWidth, height_tmp = o.outHeight;
            int scale = 1;
            while (true) {
                if (width_tmp / 2 < REQUIRED_SIZE
                        || height_tmp / 2 < REQUIRED_SIZE)
                    break;
                width_tmp /= 2;
                height_tmp /= 2;
                scale *= 2;
            }

            // decode with inSampleSize
            BitmapFactory.Options o2 = new BitmapFactory.Options();
            o2.inSampleSize = scale;
            FileInputStream stream2 = new FileInputStream(f);
            Bitmap bitmap = BitmapFactory.decodeStream(stream2, null, o2);
            stream2.close();
            return bitmap;
        } catch (FileNotFoundException e) {
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    // Task for the queue
    private class PhotoToLoad {
        public String url;
        public ImageView imageView;

        public PhotoToLoad(String u, ImageView i) {
            url = u;
            imageView = i;
        }
    }

    class PhotosLoader implements Runnable {
        PhotoToLoad photoToLoad;

        PhotosLoader(PhotoToLoad photoToLoad) {
            this.photoToLoad = photoToLoad;
        }

        @Override
        public void run() {
            try {
                if (imageViewReused(photoToLoad))
                    return;
                Bitmap bmp = getBitmap(photoToLoad.url);
                memoryCache.put(photoToLoad.url, bmp);
                if (imageViewReused(photoToLoad))
                    return;
                BitmapDisplayer bd = new BitmapDisplayer(bmp, photoToLoad);
                handler.post(bd);
            } catch (Throwable th) {
                th.printStackTrace();
            }
        }
    }

    boolean imageViewReused(PhotoToLoad photoToLoad) {
        String tag = imageViews.get(photoToLoad.imageView);
        if (tag == null || !tag.equals(photoToLoad.url))
            return true;
        return false;
    }

    // Used to display bitmap in the UI thread
    class BitmapDisplayer implements Runnable {
        Bitmap bitmap;
        PhotoToLoad photoToLoad;

        public BitmapDisplayer(Bitmap b, PhotoToLoad p) {
            bitmap = b;
            photoToLoad = p;
        }

        public void run() {
            if (imageViewReused(photoToLoad))
                return;
            if (bitmap != null) {

                // for round image
                // roundBitmap=getRoundedShape(bitmap);
                photoToLoad.imageView.setImageBitmap(bitmap);
            } else
                photoToLoad.imageView.setImageResource(stub_id);
        }
    }

    public void clearCache() {
        memoryCache.clear();
        fileCache.clear();
    }

    /** ----Round Image----- **/
    public Bitmap getRoundedShape(Bitmap scaleBitmapImage) {
        int targetWidth = 400;
        int targetHeight = 400;
        Bitmap targetBitmap = Bitmap.createBitmap(targetWidth, targetHeight,
                Bitmap.Config.ARGB_8888);

        Canvas canvas = new Canvas(targetBitmap);
        Path path = new Path();
        path.addCircle(((float) targetWidth - 1) / 2,
                ((float) targetHeight - 1) / 2,
                (Math.min(((float) targetWidth), ((float) targetHeight)) / 2),
                Path.Direction.CCW);

        canvas.clipPath(path);
        Bitmap sourceBitmap = scaleBitmapImage;
        canvas.drawBitmap(sourceBitmap, new Rect(0, 0, sourceBitmap.getWidth(),
                sourceBitmap.getHeight()), new Rect(0, 0, targetWidth,
                targetHeight), null);
        return targetBitmap;
    }
    }





**FileCache.java**


    package com.example.swipableimagegallary;

    import java.io.File;
    import android.content.Context;

    public class FileCache {

    private File cacheDir;

    public FileCache(Context context){
        //Find the dir to save cached images
        if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
            cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"LazyList");
        else
            cacheDir=context.getCacheDir();
        if(!cacheDir.exists())
            cacheDir.mkdirs();
    }

    public File getFile(String url){
        //I identify images by hashcode. Not a perfect solution, good for the demo.
        String filename=String.valueOf(url.hashCode());
        //Another possible solution (thanks to grantland)
        //String filename = URLEncoder.encode(url);
        File f = new File(cacheDir, filename);
        return f;

    }

    public void clear(){
        File[] files=cacheDir.listFiles();
        if(files==null)
            return;
        for(File f:files)
            f.delete();
    }

    }



**MemoryCache.java**


    package com.example.swipableimagegallary;

    import java.util.Collections;
    import java.util.Iterator;
    import java.util.LinkedHashMap;
    import java.util.Map;
    import java.util.Map.Entry;
    import android.graphics.Bitmap;
    import android.util.Log;

    public class MemoryCache {

    private static final String TAG = "MemoryCache";
    private Map<String, Bitmap> cache=Collections.synchronizedMap(
            new LinkedHashMap<String, Bitmap>(10,1.5f,true));//Last argument true for LRU ordering
    private long size=0;//current allocated size
    private long limit=1000000;//max memory in bytes

    public MemoryCache(){
        //use 25% of available heap size
        setLimit(Runtime.getRuntime().maxMemory()/4);
    }

    public void setLimit(long new_limit){
        limit=new_limit;
        Log.i(TAG, "MemoryCache will use up to "+limit/1024./1024.+"MB");
    }

    public Bitmap get(String id){
        try{
            if(!cache.containsKey(id))
                return null;
            //NullPointerException sometimes happen here http://code.google.com/p/osmdroid/issues/detail?id=78 
            return cache.get(id);
        }catch(NullPointerException ex){
            ex.printStackTrace();
            return null;
        }
    }

    public void put(String id, Bitmap bitmap){
        try{
            if(cache.containsKey(id))
                size-=getSizeInBytes(cache.get(id));
            cache.put(id, bitmap);
            size+=getSizeInBytes(bitmap);
            checkSize();
        }catch(Throwable th){
            th.printStackTrace();
        }
    }

    private void checkSize() {
        Log.i(TAG, "cache size="+size+" length="+cache.size());
        if(size>limit){
            Iterator<Entry<String, Bitmap>> iter=cache.entrySet().iterator();//least recently accessed item will be the first one iterated  
            while(iter.hasNext()){
                Entry<String, Bitmap> entry=iter.next();
                size-=getSizeInBytes(entry.getValue());
                iter.remove();
                if(size<=limit)
                    break;
            }
            Log.i(TAG, "Clean cache. New size "+cache.size());
        }
    }

    public void clear() {
        try{
            //NullPointerException sometimes happen here http://code.google.com/p/osmdroid/issues/detail?id=78 
            cache.clear();
            size=0;
        }catch(NullPointerException ex){
            ex.printStackTrace();
        }
    }

    long getSizeInBytes(Bitmap bitmap) {
        if(bitmap==null)
            return 0;
        return bitmap.getRowBytes() * bitmap.getHeight();
    }
    }



**activity_main.xml**



    <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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.swipableimagegallary.MainActivity" >

    <Button
        android:id="@+id/button_gallary"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Button" />

</RelativeLayout>



**dialog_show_images.xml**




     <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical" >

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:background="@android:color/transparent" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
            android:background="@android:color/holo_blue_light"
                android:gravity="center_vertical"
                android:orientation="horizontal"
                android:padding="5dp" >

                <TextView
                    android:id="@+id/textview_dialog_title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                     />
            </LinearLayout>

            <ImageView
                android:id="@+id/imageview_close_imageshow"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right|center"
                android:layout_marginRight="5dp"
                android:background="@drawable/close"
                android:contentDescription="@null" />
        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center" >

            <android.support.v4.view.ViewPager
                android:id="@+id/view_pager"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:layout_marginBottom="10dp"
                android:layout_marginTop="10dp"
                android:contentDescription="@null" />

            <ImageView
                android:id="@+id/imageview_noimage"
                android:layout_width="match_parent"
                android:layout_height="400dp"
                android:layout_gravity="center"
                android:layout_margin="20dp"
                android:background="@drawable/ic_launcher"
                android:contentDescription="@null"
                android:visibility="visible" />
        </FrameLayout>
    </LinearLayout>

</LinearLayout>



**row_imageadapter.xml**



     <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/imageview_machin_image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="10dp"
            android:contentDescription="@null" />
    </LinearLayout>

    <TextView
        android:id="@+id/textview_loadingimage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

</LinearLayout>



**add following permissions in manifest**

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />