ViewPager
2015-09-06 23:00
246 查看
学习资料
fragmentviewpager的资料
viewpager实现多个图片的水平滚动
需要注意的是1.在无限循环中要注意什么时候addView什么时候removeView
2.无限循环的原理
fragmentviewpager的资料
http://blog.csdn.net/harvic880925/article/details/38660861
viewpager实现多个图片的水平滚动
http://www.cnblogs.com/android100/p/Android-ViewPager-scroll-pic.html
需要注意的是1.在无限循环中要注意什么时候addView什么时候removeView
2.无限循环的原理
主界面
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.PagerTabStrip android:id="@+id/pagertab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom"> </android.support.v4.view.PagerTabStrip> </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/linearlayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:gravity="center" android:layout_marginBottom="10dp"></LinearLayout> </RelativeLayout>
加载的三个view
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/jingse"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/meinv"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/fengjing"/> </LinearLayout>
MyPagerAdapter
public class MyPagerAdapter extends PagerAdapter { private List<View> views; private String[] mTitle={"标题1","标题2","标题3"}; public MyPagerAdapter(List<View> views ) { this.views = views; } //加载标题的覆写的方法 @Override public CharSequence getPageTitle(int position) { return mTitle[position%mTitle.length]; } @Override public void destroyItem(ViewGroup container, int position, Object object) { // container.removeView(views.get(position%views.size())); //在无限循环中不去掉这个会把前面加载的界面销毁当翻滚到前面的界面时界面消失 } @Override public Object instantiateItem(ViewGroup container, int position) { //在无限循环中向前滑动时需要把前面加载的View移除 View view=views.get(position%views.size()); if (view!=null){ container.removeView(view); } container.addView(views.get(position%views.size()));//加载View必须放在removeView()后面不然会加载重复 return views.get(position%views.size()) ; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } }
主Activity
public class MainActivity extends AppCompatActivity { private ViewPager mViewPager; private List<View> views; private LinearLayout mLinearLayout; private List<ImageView> mPoints; private PagerTabStrip mPagerTab; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mPagerTab= (PagerTabStrip) findViewById(R.id.pagertab); mLinearLayout = (LinearLayout) findViewById(R.id.linearlayout); views = new ArrayList<>(); mViewPager = (ViewPager) findViewById(R.id.viewpager); View view1 = getLayoutInflater().inflate(R.layout.item1, null); View view2 = getLayoutInflater().inflate(R.layout.item2, null); View view3 = getLayoutInflater().inflate(R.layout.item3, null); views.add(view1); views.add(view2); views.add(view3); mPoints = new ArrayList<>(); for (int i = 0; i <3 ; i++) { ImageView img1 = new ImageView(this); img1.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));//设置宽和高 // LinearLayout.LayoutParams params= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); // params.setMargins(20,20,20,20);//设置圆点的距离 // img1.setLayoutParams(params); img1.setPadding(20,20,20,20);//设置圆点的距离 img1.setImageResource(R.mipmap.point_normal); mPoints.add(img1); mLinearLayout.addView(img1);//添加img到Linewlayout中 mPagerTab.setBackgroundColor(Color.GRAY); mPagerTab.setTabIndicatorColor(Color.RED); mPagerTab.setTextColor(Color.BLUE); mPagerTab.setDrawFullUnderline(true); mPagerTab.setGravity(Gravity.BOTTOM);//设置Tab的位置 } mPoints.get(0).setImageResource(R.mipmap.point_select);//设置第一个页面为红点 MyPagerAdapter adapter = new MyPagerAdapter(views); adapter.notifyDataSetChanged(); mViewPager.setAdapter(adapter); mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for(ImageView im:mPoints){ im.setImageResource(R.mipmap.point_normal); } mPoints.get(position%views.size()).setImageResource(R.mipmap.point_select); } @Override public void onPageScrollStateChanged(int state) { } }); mViewPager.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2/3%views.size()); } }
相关文章推荐
- vim常用命令总结
- 九月六号java小练习
- autoprefixer webstorm
- JQuery ztree 异步加载实践
- JMeter性能测试基础 (1) - 安装及简单使用
- JUnit单元测试
- autoprefixer webstorm
- 向服务器请求数据(没有上拉和下拉刷新的情况)注意细节
- UI基础-02 按钮控制图片移动
- vector详解
- Codeforces Bubble Cup 8 - Finals [Online Mirror] D. Tablecity 数学题
- 0906Android基础ViewPager+Fragment
- [LinkerScript.9] 符号赋值: 简单分配 - Assigning Values to Symbols: Simple Assignments
- SpringMVC深度探险
- mysql安装
- 单片机I/O口推挽输出与开漏输出的区别(转)
- IOCP问题总结(recv阻塞/死锁/线程堆栈溢出)
- Tomcat剖析(二):一个简单的Servlet服务器
- 构造函数为什么没有返回值
- Shell之-开机自启所有服务