How do i Swipe selected grid image in Full Screen

后端 未结 2 604
天涯浪人
天涯浪人 2021-01-24 02:05

i created a grid-view image app, and i want to show selected image in image swipe.

actually i implemented image swipe in my app but the problem is image

相关标签:
2条回答
  • 2021-01-24 02:16

    You need to retrieve your position in your Swipe activity like,

    Intent n = getIntent();
    int position= n.getIntExtra("id");
    

    Now in your adapter

    ImagePagerAdapter adapter = new ImagePagerAdapter(Swipeactivity Here , icons[position]);
    viewPager.setAdapter(adapter);
    viewPager.setCurrentItem(position);
    

    UPDATE:

    You need to change your adapter class. Like,

        private class ImagePagerAdapter extends PagerAdapter 
        {
          int[] icons;    
          Context c;
    
        public ImagePagerAdapter(Context ctx , int[] icons){
    
          this.c = ctx;
          this.icons = icons;
    
        }
    
        @Override
        public int getCount() 
        {
          return icons.length;
        }
    
        @Override
        public boolean isViewFromObject(View view, Object object) 
        {
          return view == ((ImageView) object);
        }
    
        @Override
        public Object instantiateItem(ViewGroup container, int position) 
        {
    
          ImageView imageView = new ImageView(c);
    //      int padding = context.getResources().getDimensionPixelSize(
    //          R.dimen.padding_large);
    //      imageView.setPadding(padding, padding, padding, padding);
          imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
          imageView.setImageResource(icons[position]);
          ((ViewPager) container).addView(imageView, 0);
          return imageView;
        }
    
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) 
        {
          ((ViewPager) container).removeView((ImageView) object);
        }
       }
       }
    

    NOTE: If you get error on Swipeactivity then import it.

    0 讨论(0)
  • 2021-01-24 02:17

    after too much bullshit / errors i finally got the answer and it's very simply...;)

    // get intent data
        Intent i = getIntent();
    
        // Selected image id
        int position = i.getExtras().getInt("id");
    
    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
        ImagePagerAdapter adapter = new ImagePagerAdapter();
        viewPager.setAdapter(adapter);
        viewPager.setCurrentItem(position);
    

    this is the simple answer instead of this code:

    ImagePagerAdapter adapter = new ImagePagerAdapter(mContext , icons[position]);
    

    this worked.

    viewPager.setCurrentItem(position);
    

    now below is my hole app code:

    MainActivity.java

    package com.td.gridview;
    
    import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.ViewGroup.LayoutParams;
    import android.view.ViewTreeObserver;
    import android.widget.AdapterView;
    import android.widget.BaseAdapter;
    import android.widget.GridView;
    import android.widget.ImageView;
    import android.widget.RelativeLayout;
    import android.widget.TextView;
    import android.widget.AdapterView.OnItemClickListener;
    
    public class MainActivity extends Activity {
    
    
        private GridView photoGrid;
        private int mPhotoSize, mPhotoSpacing;
        private ImageAdapter imageAdapter;
    
        // Some items to add to the GRID
        private static final String[] CONTENT = new String[] 
                { 
                "Akon", "Justin Bieber", "AlRight", "Big Sean",
                "Britney Spears", "Hilary", "Micheal Buble", "Akon", "Justin Bieber", "AlRight", "Big Sean",
                "Britney Spears", "Hilary", "Micheal Buble", "Britney Spears", "Hilary", "Micheal Buble", "Akon",
                "Justin Bieber", "AlRight", "Big Sean", "Britney Spears", "Hilary", "Micheal Buble", "Akon",
                "Justin Bieber", "AlRight", "Big Sean", "Britney Spears", "Hilary", "Micheal Buble", "Akon",
                "Justin Bieber", "AlRight", "Big Sean", "Britney Spears", "Hilary", "Micheal Buble", "Britney Spears",
                "Hilary", "Micheal Buble", "Akon", "Justin Bieber", "AlRight", "Big Sean", "Britney Spears", "Hilary",
                "Micheal Buble" 
                };
        static final int[] ICONS = new int[] 
                { 
                R.drawable.cover_akon, R.drawable.cover_justin,
                R.drawable.cover_alright, R.drawable.cover_big_sean, R.drawable.cover_britney, R.drawable.cover_hilary,
                R.drawable.cover_mb, R.drawable.cover_akon, R.drawable.cover_justin, R.drawable.cover_alright,
                R.drawable.cover_big_sean, R.drawable.cover_britney, R.drawable.cover_hilary, R.drawable.cover_mb,
                R.drawable.cover_britney, R.drawable.cover_hilary, R.drawable.cover_mb, R.drawable.cover_akon,
                R.drawable.cover_justin, R.drawable.cover_alright, R.drawable.cover_big_sean, R.drawable.cover_britney,
                R.drawable.cover_hilary, R.drawable.cover_mb, R.drawable.cover_akon, R.drawable.cover_justin,
                R.drawable.cover_alright, R.drawable.cover_big_sean, R.drawable.cover_britney, R.drawable.cover_hilary,
                R.drawable.cover_mb, R.drawable.cover_akon, R.drawable.cover_justin, R.drawable.cover_alright,
                R.drawable.cover_big_sean, R.drawable.cover_britney, R.drawable.cover_hilary, R.drawable.cover_mb,
                R.drawable.cover_britney, R.drawable.cover_hilary, R.drawable.cover_mb, R.drawable.cover_akon,
                R.drawable.cover_justin, R.drawable.cover_alright, R.drawable.cover_big_sean, R.drawable.cover_britney,
                R.drawable.cover_hilary, R.drawable.cover_mb 
                };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
    
            // get the photo size and spacing
            mPhotoSize = getResources().getDimensionPixelSize(R.dimen.photo_size);
            mPhotoSpacing = getResources().getDimensionPixelSize(R.dimen.photo_spacing);
    
            // initialize image adapter
            imageAdapter = new ImageAdapter();
    
            photoGrid = (GridView) findViewById(R.id.albumGrid);
    
            //start sent image to full screen             
    
            /**
             * On Click event for Single Gridview Item
             * */
            photoGrid.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View v,
                        int position, long id) {
    
                    // Sending image id to FullScreenActivity
                    Intent i = new Intent(getApplicationContext(), SwipeActivity.class);
                    // passing array index
                    i.putExtra("id", position);
                    startActivity(i);
                }
            });
            //end sent image to full screen
    
            // set image adapter to the GridView
            photoGrid.setAdapter(imageAdapter);
    
            // get the view tree observer of the grid and set the height and numcols dynamically
            photoGrid.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    if (imageAdapter.getNumColumns() == 0) {
                        final int numColumns = (int) Math.floor(photoGrid.getWidth() / (mPhotoSize + mPhotoSpacing));
                        if (numColumns > 0) {
                            final int columnWidth = (photoGrid.getWidth() / numColumns) - mPhotoSpacing;
                            imageAdapter.setNumColumns(numColumns);
                            imageAdapter.setItemHeight(columnWidth);
    
                        }
                    }
                }
            });
        }
    
        // ///////// ImageAdapter class /////////////////
        public class ImageAdapter extends BaseAdapter {
            private LayoutInflater mInflater;
            private int mItemHeight = 0;
            private int mNumColumns = 0;
            private RelativeLayout.LayoutParams mImageViewLayoutParams;
    
            public ImageAdapter() {
                mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                mImageViewLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,
                        LayoutParams.MATCH_PARENT);
            }
    
            public int getCount() {
                return CONTENT.length;
            }
    
            // set numcols
            public void setNumColumns(int numColumns) {
                mNumColumns = numColumns;
            }
    
            public int getNumColumns() {
                return mNumColumns;
            }
    
            // set photo item height
            public void setItemHeight(int height) {
                if (height == mItemHeight) {
                    return;
                }
                mItemHeight = height;
                mImageViewLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, mItemHeight);
                notifyDataSetChanged();
            }
    
            public Object getItem(int position) {
                return position;
            }
    
            public long getItemId(int position) {
                return position;
            }
    
            public View getView(final int position, View view, ViewGroup parent) {
    
                if (view == null)
                    view = mInflater.inflate(R.layout.photo_item, null);
    
                ImageView cover = (ImageView) view.findViewById(R.id.cover);
                TextView title = (TextView) view.findViewById(R.id.title);
    
                cover.setLayoutParams(mImageViewLayoutParams);
    
                // Check the height matches our calculated column width
                if (cover.getLayoutParams().height != mItemHeight) {
                    cover.setLayoutParams(mImageViewLayoutParams);
                }
    
                cover.setImageResource(ICONS[position % ICONS.length]);
                title.setText(CONTENT[position % CONTENT.length]);
    
                return view;
            }
        }
    
    }
    

    SwipeActivity.java

        package com.td.gridview;
    
        import android.app.Activity;
        import android.content.Context;
        import android.content.Intent;
        import android.os.Bundle;
        import android.support.v4.view.PagerAdapter;
        import android.support.v4.view.ViewPager;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.ImageView;
    
    
    
        public class SwipeActivity extends Activity 
        {   
    
          @Override
          public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.swipe_view);
    
         // get intent data
            Intent i = getIntent();
    
            // Selected image id
            int position = i.getExtras().getInt("id");
    
        ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
        ImagePagerAdapter adapter = new ImagePagerAdapter();
        viewPager.setAdapter(adapter);
        viewPager.setCurrentItem(position);
      }
    
      private class ImagePagerAdapter extends PagerAdapter 
      {
          int[] icons = MainActivity.ICONS;    
    
        @Override
        public int getCount() 
        {
          return icons.length;
        }
    
        @Override
        public boolean isViewFromObject(View view, Object object) 
        {
          return view == ((ImageView) object);
        }
    
        @Override
        public Object instantiateItem(ViewGroup container, int position) 
        {
          Context context = SwipeActivity.this;
          ImageView imageView = new ImageView(context);
    //      int padding = context.getResources().getDimensionPixelSize(
    //          R.dimen.padding_large);
    //      imageView.setPadding(padding, padding, padding, padding);
          imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
          imageView.setImageResource(icons[position]);
          ((ViewPager) container).addView(imageView, 0);
          return imageView;
        }
    
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) 
        {
          ((ViewPager) container).removeView((ImageView) object);
        }
      }
    }
    

    activity_main.xml

    <GridView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/albumGrid"
        style="@style/PhotoGrid"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/black"
        android:columnWidth="@dimen/photo_size"
        android:horizontalSpacing="@dimen/photo_spacing"
        android:numColumns="auto_fit"
        android:padding="4dp"
        android:scrollbars="none"
        android:stretchMode="columnWidth"
        android:verticalSpacing="@dimen/photo_spacing" />
    

    photo_item.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/album_item"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    
    <ImageView
        android:id="@+id/cover"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/cover"
        android:background="#70000000"
        android:padding="6dp" >
    
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:singleLine="true"
            android:textColor="@color/white"
            android:textSize="12sp"
            android:textStyle="bold" />
    </LinearLayout>
    </RelativeLayout>
    

    swipe_view.xml

    <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/view_pager"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
    
    0 讨论(0)
提交回复
热议问题