이미지를 버튼 클릭스 한장식 나오게 하고있습니다. 이것을 슬라이드 형식으로 바꾸고싶습니다.




소스코드

/ **************GalleryDetailActivity .java*******************/
package com.ireal.sc;

import java.util.ArrayList;

import com.ireal.SC;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class GalleryDetailActivity extends Activity implements OnClickListener{
 private Context mContext = null;
 
 private final int imgWidth = 320;
 private final int imgHeight = 372;
 Button button_left;
 Button button_right;
 ArrayList<String> imgPaths;
 String imgPath;
 @Override
 protected void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.gallery_detail);
  mContext = this;
  button_left = (Button)findViewById(R.id.gallery_left);
  button_right = (Button)findViewById(R.id.gallery_right);
  button_left.setOnClickListener(this);
  button_right.setOnClickListener(this);
  /** 전송메시지 */
  Intent i = getIntent();
  Bundle extras = i.getExtras();
  imgPath = extras.getString("filename");
  imgPaths = extras.getStringArrayList("gallery");
  /** 완성된 이미지 보여주기  */
  setImg(imgPath);
  /** 리스트로 가기 버튼 */
  
  for(int ia =0; ia<imgPaths.size();ia++)
  {
   Log.i("imgPath ", ""+(ia+1)+imgPaths.get(ia));
  }
 }
 private void setImg(String imgPath)
 {
  BitmapFactory.Options bfo = new BitmapFactory.Options();
  ImageView iv = (ImageView)findViewById(R.id.imageView);
  Bitmap bm = BitmapFactory.decodeFile(SC.DIR_PATH+"/"+imgPath);
  iv.setImageBitmap(bm);
 }
 @Override
 public void onClick(View v)
 {
  // TODO Auto-generated method stub
  int currentPosition=0;
  for(int i =0;i<imgPaths.size();i++)
  {
   if(imgPath.equals(imgPaths.get(i)))
   {
    currentPosition=i;
    break;
   }//그니깐 사진 10개있으면 잠만예예가있을건데
  }
  if(v.getId()==R.id.gallery_left)
  {
   if(currentPosition==0)
   {
    currentPosition=imgPaths.size()-1;
   }
   else
   {
    currentPosition--;
   }
  }
  else if(v.getId()==R.id.gallery_right)
  {
   if(currentPosition==imgPaths.size()-1)
   {
    currentPosition=0;
   }
   else
   {
    currentPosition++;
   }
  }
  String newImgPath = imgPaths.get(currentPosition);
  imgPath = newImgPath;
  setImg(newImgPath);
 }
}


/*************Gallery2Activity.java***********************/
package com.ireal.sc;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;

import org.apache.http.util.ByteArrayBuffer;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

import com.ireal.SC;
import com.ireal.log.Logger;
import com.ireal.xml.Node;
import com.ireal.xml.kXML2Parser;

public class Gallery2Activity extends Activity {
 private ProgressDialog progressDialog;
    final private int PROGRESS_DIALOG = 0;
   
    private boolean flag = false;
   
    private Context mContext;
   
    private ArrayList<Gallery> mList ;
    private Handler handler = new Handler();
    private GridView gridview;
    private GalleryAdapter ga ;
    private final int PIXEL = 100;
    @Override
 public void onCreate(Bundle savedInstanceState){
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  super.onCreate(savedInstanceState);       
        setContentView(R.layout.gallery);
        mContext = this;
       
      
        Thread thread = new Thread(null, init);
  thread.start();
  showDialog(PROGRESS_DIALOG);
  
  
  if(flag == true){
   
  }
 
 }
   
    private Runnable init = new Runnable() {
  int mResponseCode; 
  @Override
  public void run() {
   getGalleryList();
  }
  
 };
 
 private void getGalleryList(){
  FileInputStream in = null;
  URL url;
  URLConnection urlConn = null;
  InputStream is = null;
  String strXML = new String();
  StringBuffer sb = new StringBuffer();
  int mResponseCode;
  mList = new ArrayList<Gallery>();
  ConnectivityManager manager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

  // 3G 를 사용하는지 확인힌다.
  boolean is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();

  // WIFI 를 사용하는지 확인한다.
  boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
  
  // 3G 와 WIFI 중 어떤 네트워크를 사용하지는 화면에 보여준다.      
  if(is3g || isWifi){
   wifi3g.sendEmptyMessage(0);
    try{
          url = new URL("http://"+SC.SERVER_ADDRESS+"/gallery.action?pages=get.gallery.list");
          urlConn = url.openConnection();
          
          HttpURLConnection huc = (HttpURLConnection)urlConn;
          huc.setReadTimeout(1500);
    mResponseCode = huc.getResponseCode();
    if(mResponseCode != HttpURLConnection.HTTP_OK){
     disconnectedHandler.sendEmptyMessage(0);
    }
          is = urlConn.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    
    if(br != null){
     sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
     while((strXML = br.readLine())!= null){
      sb.append(strXML);
     }   
    }
    
    if(sb.length() > 0){
     Node node = new kXML2Parser().parse(sb.toString());
     Gallery gallery;     
     for(int i = 0 ; i<node.getNNodes();i++){
      Node n = node.getNode(i);
      if(n.getName().equals("gallery")){
       gallery = new Gallery();
       for(int j = 0 ; j<n.getNNodes();j++){
        Node nn = n.getNode(j);
        if (nn.getName().equals("title")) {
         gallery.setTitle(nn.getValue());
        }else if (nn.getName().equals("url")) {
         gallery.setUrl(nn.getValue());         
         File file = new File(SC.DIR_PATH+"/"+gallery.getUrl());
         
         if(!file.exists()){
          URL urls = new URL("http://"+SC.SERVER_ADDRESS+"/files/gallery/"+gallery.getUrl());
          
          
          URLConnection ucon = urls.openConnection();
          BufferedInputStream bis = new BufferedInputStream(ucon.getInputStream());
          ByteArrayBuffer baf = new ByteArrayBuffer(50);
          int current = 0;
          while ((current = bis.read()) != -1) {
           baf.append((byte) current);
          }
          FileOutputStream fos = new FileOutputStream(file);
          fos.write(baf.toByteArray());
          fos.close();
          bis.close();
         }else{
          Logger.debug(gallery.getUrl() + " is exists");
         }
        }
       }
       mList.add(gallery);
      }
     }
     flag=true;
    }
    if(flag == true){
     Logger.debug("true");
     handler.post(updateResults);    
    }
    
    
         }catch(Exception e){
          Logger.error(e);
          finish();
          
   } finally{
    Logger.debug("Thread finally");
    
    if(is != null) try {is.close();} catch (Exception e) {}
   }
  }else{
   no_wifi3g.sendEmptyMessage(0);
   handler.post(updateResults);
   
//   Toast.makeText(Gallery2Activity.this, "3g wifi 사용안함", Toast.LENGTH_SHORT).show();
   File file= new File(SC.DIR_PATH);
   File[] listFile = file.listFiles();
   for(File tempList:listFile){
    if(tempList.getName().startsWith("gallery") && tempList.getName().endsWith(".jpg")){
     Gallery gallery = new Gallery();
     gallery.setUrl(tempList.getName());
     mList.add(gallery);
    }
   }
   
  }
 }

 private Runnable updateResults = new Runnable() {
  public void run () {
   Logger.debug("checking updateResults");
   progressDialog.dismiss();
//   GalleryActivity.this.removeDialog(PROGRESS_DIALOG); 
//   gridview.setAdapter(new GalleryAdapter(GalleryActivity.this, R.layout.gallery_img, mList));
//   gridview.setAdapter(new GalleryAdapter(mContext));
   gridview = (GridView) findViewById(R.id.grid);   
   ga = new GalleryAdapter(mContext);
         gridview.setAdapter(ga);
         gridview.setOnItemClickListener(new OnItemClickListener(){
          public void onItemClick(AdapterView<?> parent, View v, int position, long id){
           ga.callImageViewer(position);
          }
         });
         registerForContextMenu(gridview);
        
  }
 };
  
 private Handler disconnectedHandler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
   Logger.debug("disconnectionHandler : "+msg.toString());
   Toast.makeText(Gallery2Activity.this, "네트워크를 확인 하세요.",  Toast.LENGTH_LONG).show();
  }
 };
 
 private Handler no_wifi3g = new Handler(){
  @Override
  public void handleMessage(Message msg) {
   Logger.debug("no_wifi3g : "+msg.toString());
  }
 };
 
 private Handler wifi3g = new Handler(){
  @Override
  public void handleMessage(Message msg) {
   Logger.debug("wifi3g : "+msg.toString());
  }
 };
 
 private class GalleryAdapter extends BaseAdapter{
  GalleryAdapter(Context c){
   Logger.debug("GalleryAdapter()");
   mContext = c;
  }
 ////////// 이미지 클릭 시 전체 화면으로 이동 ////////////////////////////////////////
  public final void callImageViewer(int selectedIndex)    /////
  {                 /////
   Intent i = new Intent(mContext, GalleryDetailActivity.class); /////
   String imgPath = mList.get(selectedIndex).getUrl();    /////
   i.putExtra("filename", imgPath);        /////
   ArrayList<String> imgPaths = new ArrayList<String>();   /////
   for(int a = 0;a<mList.size();a++)        /////
   {                /////
    imgPaths.add(mList.get(a).getUrl());      /////
   }                /////
   i.putStringArrayListExtra("gallery", imgPaths);     /////
   startActivityForResult(i, 1);         /////
  }                 /////
 /////////////////////////////////////////////////////////////////////////////
  public boolean deleteSelected(int index){
   return true;
  }
  
  public int getCount(){
   return mList.size();
  }
  
  public Object getItem(int position){
   return position;
  }
  
  public long getItemId(int position){
   return position;
  }
  
  public View getView(int position, View convertView, ViewGroup parent){
   Logger.debug("GalleryAdapter getView()");
   ImageView imageView = (ImageView) convertView; ;
   if(convertView == null){
    imageView = new ImageView(mContext);
    imageView.setAdjustViewBounds(true);
    imageView.setMaxWidth(PIXEL);
    imageView.setMaxHeight(PIXEL);
    imageView.setLayoutParams(new GridView.LayoutParams(PIXEL,PIXEL));
   }
   BitmapFactory.Options bo = new BitmapFactory.Options();
   bo.inSampleSize = 8;
//   Bitmap bmp = BitmapFactory.decodeFile(thumbsDataList.get(position), bo);
   Bitmap bmp = BitmapFactory.decodeFile(SC.DIR_PATH+"/"+mList.get(position).getUrl(),bo);
   Bitmap resized = Bitmap.createScaledBitmap(bmp, PIXEL, PIXEL, true);
   imageView.setImageBitmap(resized);
//   imageView.setImageBitmap(bmp);
   return imageView;
  
  }
 }
 // Menu Button Function
 @Override
 public void onConfigurationChanged(Configuration newConfig){
  super.onConfigurationChanged(newConfig);
 }
 @Override
    public boolean onCreateOptionsMenu(Menu menu){
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.gallery_menu, menu);
     return true;
    }
 @Override
 public boolean onOptionsItemSelected(MenuItem item){
  switch(item.getItemId()){
  case R.id.gallery_update:  // gallery list update
   getGalleryList();
   return true;
  default :
   return super.onOptionsItemSelected(item);
  }
 }
 private class Gallery{
     private String no;
  private String title;
  private String url;
  
  public String getNo(){
   return no;
  }
  public void setNo(String no){
   this.no = no;
  }
  public String getTitle(){
   return title;
  }
  public void setTitle(String title){
   this.title = title;
  }
  public String getUrl(){
   return url;
  }
  public void setUrl(String url){
   this.url = url;
  }
    }
 
 //다이얼로그
    protected Dialog onCreateDialog(int id) {
     progressDialog = new ProgressDialog(this);
  progressDialog.setMessage("캠퍼스 포토 Loading......  ");
  progressDialog.setIndeterminate(true);
  progressDialog.setCancelable(true);
  progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
  return progressDialog;
  }
    
     @Override
  protected void onPrepareDialog(int id, Dialog dialog) {
   // TODO Auto-generated method stub
   switch (id) {
   case (PROGRESS_DIALOG):
    AlertDialog mItemDialog = (AlertDialog) dialog;
    mItemDialog.setTitle("Loading......");
   break;
   }
  }
}