Как просмотреть следующее изображение в режиме просмотра изображений? - PullRequest
2 голосов
/ 20 марта 2012

Привет, у меня есть изображения в виде сетки. когда я нажимаю на мои изображения в виде сетки, они отображаются на весь экран. если я хочу просмотреть другое изображение, вернитесь в режиме сетки, затем выберите другое изображение в полноэкранном режиме. Я чувствую, что это трудно ... поэтому я пытаюсь просматривать изображения в полноэкранном режиме с помощью пролистывания .... не знаю, как создать этот метод, пожалуйста, наставьте меня и дайте несколько хороших кодов также ...

Снимок экрана моего рабочего приложения:

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;
            }
      }
}
  1. 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);
           }
         }
    

Ответы [ 4 ]

3 голосов
/ 20 марта 2012

После получения идентификатора выбранного изображения, реализуйте это ..

// этот класс для сетки просмотра изображений

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
            };

}

// Это изображение Flip image

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;
             }
         }
2 голосов
/ 20 марта 2012

Реализация OnGestureListener в действии ViewImage и захват смахивания от пользователя.

Для отображения предыдущего или следующего изображения используйте курсор.

1 голос
/ 20 марта 2012

Сохраняйте все имена файлов изображений в массиве, когда вы заполняете Gridview, а затем передаете этот массив другому представлению из этого массива, вы можете получить все изображения вместо того, чтобы вернуться к gridview для выбора изображений.

0 голосов
/ 20 марта 2012

Самый простой способ сделать это, как сказал RajaReddy P: создать массив с именами файлов / URL-адресов, передать его в действие ViewImage ...

Для активности ViewImage я бы действительно использовал ViewPager! Реально прост в реализации, а смахивание выполняется для вас!

Подробнее о viewpager: http://android -developers.blogspot.com / 2011/08 / горизонтальный ракурс-ударяя-с-viewpager.html

...