Android新特性页面之ViewPager拖拽到最后一页再拖拽打开其他Activity(三种方法)
android新特性页面,ViewPager拖拽到最后一页再拖拽打开其他Activity.实现的方式有很多,效果比较好的就是到了最后一页再拖拽出现禁止蓝色条时再跳转activity
方式一:拿到ViewPager的边界条EdgeEffectCompat,判断是否到了边界(获取EdgeEffectCompat通过反射,方法来自网络最后边会给出原文)
/**
*初始化view
*/
privatevoidinitView(){
pager=(ViewPager)findViewById(R.id.help_viewpages);
try{
FieldleftEdgeField=pager.getClass().getDeclaredField("mLeftEdge");
FieldrightEdgeField=pager.getClass().getDeclaredField("mRightEdge");
if(leftEdgeField!=null&&rightEdgeField!=null){
leftEdgeField.setAccessible(true);
rightEdgeField.setAccessible(true);
leftEdge=(EdgeEffectCompat)leftEdgeField.get(pager);
rightEdge=(EdgeEffectCompat)rightEdgeField.get(pager);
}
}catch(Exceptione){
e.printStackTrace();
}
pager.setOnPageChangeListener(newOnPageChangeListener(){
@Override
publicvoidonPageScrollStateChanged(intarg0){
if(rightEdge!=null&&!rightEdge.isFinished()){//到了最后一张并且还继续拖动,出现蓝色限制边条了
startActivity(newIntent(HelpActivity.this,MainActivity.class));
HelpActivity.this.finish();
}
}
@Override
publicvoidonPageSelected(intarg0){
}
@Override
publicvoidonPageScrolled(intarg0,floatarg1,intarg2){
}
});
方法二:也是在OnPageChangeListener里判断当前滚动的页数是不是最后一页
pager.setOnPageChangeListener(newOnPageChangeListener(){
@Override
publicvoidonPageSelected(intarg0){
}
@Override
publicvoidonPageScrolled(intarg0,floatarg1,intarg2){
}
@Override
publicvoidonPageScrollStateChanged(intarg0){
//判断当前页数是否==总页数
}
});
在此小编推荐方法一,方法二需要判断PageScrollStateChanged(intarg0)的滚动状态,也可以实现一样的效果
转载高手ViewPager在拖拽到左边和右边的时候,禁止显示黄色或者蓝色的渐变图片的解决方法(以备自己以后查阅)
packagecom.example.viewpagertest;
importjava.lang.reflect.Field;
importjava.util.ArrayList;
importjava.util.List;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.support.v4.view.PagerAdapter;
importandroid.support.v4.view.ViewPager;
importandroid.support.v4.view.ViewPager.OnPageChangeListener;
importandroid.support.v4.widget.EdgeEffectCompat;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.ImageView;
publicclassMainActivityextendsActivityimplementsOnPageChangeListener{
privateViewPagerviewpager;
privateList<ImageView>views;
privateEdgeEffectCompatleftEdge;
privateEdgeEffectCompatrightEdge;
privateint[]ids={R.drawable.iframe_4,R.drawable.iframe_5,R.drawable.iframe_6,R.drawable.iframe_7,R.drawable.iframe_8};
privateMyAdapteradapter;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
privatevoidinitView(){
viewpager=(ViewPager)findViewById(R.id.viewpager);
initViewPager();
initData();
}
privatevoidinitData(){
views=newArrayList<ImageView>();
for(inti=0;i<ids.length;i++){
ImageViewiv=newImageView(this);
iv.setImageResource(ids[i]);
views.add(iv);
}
adapter=newMyAdapter();
viewpager.setAdapter(adapter);
viewpager.setOnPageChangeListener(this);
}
classMyAdapterextendsPagerAdapter{
@Override
publicintgetCount(){
returnviews.size();
}
@Override
publicbooleanisViewFromObject(Viewarg0,Objectarg1){
returnarg0==arg1;
}
@Override
publicvoiddestroyItem(ViewGroupcontainer,intposition,Objectobject){
((ViewPager)container).removeView(views.get(position));
}
@Override
publicObjectinstantiateItem(ViewGroupcontainer,intposition){
((ViewPager)container).addView(views.get(position));
returnviews.get(position);
}
}
@Override
publicvoidonPageScrollStateChanged(intarg0){
}
@Override
publicvoidonPageScrolled(intarg0,floatarg1,intarg2){
if(leftEdge!=null&&rightEdge!=null){
leftEdge.finish();
rightEdge.finish();
leftEdge.setSize(0,0);
rightEdge.setSize(0,0);
}
}
@Override
publicvoidonPageSelected(intarg0){
}
privatevoidinitViewPager(){
try{
FieldleftEdgeField=viewpager.getClass().getDeclaredField("mLeftEdge");
FieldrightEdgeField=viewpager.getClass().getDeclaredField("mRightEdge");
if(leftEdgeField!=null&&rightEdgeField!=null){
leftEdgeField.setAccessible(true);
rightEdgeField.setAccessible(true);
leftEdge=(EdgeEffectCompat)leftEdgeField.get(viewpager);
rightEdge=(EdgeEffectCompat)rightEdgeField.get(viewpager);
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
以上所述是小编给大家介绍的Android新特性页面之ViewPager拖拽到最后一页再拖拽打开其他Activity(三种方法),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!