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. */ @...

      public class ViewPager_2Activity extends Activity
      {
     	private List<View> listViews;
     	private ViewPager viewPager;
     	/** Called when the activity is first created. */
     	@Override
     	public void onCreate(Bundle savedInstanceState)
      	{
     		super.onCreate(savedInstanceState);
      		setContentView(R.layout.main);
      		listViews = new ArrayList<View>();
      		listViews.add(View.inflate(getApplicationContext(), R.layout.layout1,
     				null));
      		listViews.add(View.inflate(getApplicationContext(), R.layout.layout2,
     				null));
      		listViews.add(View.inflate(getApplicationContext(), R.layout.layout3,
     				null));
      		viewPager = (ViewPager) findViewById(R.id.v_Pager);
      		viewPager.setAdapter(new MyPagerAdapter(listViews));
      		viewPager.setCurrentItem(0);
     		View view = listViews.get(2);
     		TextView textView = (TextView) view.findViewById(R.id.text_3);
      		textView.setText("10");
     		Button button = (Button) view.findViewById(R.id.button_3);
      		button.setOnClickListener(new OnClickListener()
      		{
     			public void onClick(View v)
      			{
     				// TODO Auto-generated method stub
      				Toast.makeText(getApplicationContext(), "你点击了按钮",
      						Toast.LENGTH_SHORT).show();
      			}
      		});
      	}
     	private class MyPagerAdapter extends PagerAdapter
      	{
     		private List<View> mListView;
     		private MyPagerAdapter(List<View> list)
      		{
     			// TODO Auto-generated method stub
     			this.mListView = list;
      		}
     		@Override
     		/**这个方法,是从ViewGroup中移出当前View**/
     		public void destroyItem(View container, int position, Object object)
      		{
     			// TODO Auto-generated method stub
      			((ViewGroup) container ).removeView(mListView.get(position));
      		}
     		@Override
     		public void finishUpdate(View view)
      		{
     			// TODO Auto-generated method stub
      		}
     		@Override
     		/**这个方法,是获取当前窗体界面数**/
     		public int getCount()
      		{
     			// TODO Auto-generated method stub
     			return mListView.size();
      		}
     		@Override
     		 /**这个方法,return一个对象,这个对象表明了PagerAdapter适配器选择哪个对象*放在当前的ViewPager中**/
     		public Object instantiateItem(View container, int position)
      		{
     			// TODO Auto-generated method stub
      			((ViewGroup) container).addView(mListView.get(position), 0);
     			return mListView.get(position);
      		}
     		@Override
     		/**这个方法,在帮助文档中原文是could be implemented as return view == object,*也就是用于判断是否由对象生成界面**/
     		public boolean isViewFromObject(View view, Object object)
      		{
     			// TODO Auto-generated method stub
     			return view == (object);
      		}
     		@Override
     		public void restoreState(Parcelable state, ClassLoader loader)
      		{
     			// TODO Auto-generated method stub
      		}
     		@Override
     		public Parcelable saveState()
      		{
     			// TODO Auto-generated method stub
     			return null;
      		}
     		@Override
     		public void startUpdate(View v)
      		{
     			// TODO Auto-generated method stub
      		}
      	}
      }
  
 

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout 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/v_Pager"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent" >
         </android.support.v4.view.ViewPager>
      </LinearLayout>
  
 

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:orientation="vertical" >
         <TextView android:id="@+id/text_1"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="15"
             android:textSize="150sp"
             android:layout_gravity="center_horizontal"/>
         <Button
             android:id="@+id/button_1"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="第1页面"
             android:textSize="30sp"
              ></Button>
      </LinearLayout>
  
 


      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:orientation="vertical" >
         <TextView android:id="@+id/text_2"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="25"
             android:textSize="150sp"
             android:layout_gravity="center_horizontal"/>
         <Button
             android:id="@+id/button_2"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="第2页面"
             android:textSize="30sp"
              ></Button>
      </LinearLayout>
  
 


      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:orientation="vertical" >
         <TextView android:id="@+id/text_3"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="35"
             android:textSize="150sp"
             android:layout_gravity="center_horizontal"/>
         <Button
             android:id="@+id/button_3"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="第3页面"
             android:textSize="30sp"
              ></Button>
      </LinearLayout>
  
 

效果图:

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

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


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


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




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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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