2012-03-20 70 views
2

嗨我有网格视图中的图像。当我点击我的网格视图图像时,它将全屏显示。如果我想要查看其他图像,请在网格视图中返回,然后在全屏中选择其他图像视图。我觉得这是很难的..所以我试图用刷卡....不知道如何创建此方法请指导我,给了一些不错的代码还可以查看图像全屏视图...如何查看imageview中的下一张图片?

这是我的工作的应用程序的屏幕截图:

enter image description here

enter image description here

源代码:1. ImageViewExample.java

public class ImageViewExample extends Activity { 
     /** Called when the activity is first created. */ 
     private Cursor imagecursor, actualimagecursor; 
     private int image_column_index, actual_image_column_index; 
     GridView imagegrid; 
     private int count; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      init_phone_image_grid(); 
     } 
     private void init_phone_image_grid() { 
      String[] img = { MediaStore.Images.Thumbnails._ID }; 
      imagecursor = managedQuery(
MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, img, null, 
null, MediaStore.Images.Thumbnails.IMAGE_ID + ""); 
      image_column_index = imagecursor 
.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID); 
      count = imagecursor.getCount(); 
      imagegrid = (GridView) findViewById(R.id.PhoneImageGrid); 
      imagegrid.setAdapter(new ImageAdapter(getApplicationContext())); 
      imagegrid.setOnItemClickListener(new OnItemClickListener() { 
public void onItemClick(AdapterView parent, View v,int position, long id) { 

      System.gc(); 
      String[] proj = { MediaStore.Images.Media.DATA }; 
      actualimagecursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj, 
null, null, null); 
         actual_image_column_index = actualimagecursor 
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
         actualimagecursor.moveToPosition(position); 
         String i = actualimagecursor.getString(actual_image_column_index); 
         System.gc(); 
         Intent intent = new Intent(getApplicationContext(), ViewImage.class); 
         intent.putExtra("filename", i); 
         startActivity(intent); 
        } 
      }); 
     } 


     public class ImageAdapter extends BaseAdapter { 
      private    Context mContext; 
      public ImageAdapter(Context c) { 
        mContext = c; 
      } 
      public int getCount() { 
        return count; 
      } 
      public Object getItem(int position) { 
        return position; 
      } 
      public long getItemId(int position) { 
        return position; 
      } 
      public View getView(int position,View convertView,ViewGroup parent) { 
        System.gc(); 
        ImageView i = new ImageView(mContext.getApplicationContext()); 
        if (convertView == null) { 
         imagecursor.moveToPosition(position); 
         int id = imagecursor.getInt(image_column_index); 
         i.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""+ id)); 
         i.setScaleType(ImageView.ScaleType.CENTER_CROP); 
         i.setLayoutParams(new GridView.LayoutParams(92, 92)); 
        } 
        else { 
         i = (ImageView) convertView; 
        } 
        return i; 
      } 
     } 
} 
  • ViewImage.java

    public class ViewImage extends Activity { 
    private String filename; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        System.gc(); 
        Intent i = getIntent(); 
        Bundle extras = i.getExtras(); 
        BitmapFactory.Options bfo = new BitmapFactory.Options(); 
        bfo.inSampleSize = 2; 
        filename = extras.getString("filename"); 
        ImageView iv = new ImageView(getApplicationContext()); 
        Bitmap bm = BitmapFactory.decodeFile(filename, bfo); 
        iv.setImageBitmap(bm); 
        setContentView(iv); 
         } 
        } 
    
  • 回答

    3

    获得选择的图像的ID之后,实现这个..

    //此类为网格视图图像

    package com.thumbnailview; 
    
    import android.app.Activity; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.AdapterView; 
    import android.widget.AdapterView.OnItemClickListener; 
    import android.widget.BaseAdapter; 
    import android.widget.GridView; 
    import android.widget.ImageView; 
    import android.widget.Toast; 
    
    public class Activity_ThumbView extends Activity 
    { 
    
        GridView gridview; 
    
    
        public void onCreate(Bundle savedInstanceState) 
        { 
         super.onCreate(savedInstanceState); 
         setContentView(R.layout.main); 
    
         gridview = (GridView) findViewById(R.id.gridview); 
         gridview.setAdapter(new ImageAdapter(this)); 
    
         gridview.setOnItemClickListener(new OnItemClickListener() 
         { 
          public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
          { 
    
           Toast.makeText(Activity_ThumbView.this, "" + position, 2).show(); 
           id=parent.getPositionForView(v); 
    
           Intent i=new Intent(Activity_ThumbView.this,Activity_ImageView.class); 
           i.putExtra("position", position); 
           startActivity(i); 
           finish(); 
          } 
         }); 
        } 
    
        public class ImageAdapter extends BaseAdapter 
        { 
    
         Context context; 
    
    
    
         public ImageAdapter(Context c) 
         { 
          context = c ; 
         } 
         public int getCount() { 
    
    
          return mThumbIds.length; 
         } 
    
    
         public Object getItem(int position) { 
    
          return null; 
         } 
    
    
         public long getItemId(int position) { 
    
          return mThumbIds[position]; 
         } 
    
    
         public View getView(int position, View convertView, ViewGroup parent) { 
          ImageView imageView; 
          if (convertView == null) 
          { 
           imageView = new ImageView(context); 
           imageView.setLayoutParams(new GridView.LayoutParams(75, 75)); 
           imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
           imageView.setPadding(8, 8, 8, 8); 
          } 
          else 
          { 
           imageView = (ImageView) convertView; 
          } 
    
          imageView.setImageResource(mThumbIds[position]); 
          return imageView; 
         } 
    
        } 
    
          public static Integer[] mThumbIds = { 
            R.drawable.a,R.drawable.icon, 
            R.drawable.b, R.drawable.s, 
            R.drawable.c, R.drawable.r, 
            R.drawable.d, R.drawable.q, 
            R.drawable.e, R.drawable.p, 
            R.drawable.f, R.drawable.o, 
            R.drawable.g, R.drawable.n, 
            R.drawable.h, R.drawable.m, 
            R.drawable.i, R.drawable.l, 
            R.drawable.j, R.drawable.k, 
            R.drawable.t,R.drawable.y, 
            R.drawable.u,R.drawable.x, 
            R.drawable.v,R.drawable.s, 
            R.drawable.cd,R.drawable.z, 
            R.drawable.bc,R.drawable.ab 
          }; 
    
    } 
    

    //这翻转图像类

    package com.thumbnailview; 
    
    import java.io.IOException; 
    
    
    
    import android.app.Activity; 
    import android.app.WallpaperManager; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.GestureDetector; 
    import android.view.GestureDetector.OnGestureListener; 
    import android.view.GestureDetector.SimpleOnGestureListener; 
    import android.view.animation.Animation; 
    import android.view.animation.AnimationUtils; 
    import android.view.MotionEvent; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.ImageView; 
    import android.widget.TextView; 
    import android.widget.ViewFlipper; 
    
    public class Activity_ImageView extends Activity 
    { 
        ImageView thumb_imgview; 
        ViewFlipper viewFlipper; 
        Button b_wall; 
        Button b_home; 
    
        // Animation a,b; 
        private static final int SWIPE_MIN_DISTANCE = 120; 
        private static final int SWIPE_MAX_OFF_PATH = 250; 
        private static final int SWIPE_THRESHOLD_VELOCITY = 200; 
        private GestureDetector gestureDetector; 
        View.OnTouchListener gestureListener; 
        int j; 
    
        WallpaperManager myWall; 
        public void onCreate(Bundle savedInstanceState) 
        { 
         super.onCreate(savedInstanceState); 
         setContentView(R.layout.image); 
    
         j=getIntent().getExtras().getInt("position"); 
         myWall = WallpaperManager.getInstance(getApplicationContext()); 
    
         b_wall=(Button) findViewById(R.id.button3); 
         b_home=(Button) findViewById(R.id.button1); 
    
         thumb_imgview=(ImageView) findViewById(R.id.thumb_txt_image); 
         thumb_imgview.setImageResource(Activity_ThumbView.mThumbIds[j]); 
    
         gestureDetector = new GestureDetector(new MyGestureDetector()); 
    
         b_wall.setOnClickListener(new View.OnClickListener() { 
    
          public void onClick(View v) { 
    
    
    
           try { 
    
            myWall.setResource(Activity_ThumbView.mThumbIds[j]); 
    
           } catch (IOException e) { 
    
           e.printStackTrace(); 
          } 
    
    
          } 
         }); 
         b_home.setOnClickListener(new View.OnClickListener() { 
    
    
          public void onClick(View v) { 
           Intent i=new Intent(Activity_ImageView.this,Activity_ThumbView.class); 
           startActivity(i); 
           finish(); 
    
          } 
         }); 
    
    
        } 
    
        public class MyGestureDetector extends SimpleOnGestureListener implements OnGestureListener 
        { 
          public boolean onFling(MotionEvent m1, MotionEvent m2, float velocityX, float velocityY) 
          { 
          try 
          { 
           if (Math.abs(m1.getY() - m2.getY()) > SWIPE_MAX_OFF_PATH) 
            return false; 
    
           if(m1.getX() - m2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) 
           { 
    
            if(Activity_ThumbView.mThumbIds.length>j) 
            { 
             j++; 
    
    
    
             thumb_imgview.setImageResource(Activity_ThumbView.mThumbIds[j]); 
    
            } 
    
    
           } 
    
           else if (m2.getX() - m1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) 
           { 
    
            if(j>0) 
            { 
             j--; 
    
             thumb_imgview.setImageResource(Activity_ThumbView.mThumbIds[j]); 
    
            } 
    
    
           } 
          } 
          catch (Exception e) 
          { 
    
          } 
          return false; 
         } 
        } 
    
          public boolean onTouchEvent(MotionEvent event) 
          { 
           if (gestureDetector.onTouchEvent(event)) 
            return true; 
           else 
            return false; 
          } 
         } 
    
    +0

    如何将此代码用于我的代码?请告诉我,我很困惑...... – balaji 2012-03-20 10:09:11

    +0

    我想现在你可以做对了吗? – Hasmukh 2012-03-20 10:17:14

    +0

    如果我点击b_wall按钮力关闭应用程序的logcat:表示错误我有什么权限在此应用程序可以给.... – balaji 2012-03-20 10:50:03

    1

    存放在阵列中的所有图像文件名,当你进入填充GridView的,然后传递数组从数组另一种观点认为,你可以得到的所有图像,而不是回去的GridView用于选择图像..

    2

    实施OnGestureListener在ViewImage活动和从用户捕获刷卡。

    用于显示前一个或下一个画面,用光标。

    相关问题