ViewFlipper怎么从第一个页面直接跳到第三个页面?

失落夏天 版主
Android领域优质创作者
博客专家认证
2013-12-22 11:34:03
想实现这样的一个效果
上面是
ViewFlipper,里面包含若干的page页面。
下面是一排按钮
点击哪个按钮就显示对应的page页面。
但是ViewFlipper中我只是找到了showNext和showPrevious();方法。
如果我点击的是按钮三的话,如何直接从界面一跳转到界面三呢?

当然,我可以只显示一个Relativelayout,控制各个page的显示与不显示就可以了,但是觉得这样不合理。

或者有类似ViewFlipper的控件也行的,谢谢了。
...全文
462 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Birds2018 2014-02-14
  • 打赏
  • 举报
回复
学习了。
失落夏天 版主 2014-02-14
  • 打赏
  • 举报
回复
引用 1 楼 birdsaction 的回复:
那用ViewPager控件,可以额外加个按钮跳转到 第三个页面,直接滑动到第三个页面貌似 不太行,如果这样做的话 无法滑动到第二个页面了。
今天专门查了一下 ViewPager是可以的, 可以使用viewPager.setCurrentItem(N);的方法。 但是ViewFlipper好像不行。 上一个例子吧。

public class MainPage extends RelativeLayout {
	MainPageService service;
	Context context;
	Activity activity;
	MyListen mylisten;

	private ViewPager viewPager;
	private ArrayList<View> pageViews;
//	private ViewGroup group; 
	Page1 page1;
	Page2 page2;
	Page3 page3;
	Page4 page4;
	Page5 page5;

	LinearLayout item;
	ImageButton btn1;
	ImageButton btn2;
	ImageButton btn3;
	ImageButton btn4;
	ImageButton btn5;

	public MainPage(Context context, MainPageService service) {
		super(context);
		this.context = context;
		this.activity = (Activity) context;
		this.service=service;
		inflate(context, R.layout.mainpage, this);
		init();
		getAllElements();
		setListen();
		setListView();
		setItem();
		setButton();
	}

	private void init() {
		mylisten = new MyListen();
	}

	private void getAllElements() {
		viewPager = (android.support.v4.view.ViewPager) findViewById(R.id.guidePages);
//		group =(ViewGroup) findViewById(R.id.viewGroup);
		item = (LinearLayout) findViewById(R.id.itemview);
		btn1 = (ImageButton) findViewById(R.id.one);
		btn2 = (ImageButton) findViewById(R.id.two);
		btn3 = (ImageButton) findViewById(R.id.three);
		btn4 = (ImageButton) findViewById(R.id.four);
		btn5 = (ImageButton) findViewById(R.id.five);
		btn1.getLayoutParams().width = PhoneUtil.screenWidth / 5;
		btn1.getLayoutParams().height = PhoneUtil.unitHeight;
		btn2.getLayoutParams().width = PhoneUtil.screenWidth / 5;
		btn2.getLayoutParams().height = PhoneUtil.unitHeight;
		btn3.getLayoutParams().width = PhoneUtil.screenWidth / 5;
		btn3.getLayoutParams().height = PhoneUtil.unitHeight;
		btn4.getLayoutParams().width = PhoneUtil.screenWidth / 5;
		btn4.getLayoutParams().height = PhoneUtil.unitHeight;
		btn5.getLayoutParams().width = PhoneUtil.screenWidth / 5;
		btn5.getLayoutParams().height = PhoneUtil.unitHeight;
	}

	private void setButton() {
		btn1.setBackgroundResource(R.drawable.main_btn);
		btn2.setBackgroundResource(R.drawable.user_btn);
		btn3.setBackgroundResource(R.drawable.earn_btn);
		btn4.setBackgroundResource(R.drawable.exchange_btn);
		btn5.setBackgroundResource(R.drawable.more_btn);

	}

	private void setListView() {
		viewPager.getLayoutParams().width = -1;
		viewPager.getLayoutParams().height = PhoneUtil.screenHeight
				- PhoneUtil.unitHeight - PhoneUtil.sbar;

		page1 = new Page1(context,service);
		page2 = new Page2(context,service);
		page3 = new Page3(context,service);
		page4 = new Page4(context,service);
		page5 = new Page5(context,service);

		pageViews = new ArrayList<View>();  
		pageViews.add(page1);
		pageViews.add(page2);
		pageViews.add(page3);
		pageViews.add(page4);
		pageViews.add(page5);
		
	}

	private void setItem() {
		viewPager.setAdapter(new GuidePageAdapter());  
		item.getLayoutParams().width = -1;
		item.getLayoutParams().height = PhoneUtil.unitHeight;
		android.widget.RelativeLayout.LayoutParams viewPager_lp= (LayoutParams) viewPager.getLayoutParams();
		viewPager_lp.setMargins(0, 0, 0, PhoneUtil.unitHeight);

	}

	private void setListen() {
		btn1.setOnClickListener(mylisten);
		btn2.setOnClickListener(mylisten);
		btn3.setOnClickListener(mylisten);
		btn4.setOnClickListener(mylisten);
		btn5.setOnClickListener(mylisten);
	}

	class MyListen implements OnClickListener {

		@Override
		public void onClick(View v) {

			if (btn1 == v) {
				viewPager.setCurrentItem(0);
			} else if (btn2 == v) {
				viewPager.setCurrentItem(1);
			} else if (btn3 == v) {
				viewPager.setCurrentItem(2);
			} else if (btn4 == v) {
				viewPager.setCurrentItem(3);
			} else if (btn5 == v) {
				viewPager.setCurrentItem(4);
			} else {

			}
		}
	}

	/** 指引页面Adapter */
    class GuidePageAdapter extends PagerAdapter {  
    	  
        @Override  
        public int getCount() {  
            return pageViews.size();  
        }  
  
        @Override  
        public boolean isViewFromObject(View arg0, Object arg1) {  
            return arg0 == arg1;  
        }  
  
        @Override  
        public int getItemPosition(Object object) {  
            // TODO Auto-generated method stub  
            return super.getItemPosition(object);  
        }  
  
        @Override  
        public void destroyItem(View arg0, int arg1, Object arg2) {  
            // TODO Auto-generated method stub  
            ((ViewPager) arg0).removeView(pageViews.get(arg1));  
        }  
  
        @Override  
        public Object instantiateItem(View arg0, int arg1) {  
            // TODO Auto-generated method stub  
            ((ViewPager) arg0).addView(pageViews.get(arg1));  
            return pageViews.get(arg1);  
        }  
  
        @Override  
        public void restoreState(Parcelable arg0, ClassLoader arg1) {  
            // TODO Auto-generated method stub  
  
        }  
  
        @Override  
        public Parcelable saveState() {  
            // TODO Auto-generated method stub  
            return null;  
        }  
  
        @Override  
        public void startUpdate(View arg0) {  
            // TODO Auto-generated method stub  
  
        }  
  
        @Override  
        public void finishUpdate(View arg0) {  
            // TODO Auto-generated method stub  
  
        }  
    } 
}
Birds2018 2013-12-23
  • 打赏
  • 举报
回复
那用ViewPager控件,可以额外加个按钮跳转到 第三个页面,直接滑动到第三个页面貌似 不太行,如果这样做的话 无法滑动到第二个页面了。
失落夏天 版主 2013-12-23
  • 打赏
  • 举报
回复
引用 1 楼 birdsaction 的回复:
那用ViewPager控件,可以额外加个按钮跳转到 第三个页面,直接滑动到第三个页面貌似 不太行,如果这样做的话 无法滑动到第二个页面了。
肯定是有额外按钮的,我的描述中说了 点击按钮一进入一界面,按钮三进入界面三。。 如果使用ViewPager方法的话,那么我直接点击按钮三显示 界面三的的方法是调用哪一个呢? 我找不到

80,361

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧