Viewpager是用于实现多页面的切换效果的。在现在的app中非常常见,通常会配合Fragment使用。现在简单的对view的使用进行介绍。
首先认识一个这个控件,ViewPager。它是google SDk中自带的一个附加包的一个类(这个附加包是android-support-v4.jar),可以用来实现屏幕间的切换。
首先进行页面设计:
main.xml文件
1 <android.support.v4.view.ViewPager 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 android:id="@+id/viewPager" 5 ></android.support.v4.view.ViewPager> 6 7 <LinearLayout 8 android:layout_width="match_parent" 9 android:layout_height="wrap_content" 10 android:gravity="center_vertical" 11 android:layout_alignParentBottom="true" 12 android:orientation="horizontal" 13 android:id="@+id/group" 14 ></LinearLayout>
每个页面的的代码一共有三个item1,item2,item3现在只放一个其他的类似
<ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/view1" android:id="@+id/item1" />
只有一张图片。
现在代码部分,先定义字段
1 ArrayList<View> viewlist;//页面的内容 2 ViewPager vpager;//页卡内容 3 ImageView image;//动画图片 4 ImageView[] imaglist;//动画图片 5 ViewGroup group;//动画图片效果
oncreate()方法
1 protected void onCreate(Bundle savedInstanceState) { 2 super.onCreate(savedInstanceState); 3 setContentView(R.layout.activity_main); 4 5 vpager = (ViewPager) findViewById(R.id.viewPager); 6 7 viewlist = new ArrayList<View>(); 8 LayoutInflater inflater = getLayoutInflater(); 9 View v1 = inflater.inflate(R.layout.item1, null); 10 View v2 = inflater.inflate(R.layout.item2, null); 11 View v3 = inflater.inflate(R.layout.item3, null); 12 13 viewlist.add(v1); 14 viewlist.add(v2); 15 viewlist.add(v3); 16 17 18 imaglist = new ImageView[viewlist.size()]; 19 for (int i = 0; i < viewlist.size(); i++) { 20 21 image = new ImageView(MainActivity.this); 22 23 if (i == 0) { 24 image.setImageResource(R.drawable.page_indicator_focused); 25 } else { 26 image.setImageResource(R.drawable.page_indicator_unfocused); 27 } 28 imaglist[i] = image; 29 group.addView(image); 30 } 31 32 vpager.setAdapter(adapter); 33 vpager.setOnPageChangeListener(new myPagerChangeListener()); 34 35 36 }
viewpager必须通过适配器使用。下面的代码定义了适配器
1 PagerAdapter adapter = new PagerAdapter() { 2 @Override 3 public int getCount() { 4 return viewlist.size(); 5 } 6 7 @Override 8 public boolean isViewFromObject(View view, Object o) { 9 return view==o; 10 } 11 12 @Override 13 public Object instantiateItem(ViewGroup container, int position) { 14 ((ViewPager)container).addView(viewlist.get(position)); 15 16 return viewlist.get(position); 17 } 18 19 @Override 20 public void destroyItem(ViewGroup container, int position, Object object) { 21 ((ViewPager)container).removeView(viewlist.get(position)); 22 } 23 };
最后是定义监听时间。在进行翻页的时候得动画
class myPagerChangeListener implements ViewPager.OnPageChangeListener{ @Override public void onPageScrolled(int i, float v, int i1) { } @Override public void onPageSelected(int i) { for(int j=0;i<imaglist.length;j++){ if(i==j){ imaglist[j].setImageResource(R.drawable.page_indicator_focused); }else { imaglist[j].setImageResource(R.drawable.page_indicator_unfocused); } } } @Override public void onPageScrollStateChanged(int i) { } }