ViewPager使用方法及子View的获取

举报
ShaderJoy 发表于 2021/12/29 23:22:20 2021/12/29
【摘要】 public class ViewPager_2Activity extends Activity{ private List<View> listViews; private ViewPager viewPager; /** Called when the activity is first created. */ @...

  
  1. public class ViewPager_2Activity extends Activity
  2. {
  3. private List<View> listViews;
  4. private ViewPager viewPager;
  5. /** Called when the activity is first created. */
  6. @Override
  7. public void onCreate(Bundle savedInstanceState)
  8. {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.main);
  11. listViews = new ArrayList<View>();
  12. listViews.add(View.inflate(getApplicationContext(), R.layout.layout1,
  13. null));
  14. listViews.add(View.inflate(getApplicationContext(), R.layout.layout2,
  15. null));
  16. listViews.add(View.inflate(getApplicationContext(), R.layout.layout3,
  17. null));
  18. viewPager = (ViewPager) findViewById(R.id.v_Pager);
  19. viewPager.setAdapter(new MyPagerAdapter(listViews));
  20. viewPager.setCurrentItem(0);
  21. View view = listViews.get(2);
  22. TextView textView = (TextView) view.findViewById(R.id.text_3);
  23. textView.setText("10");
  24. Button button = (Button) view.findViewById(R.id.button_3);
  25. button.setOnClickListener(new OnClickListener()
  26. {
  27. public void onClick(View v)
  28. {
  29. // TODO Auto-generated method stub
  30. Toast.makeText(getApplicationContext(), "你点击了按钮",
  31. Toast.LENGTH_SHORT).show();
  32. }
  33. });
  34. }
  35. private class MyPagerAdapter extends PagerAdapter
  36. {
  37. private List<View> mListView;
  38. private MyPagerAdapter(List<View> list)
  39. {
  40. // TODO Auto-generated method stub
  41. this.mListView = list;
  42. }
  43. @Override
  44. /**这个方法,是从ViewGroup中移出当前View**/
  45. public void destroyItem(View container, int position, Object object)
  46. {
  47. // TODO Auto-generated method stub
  48. ((ViewGroup) container ).removeView(mListView.get(position));
  49. }
  50. @Override
  51. public void finishUpdate(View view)
  52. {
  53. // TODO Auto-generated method stub
  54. }
  55. @Override
  56. /**这个方法,是获取当前窗体界面数**/
  57. public int getCount()
  58. {
  59. // TODO Auto-generated method stub
  60. return mListView.size();
  61. }
  62. @Override
  63. /**这个方法,return一个对象,这个对象表明了PagerAdapter适配器选择哪个对象*放在当前的ViewPager中**/
  64. public Object instantiateItem(View container, int position)
  65. {
  66. // TODO Auto-generated method stub
  67. ((ViewGroup) container).addView(mListView.get(position), 0);
  68. return mListView.get(position);
  69. }
  70. @Override
  71. /**这个方法,在帮助文档中原文是could be implemented as return view == object,*也就是用于判断是否由对象生成界面**/
  72. public boolean isViewFromObject(View view, Object object)
  73. {
  74. // TODO Auto-generated method stub
  75. return view == (object);
  76. }
  77. @Override
  78. public void restoreState(Parcelable state, ClassLoader loader)
  79. {
  80. // TODO Auto-generated method stub
  81. }
  82. @Override
  83. public Parcelable saveState()
  84. {
  85. // TODO Auto-generated method stub
  86. return null;
  87. }
  88. @Override
  89. public void startUpdate(View v)
  90. {
  91. // TODO Auto-generated method stub
  92. }
  93. }
  94. }

  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <android.support.v4.view.ViewPager
  7. android:id="@+id/v_Pager"
  8. android:layout_width="fill_parent"
  9. android:layout_height="fill_parent" >
  10. </android.support.v4.view.ViewPager>
  11. </LinearLayout>

  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <TextView android:id="@+id/text_1"
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:text="15"
  10. android:textSize="150sp"
  11. android:layout_gravity="center_horizontal"/>
  12. <Button
  13. android:id="@+id/button_1"
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. android:text="第1页面"
  17. android:textSize="30sp"
  18. ></Button>
  19. </LinearLayout>


  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <TextView android:id="@+id/text_2"
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:text="25"
  10. android:textSize="150sp"
  11. android:layout_gravity="center_horizontal"/>
  12. <Button
  13. android:id="@+id/button_2"
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. android:text="第2页面"
  17. android:textSize="30sp"
  18. ></Button>
  19. </LinearLayout>


  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <TextView android:id="@+id/text_3"
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:text="35"
  10. android:textSize="150sp"
  11. android:layout_gravity="center_horizontal"/>
  12. <Button
  13. android:id="@+id/button_3"
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. android:text="第3页面"
  17. android:textSize="30sp"
  18. ></Button>
  19. </LinearLayout>

效果图:

ViewPager页面拖动到最前或最后的时候回弹效果

看到一哥们用ViewPager写的左右滑动的屏幕,像UC浏览器那样,连接:
http://www.eoeandroid.com/thread-92508-1-1.html
但是当滑到最左端或者最右端就不能滑动了,感觉用户体验不如UC的,所以就试着弄了下
继承ViewPager类以后,在左面和右面各增加个空View,然后在onPageSelected方法中


  
  1. @Override
  2. public void onPageSelected(int arg0)
  3. {
  4. // TODO Auto-generated method stub
  5. System.out.println("onPageSelected = " + arg0);
  6. if (arg0 == 0)
  7. mViewPaper.setCurrentItem(arg0 + 1);
  8. else if (arg0 == mViewList.size() - 1)
  9. mViewPaper.setCurrentItem(arg0 - 1);
  10. }
ViewPager的onPageChangeListener里面的一些方法参数:


  
  1. onPageSelected(int arg0){
  2. }
  3. arg0是表示你当前选中的页面,这事件是在你页面跳转完毕的时候调用的。
  4. public void onPageScrollStateChanged(int arg0) {
  5. // TODO Auto-generated method stub
  6. } arg0 ==1的时候表示正在滑动,arg0==2的时候表示滑动完毕了,arg0==0的时候表示什么都没做,就是停在那。
  7. public void onPageScrolled(int arg0, float arg1, int arg2) {
  8. // TODO Auto-generated method stub
  9. }表示在前一个页面滑动到后一个页面的时候,在前一个页面滑动前调用的方法。




文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。

原文链接:panda1234lee.blog.csdn.net/article/details/8747811

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。