Я реализовал вводные слайды, используя механизм разбиения на страницы (интерфейс OnPageChangeListener).
На страницах представлены простые рисованные изображения:
R.drawable.intro_slide_0
R.drawable.intro_slide_1
R.drawable.intro_slide_2
То, что я хотел, - это автоматически переключаться на следующее действие, когда отображается последняя страница.
Чтобы достичь этого, мне нужно было добавить ноль (идентификатор ресурса 0). Когда отображается эта пустая страница, я переключаюсь на следующую активность.
public class FirstScreenActivity extends AppCompatActivity implements OnPageChangeListener {
private ImageView[] dots;
private int dotsCount;
private ViewPager intro_images;
FirstScreenAdapter mAdapter;
private int[] mImageResources;
private boolean mIsRateMeConfigured;
private LinearLayout pager_indicator;
public View onCreateView(View view, String str, Context context, AttributeSet attributeSet) {
return super.onCreateView(view, str, context, attributeSet);
}
public View onCreateView(String str, Context context, AttributeSet attributeSet) {
return super.onCreateView(str, context, attributeSet);
}
public FirstScreenActivity() {
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView((int) R.layout.activity_first_screen);
//The pages to be drawn. The last one is the one that leads to the next activity
mImageResources = new int[]{R.drawable.intro_slide_0, R.drawable.intro_slide_1, R.drawable.intro_slide_2, 0};
intro_images = (ViewPager) findViewById(R.id.pager);
pager_indicator = (LinearLayout) findViewById(R.id.count);
mIsRateMeConfigured = getIntent().getBooleanExtra("isRateMeConfigured", false);
mAdapter = new FirstScreenAdapter(FirstScreenActivity.this, mImageResources, mIsRateMeConfigured, mSlidesCase);
intro_images.setAdapter(mAdapter);
intro_images.setCurrentItem(0);
intro_images.setOnPageChangeListener(this);
setUiPageView();
}
private void setUiPageView() {
dotsCount = mAdapter.getCount();
dots = new ImageView[dotsCount];
for (int i = 0; i < dotsCount; i++) {
dots[i] = new ImageView(this);
dots[i].setImageDrawable(getResources().getDrawable(R.drawable.rectengle_nonselect));
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(4, 0, 4, 0);
pager_indicator.addView(dots[i], params);
}
dots[0].setImageDrawable(getResources().getDrawable(R.drawable.rectengle_select));
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for (int i = 0; i < dotsCount; i++) {
dots[i].setImageDrawable(getResources().getDrawable(R.drawable.rectengle_nonselect));
}
dots[position].setImageDrawable(getResources().getDrawable(R.drawable.rectengle_select));
//When the last blank page is shown -> switch to the next activity
if(position == 3) {
Intent intent = new Intent(FirstScreenActivity.this, NextActivity.class);
FirstScreenActivity.this.startActivity(intent);
FirstScreenActivity.this.finish();
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
@Override
public void onBackPressed() {
}
}
Все отлично работает.
Но я хочу не показывать пустую страницу и по возможности переходить непосредственно к следующему занятию.
Есть какие-нибудь подсказки для такого улучшения?