GuideActivity.java:
public class GuideActivity extends AppCompatActivity {
private List<View> list = new ArrayList<>();
private View view1,view2,view3;
private ImageView point1,point2,point3;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide);
initView();
}
private void initView() {
//获取viewpager对象
ViewPager viewPager = findViewById(R.id.viewPager);
point1 = findViewById(R.id.point1);
point2 = findViewById(R.id.point2);
point3 = findViewById(R.id.point3);
//设置默认小圆点
setPointImg(true,false,false);
/***准备数据源***/
//将布局文件转化为view对象
view1 = View.inflate(this, R.layout.guide_item1,null);
view2 = View.inflate(this, R.layout.guide_item2,null);
view3 = View.inflate(this, R.layout.guide_item3,null);
//向list中添加view对象
list.add(view1);
list.add(view2);
list.add(view3);
//绑定适配器
GuideAdapter adapter = new GuideAdapter();
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
//监听页面的位置改变小圆点
@Override
public void onPageSelected(int position) {
switch (position) {
case 0:
setPointImg(true,false,false);
break;
case 1:
setPointImg(false,true,false);
break;
case 2:
setPointImg(false,false,true);
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
class GuideAdapter extends PagerAdapter {
//获取子页面数量
@Override
public int getCount() {
return list.size();
}
//判断view对象是否与instantiateItem方法返回的Object有联系
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
//预加载view对象
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
container.addView(list.get(position));
return list.get(position);
}
//销毁view对象
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(list.get(position));
}
}
//设置小圆点变化效果
private void setPointImg(boolean isCheck1, boolean isCheck2, boolean isCheck3) {
if (isCheck1) {
point1.setImageResource(R.drawable.point_on);
} else {
point1.setImageResource(R.drawable.point_off);
}
if (isCheck2) {
point2.setImageResource(R.drawable.point_on);
} else {
point2.setImageResource(R.drawable.point_off);
}
if (isCheck3) {
point3.setImageResource(R.drawable.point_on);
} else {
point3.setImageResource(R.drawable.point_off);
}
}
}
activity_guide.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="640dp">
</android.support.v4.view.ViewPager>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<ImageView
android:layout_width="10dp"
android:layout_height="10dp"
android:src="@drawable/point_off"
android:id="@+id/point1"
android:layout_marginRight="5dp"
/>
<ImageView
android:layout_width="10dp"
android:layout_height="10dp"
android:src="@drawable/point_off"
android:id="@+id/point2"
android:layout_marginRight="5dp"
/>
<ImageView
android:layout_width="10dp"
android:layout_height="10dp"
android:src="@drawable/point_off"
android:id="@+id/point3"
/>
</LinearLayout>
</LinearLayout>
styles.xml:
<resources>
//设置全屏主题
<style name="FullScreenTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
</resources>
guide_item.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/guidelogo1"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:text="热点推荐"
android:layout_marginTop="20dp"/>
</LinearLayout>
效果图: