效果:翻动图片,指示圆点变色,最后一页显示开始进入主界面按钮
指示器
guide_selector
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/blue"/>
<size android:width="20dp" android:height="20dp"/>
</shape>
guide_white
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/white"/>
<size android:width="20dp" android:height="20dp"/>
</shape>
引导页布局,使用ViewPager实现图片翻页
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.GuideActivity">
<androidx.viewpager.widget.ViewPager
android:id="@+id/guide_vp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:id="@+id/guide_ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="100dp"
android:orientation="horizontal" />
<Button
android:id="@+id/btn_start"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_above="@+id/guide_ll"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp"
android:background="#2990E3"
android:text="开始体验"
android:textColor="@color/white"
android:visibility="gone" />
</RelativeLayout>
public class GuideActivity extends AppCompatActivity {
private ViewPager mVp;
private Button mBtn;
private int[] imgs = {R.mipmap.y1, R.mipmap.y2, R.mipmap.y3, R.mipmap.y4};
private GuideAdapter mAdapter;
private ImageView[] dotViews;
private LinearLayout mGuidelay;
private List<ImageView> mImageViews;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide);
mVp = findViewById(R.id.guide_vp);
mBtn = findViewById(R.id.btn_start);
mGuidelay = findViewById(R.id.guide_ll);
//初始化图片
initImgs();
//初始化底部圆点指示器
initDots();
//初始化适配器
mAdapter = new GuideAdapter(mImageViews);
mVp.setAdapter(mAdapter);
onclick();
}
private void onclick() {
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//省略隐私政策弹窗。。。
//记录第一次已点击开始体验,下次进入直接闪屏界面
SharedPreferences.Editor editor = getSharedPreferences("data", MODE_PRIVATE).edit();
editor.putString("isFirst", "1");
editor.commit();
Intent intent = new Intent(GuideActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
});
mVp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//更改指示器
for (int i = 0; i < dotViews.length; i++) {
if (position == i) {
dotViews[i].setImageResource(R.drawable.guide_selector);
} else {
dotViews[i].setImageResource(R.drawable.guide_white);
}
if (position == dotViews.length - 1) {
//显示开始按钮
mBtn.setVisibility(View.VISIBLE);
} else {
mBtn.setVisibility(View.GONE);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void initDots() {
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(20, 20);
layoutParams.setMargins(10,0,10,0);
dotViews=new ImageView[imgs.length];
for (int i = 0; i <mImageViews.size() ; i++) {
ImageView imageView = new ImageView(this);
imageView.setLayoutParams(layoutParams);
imageView.setImageResource(R.drawable.guide_white);
if (i== 0){
imageView.setImageResource(R.drawable.guide_selector);
}else{
imageView.setImageResource(R.drawable.guide_white);
}
dotViews[i]= imageView;
final int finalI = i;
dotViews[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mVp.setCurrentItem(finalI);
}
});
mGuidelay.addView(imageView);
}
}
private void initImgs() {
ViewPager.LayoutParams params = new ViewPager.LayoutParams();
mImageViews = new ArrayList<>();
for (int i = 0; i <imgs.length; i++) {
ImageView imageView = new ImageView(this);
imageView.setLayoutParams(params);
imageView.setImageResource(imgs[i]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
mImageViews.add(imageView);
}
}
}