代码如下:
package com.example.hrminiapp;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager2.widget.ViewPager2;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
ViewPager2 viewPager2;
int[] layouts;
ViewsSliderAdapter mAdapter;
boolean isLastPageSwiped = false;
int counterPageScroll = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
public void init() {
//3 screen slides created
layouts = new int[]{
R.layout.slide_screen_1,
R.layout.slide_screen_2,
R.layout.slide_screen_3,
};
viewPager2 = (ViewPager2) findViewById(R.id.view_paper);
mAdapter = new ViewsSliderAdapter(layouts);
viewPager2.setAdapter(mAdapter);
viewPager2.registerOnPageChangeCallback(pageChangeCallback);
}
ViewPager2.OnPageChangeCallback pageChangeCallback = new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
//swipe to left at the last page->jump to login page
//when click back button on emulator, 1 swipe to left to jump again, without this line, 2 more swipes
isLastPageSwiped = false ? true : false;
if (position == layouts.length - 1 && !isLastPageSwiped) {
if (counterPageScroll != 0) {
isLastPageSwiped = true;
//跳转到指定界面
launchLoginScreen();
}
counterPageScroll++;
} else {
isLastPageSwiped = false;
counterPageScroll = 0;
}
}
};
//jump to login page
private void launchLoginScreen() {
//跳转到指定界面,代码实现
}
}
感谢教授的帮助,通过逻辑锁解决了。在onPageScroll方法中,position代表当前第几页,从0开始整数递增。代码中一共有3个页面,所以layout.length长度为3,当position为2时表示最后一页,此时再从右向左划则跳转到launchLoginScreen指定页面。