Android Viewpager作为图片幻灯片库
我正在使用Jake的ViewPageIndicator,并希望像滑animation廊一样显示图像。 任何引用链接,我可以开始。 我已经实现了基本的viewpager,现在想实现图像视图如下
有没有可能实现使用ViewPageIndicator ?
在Jake的ViewPageIndicator中,他实现了View pager来显示从YourAdapter.java(将FragmentPagerAdapter扩展)传递给YourFragment.java的String数组(即["this","is","a","text"]
)这将返回一个视图到viewpager。
为了显示不同的东西,你只需要改变你传递的上下文types。 在这种情况下,您想要传递图像而不是文本,如下面的示例所示:
这是你如何设置你的Viewpager:
public class PlaceDetailsFragment extends SherlockFragment { PlaceSlidesFragmentAdapter mAdapter; ViewPager mPager; PageIndicator mIndicator; public static final String TAG = "detailsFragment"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_place_details, container, false); mAdapter = new PlaceSlidesFragmentAdapter(getActivity() .getSupportFragmentManager()); mPager = (ViewPager) view.findViewById(R.id.pager); mPager.setAdapter(mAdapter); mIndicator = (CirclePageIndicator) view.findViewById(R.id.indicator); mIndicator.setViewPager(mPager); ((CirclePageIndicator) mIndicator).setSnap(true); mIndicator .setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int position) { Toast.makeText(PlaceDetailsFragment.this.getActivity(), "Changed to page " + position, Toast.LENGTH_SHORT).show(); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageScrollStateChanged(int state) { } }); return view; } }
your_layout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" /> <com.viewpagerindicator.CirclePageIndicator android:id="@+id/indicator" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dip" /> </LinearLayout>
YourAdapter.java
public class PlaceSlidesFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter { private int[] Images = new int[] { R.drawable.photo1, R.drawable.photo2, R.drawable.photo3, R.drawable.photo4 }; protected static final int[] ICONS = new int[] { R.drawable.marker, R.drawable.marker, R.drawable.marker, R.drawable.marker }; private int mCount = Images.length; public PlaceSlidesFragmentAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return new PlaceSlideFragment(Images[position]); } @Override public int getCount() { return mCount; } @Override public int getIconResId(int index) { return ICONS[index % ICONS.length]; } public void setCount(int count) { if (count > 0 && count <= 10) { mCount = count; notifyDataSetChanged(); } } }
YourFragment.java
//你需要从这里返回形象的文字//
public final class PlaceSlideFragment extends Fragment { int imageResourceId; public PlaceSlideFragment(int i) { imageResourceId = i; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ImageView image = new ImageView(getActivity()); image.setImageResource(imageResourceId); LinearLayout layout = new LinearLayout(getActivity()); layout.setLayoutParams(new LayoutParams()); layout.setGravity(Gravity.CENTER); layout.addView(image); return layout; } }
你应该从上面的代码中得到一个像这样的View pager。
我制作了一个名为AndroidImageSlider的库,你可以试试看。
使用ViewPager实现图像查看器,查看这个项目https://github.com/chiuki/android-swipe-image-viewer
请参阅这个讨论也用viewpager滑动图像(不是布局)
只需使用此https://gist.github.com/8cbe094bb7a783e37ad1使周围的页面可见和http://viewpagerindicator.com/这,为指标。; 这很酷,我正在使用它的画廊。
Hoho ..使用Gallery来实现这个应该很容易,使用ViewPager要困难得多。 但我仍然鼓励使用ViewPager,因为Gallery真的有很多问题,并从Android 4.2以来已弃用。
在PagerAdapter中有一个方法getPageWidth()来控制页面大小,但是只有这样你才能实现你的目标。
尝试阅读以下两篇文章的帮助。
多视图-viewpager选项
viewpager容器
你可以使用自定义画廊控制..检查这个https://github.com/kilaka/ImageViewZoom使用galleryTouch类从这;..
嗨,如果你正在寻找简单的Android图像滑动圈指标,你可以从这里下载完整的代码http://javaant.com/viewpager-with-circle-indicator-in-android/#.VysQQRV96Hs 。 请检查现场演示,这将给出清晰的想法。
enter code here public Timer timer; public TimerTask task; public ImageView slidingimage; private int[] IMAGE_IDS = { R.drawable.home_banner1, R.drawable.home_banner2, R.drawable.home_banner3 }; enter code here @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home_screen); final Handler mHandler = new Handler(); // Create runnable for posting final Runnable mUpdateResults = new Runnable() { public void run() { AnimateandSlideShow(); } }; int delay = 2000; // delay for 1 sec. int period = 2000; // repeat every 4 sec. Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { public void run() { mHandler.post(mUpdateResults); } }, delay, period); enter code here private void AnimateandSlideShow() { slidingimage = (ImageView)findViewById(R.id.banner); slidingimage.setImageResource(IMAGE_IDS[currentimageindex%IMAGE_IDS.length]); currentimageindex++; Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.custom_anim); slidingimage.startAnimation(rotateimage); }
一个伟大的一个图像滑块: https : //github.com/daimajia/AndroidImageSlider检查它