Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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 如何在imageview中查看下一幅图像?_Android_Gridview_Imageview - Fatal编程技术网

Android 如何在imageview中查看下一幅图像?

Android 如何在imageview中查看下一幅图像?,android,gridview,imageview,Android,Gridview,Imageview,嗨,我有网格视图中的图像。当我点击我的网格视图图像时,它会全屏显示。如果我想查看另一个图像,请返回网格视图,然后选择另一个全屏图像视图。我觉得这很难。。所以我试图查看图像全屏查看使用刷卡…不知道如何创建这个方法,请指导我,并给出一些不错的代码也 这是我的工作应用程序屏幕截图: 源代码:1。ImageViewExample.java public class ImageViewExample extends Activity { /** Called when the activi

嗨,我有网格视图中的图像。当我点击我的网格视图图像时,它会全屏显示。如果我想查看另一个图像,请返回网格视图,然后选择另一个全屏图像视图。我觉得这很难。。所以我试图查看图像全屏查看使用刷卡…不知道如何创建这个方法,请指导我,并给出一些不错的代码也

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

源代码: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);
           }
         }
    

  • 填充到Gridview时,将所有图像文件名存储在数组中,然后将该数组传递到该数组中的另一个视图。您可以获取所有图像,而不是返回Gridview选择图像。

    在ViewImage活动中实现OnGetureListener,并捕获用户的滑动


    要显示上一个或下一个图像,请使用光标。

    最简单的方法就是像RajaReddy p说的那样:创建一个带有文件名/URL的数组,并将其传递给ViewImage活动

    对于ViewImage活动,我真的会使用ViewPager!真的很容易实施和刷卡是为你处理

    有关viewpager的详细信息:

    获取所选图像的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
                };
    
    }
    

    如果我单击b_wall按钮强制关闭应用程序logcat:指出我在此应用程序中必须授予的权限错误…Sry忘记了这一点,请在mainfiest中授予权限。谢谢@Hasmukh它工作得很好太棒了…现在我清楚这个概念了。。。。。。
    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;
                 }
             }