含义
实现界面自动跳转。
ViewPager
自定义部分较多。
效果图:
MAinActivity类:
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private List<ImageView> images=new ArrayList<>();//图片
private List<ImageView> icons=new ArrayList<>();//小图标
private MyAdapter myAdapter;
private ImageView i1,i2,i3;
private int page=0;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 1:
//轮播
viewPager.setCurrentItem(page++);
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myAdapter=new MyAdapter(images);
viewPager=findViewById(R.id.viewpager);
i1=findViewById(R.id.icon1);
i2=findViewById(R.id.icon2);
i3=findViewById(R.id.icon3);
//添加图片
final ImageView imageView = new ImageView(this);
imageView.setImageResource(R.mipmap.a);
images.add(imageView);
ImageView imageView2 = new ImageView(this);
imageView2.setImageResource(R.mipmap.b);
images.add(imageView2);
ImageView imageView3 = new ImageView(this);
imageView3.setImageResource(R.mipmap.c);
images.add(imageView3);
viewPager.setAdapter(myAdapter);
//小图标
icons.add(i1);
icons.add(i2);
icons.add(i3);
//设置监听 - 当图片切换的时候,小图标也跟着切换
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
for (int q = 0; q < icons.size(); q++) {
icons.get(q).setImageResource(R.mipmap.qp);
}
icons.get(i).setImageResource(R.mipmap.qq);
}
@Override
public void onPageSelected(int i) {
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
//轮播定时器
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
if (page!=images.size()) {
handler.sendEmptyMessage(1);
}else{
page=0;
handler.sendEmptyMessage(1);
}
}
},0,2000);
}
}
自定义适配器:
public class MyAdapter extends PagerAdapter {
private List<ImageView> images;//图片集合
public MyAdapter(List<ImageView> images) {
this.images = images;
}
@Override
public int getCount() {
return images.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view==o;
}
//根据下标加载
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
//添加
ImageView imageView = images.get(position);
container.addView(imageView);
return imageView;
}
//根据下标删除
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
//移除
container.removeView(images.get(position));
}
}
布局文件:
<LinearLayout 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:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="500dp">
</android.support.v4.view.ViewPager>
//小图标
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/icon1"
android:layout_weight="1"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/qq"/>
<ImageView
android:id="@+id/icon2"
android:layout_weight="1"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/qp"/>
<ImageView
android:id="@+id/icon3"
android:layout_weight="1"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/qp"/>
</LinearLayout>
</LinearLayout>
Banner
方便,很多部分不需要自定义。
效果图:
MainActivity类:
public class MainActivity extends AppCompatActivity {
private Banner banner;
private List<Integer> images;//存图片
private List<String> titles;//标题
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
banner=findViewById(R.id.banner);
//添加图片
images=new ArrayList<>();
images.add(R.mipmap.a);
images.add(R.mipmap.b);
images.add(R.mipmap.c);
//风格
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);
//把图片添加到banner内
banner.setImages(images);
banner.setImageLoader(new ImageLoader() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
imageView.setImageResource((Integer) path);
}
});
//设置是否轮播
banner.isAutoPlay(true);
//设置轮播时长
banner.setDelayTime(1000);
//启动
banner.start();
}
}
布局文件:
<LinearLayout 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=".MainActivity">
<com.youth.banner.Banner
android:layout_width="match_parent"
android:layout_height="280dp"
android:id="@+id/banner"></com.youth.banner.Banner>
</LinearLayout>