1. 程式人生 > >ViewPager滑動到最後一頁繼續滑動

ViewPager滑動到最後一頁繼續滑動

package demo.com.viewpagerdemo;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener { private ViewPager viewPager; private List<MyFragment> fragmentList; private MyFragmentAdapter adapter; private boolean isPress;//手指是否觸控式螢幕幕
private boolean isOpen;//是否開啟下一個activity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager = (ViewPager) findViewById(R.id.viewPager); fragmentList = new ArrayList<>(); for (int i = 1
; i < 6; i++) { MyFragment fragment = new MyFragment(); fragment.setText("第" + i + "頁"); fragmentList.add(fragment); } adapter = new MyFragmentAdapter(getSupportFragmentManager()); viewPager.setAdapter(adapter); viewPager.addOnPageChangeListener(this); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { if (fragmentList.size() - 1 == position && isPress && positionOffsetPixels == 0 && !isOpen) { isOpen = true;//防止多次新增activity Intent intent = new Intent(this, SecondActivity.class); // startActivity(intent); startActivityForResult(intent,1); } } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { if (state == ViewPager.SCROLL_STATE_DRAGGING) { isPress = true; } else {//必須寫else,不然的話,倒數第二頁就開始自動跳轉了 isPress = false; } } class MyFragmentAdapter extends FragmentPagerAdapter { public MyFragmentAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); isOpen=false; } }