android viewpager 图片翻页例子
2015-02-12 10:30
369 查看
使用ViewPager这个类可以轻松实现多个页面的滑动功能
viewpager默认在工具界面上是找不到的,需求添加android-support-v4.jar包;
如果没有找到,需要打开Android SDK Manager在Extras中进行下载,最后记得引入工程中并build path。
(不过,我把代码直接COPY到.XML好像就会自动添加了)
例子说明:item01..item08是要翻页的图片,page_indicator_focused,page_indicator_unfocused是显示在底部的点点图片,要自己添加到res\drawable-hdpi\中;
.XML
代码下载:http://pan.baidu.com/s/1mgA7MBY
.JAVA
转自:http://blog.csdn.net/xiaanming/article/details/8966621
打开链接可查看效果图
viewpager默认在工具界面上是找不到的,需求添加android-support-v4.jar包;
如果没有找到,需要打开Android SDK Manager在Extras中进行下载,最后记得引入工程中并build path。
(不过,我把代码直接COPY到.XML好像就会自动添加了)
例子说明:item01..item08是要翻页的图片,page_indicator_focused,page_indicator_unfocused是显示在底部的点点图片,要自己添加到res\drawable-hdpi\中;
.XML
代码下载:http://pan.baidu.com/s/1mgA7MBY
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:id="@+id/viewGroup" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="30dp" android:gravity="center_horizontal" android:orientation="horizontal" > </LinearLayout> </RelativeLayout> </FrameLayout>
.JAVA
package com.example.testa; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.LinearLayout; public class MainActivity extends Activity implements OnPageChangeListener { /** * ViewPager */ private ViewPager viewPager; /** * 装点点的ImageView数组 */ private ImageView[] tips; /** * 装ImageView数组 */ private ImageView[] mImageViews; /** * 图片资源id */ private int[] imgIdArray; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewGroup group = (ViewGroup) findViewById(R.id.viewGroup); viewPager = (ViewPager) findViewById(R.id.viewPager); // 载入图片资源ID imgIdArray = new int[] { R.drawable.item01, R.drawable.item02, R.drawable.item03, R.drawable.item04, R.drawable.item05, R.drawable.item06, R.drawable.item07, R.drawable.item08 }; // 将点点加入到ViewGroup中 tips = new ImageView[imgIdArray.length]; for (int i = 0; i < tips.length; i++) { ImageView imageView = new ImageView(this); imageView.setLayoutParams(new LayoutParams(10, 10)); tips[i] = imageView; if (i == 0) { tips[i].setBackgroundResource(R.drawable.page_indicator_focused); } else { tips[i].setBackgroundResource(R.drawable.page_indicator_unfocused); } LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); layoutParams.leftMargin = 5; layoutParams.rightMargin = 5; group.addView(imageView, layoutParams); } // 将图片装载到数组中 mImageViews = new ImageView[imgIdArray.length]; for (int i = 0; i < mImageViews.length; i++) { ImageView imageView = new ImageView(this); mImageViews[i] = imageView; imageView.setBackgroundResource(imgIdArray[i]); } // 设置Adapter viewPager.setAdapter(new MyAdapter()); // 设置监听,主要是设置点点的背景 viewPager.setOnPageChangeListener(this); // 设置ViewPager的默认项, 设置为长度的100倍,这样子开始就能往左滑动 viewPager.setCurrentItem((mImageViews.length) * 100); } /** * * @author xiaanming * */ public class MyAdapter extends PagerAdapter { @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public void destroyItem(View container, int position, Object object) { } /** * 载入图片进去,用当前的position 除以 图片数组长度取余数是关键 */ @Override public Object instantiateItem(View container, int position) { try { ((ViewPager)container).addView(mImageViews[position % mImageViews.length], 0); }catch(Exception e){ //handler something } return mImageViews[position % mImageViews.length]; } } @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int arg0) { setImageBackground(arg0 % mImageViews.length); } /** * 设置选中的tip的背景 * * @param selectItems */ private void setImageBackground(int selectItems) { for (int i = 0; i < tips.length; i++) { if (i == selectItems) { tips[i].setBackgroundResource(R.drawable.page_indicator_focused); } else { tips[i].setBackgroundResource(R.drawable.page_indicator_unfocused); } } } }
转自:http://blog.csdn.net/xiaanming/article/details/8966621
打开链接可查看效果图
相关文章推荐
- android 界面开发: 图片、界面滑动翻页效果(ViewPager)
- Android 图片混排效果和ViewPager的使用
- android 翻页, Viewpager 的使用及优化
- Android Viewpager实现图片轮播(仿优酷效果)
- Android学习小Demo(10)ToDoList的改进版之ViewPager显示多个图片
- Android 使用ViewPager实现左右循环滑动图片
- Android_ViewPager_实现多个图片水平滚动
- Android_ViewPager_实现多个图片水平滚动
- Android通过ViewPager实现左右滑动切换图片
- Android 使用ViewPager实现左右循环滑动图片
- android listview viewpager 异步加载图片 headerview
- Android ViewPager大图片滑动避免内存溢出
- Android 使用ViewPager实现左右循环滑动图片
- Android之ViewPager实现图片+小圆点切换【有图有码】实例
- Android初级教程_图片混排效果和ViewPager的使用
- android中使用ViewPager实现图片左右拖动
- android中一个关于ViewPager的例子
- Android的使用ViewPager简单实例【类似tab翻页】
- 使用viewpager嵌套实现上下左右滑动切换图片(IOS双向滚动翻页效果相同)
- android 解决ViewPager加载大量图片内存溢出问题