GalleryWithViewPagerActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import android.app.Activity; import android.os.Bundle; import android.support.v4.view.ViewPager; public class GalleryWithViewPagerActivity extends Activity { private ImageAdapter mImageAdapter; private ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mViewPager = (ViewPager) findViewById(R.id.pager); // Create a new ImageAdapter (subclass of FragmentStatePagerAdapter) // ViewPager uses support library, so use getSupportFragmentManager() // instead of getFragmentManager() mImageAdapter = new ImageAdapter(getFragmentManager()); // Set the Adapter on the ViewPager mViewPager.setAdapter(mImageAdapter); } } |
ImageAdapter.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import android.app.Fragment; import android.app.FragmentManager; import android.os.Bundle; import android.support.v13.app.FragmentStatePagerAdapter; // Manages Fragments holding ImageViews public class ImageAdapter extends FragmentStatePagerAdapter { // List of IDs corresponding to the images private Integer[] mImageIds = { R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7 }; public ImageAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { Fragment fragment = new ImageHolderFragment(); Bundle args = new Bundle(); args.putInt(ImageHolderFragment.RES_ID, mImageIds[i]); args.putString(ImageHolderFragment.POS, String.valueOf(i)); fragment.setArguments(args); return fragment; } @Override public int getCount() { return mImageIds.length; } } |
ImageHolderFragment.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import android.os.Bundle; import android.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.Toast; // Each instance holds one image to be displayed in the ViewPager public class ImageHolderFragment extends Fragment { public static final String RES_ID = "res_id"; public static final String POS = "position"; private String mPos; private int mID; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final Bundle args = getArguments(); mPos = args.getString(POS); mID = args.getInt(RES_ID); ImageView imageView = (ImageView) inflater.inflate(R.layout.page, container, false); // Set the Image for the ImageView imageView.setImageResource(mID); // Set an setOnItemClickListener on the Gallery imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // Display a Toast message indicate the selected item Toast.makeText(getActivity(), mPos, Toast.LENGTH_SHORT).show(); } }); return imageView; } } |
main.xml
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="400dp" android:layout_height="400dp" /> |
page.xml
1 2 3 4 5 6 7 8 9 10 |
<ImageView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/image" android:layout_width="match_parent" android:layout_height="match_parent" android:contentDescription="@string/image_desc_string" android:scaleType="fitXY" android:layout_gravity="center" > </ImageView> |