1.MainActivity.java中

int count=0;
int olddotindex=0;
int images[]={
        R.drawable.ic_launcher_background,
        R.drawable.ic_launcher_background,
        R.drawable.ic_launcher_background
                };
//网络图片定义
String url="http://192.168.x.x/wy/img/";
String netImages[]={"flow.jpg","img_1.jpg","img_2.jpg"};

ArrayList<View> dots;
LinearLayout la;
ArrayList<ImageView> imagesList;
ViewPager pager;
Handler mHandler=new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        pager.setCurrentItem(count);
        dots.get(olddotindex).setBackgroundResource(R.drawable.dot_nomal);
        dots.get(count).setBackgroundResource(R.drawable.dot_focus);

        olddotindex=count;
    }
};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }

    private void init() {
    pager=findViewById(R.id.viewpager);
    la=findViewById(R.id.yuandian);
//    获取图片,配置给Viewpager
        getImageViewList();
//        获得小圆点
        getDotList();
//        设置第一个圆点为选中状态
        dots.get(0).setBackgroundResource(R.drawable.dot_focus);
        dots.get(1).setBackgroundResource(R.drawable.dot_nomal);
        dots.get(2).setBackgroundResource(R.drawable.dot_nomal);
        pager.setAdapter(new MyViewPageAdapter());
        pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {

            }

            @Override
            public void onPageSelected(int i) {
            if (i==0){
                dots.get(0).setBackgroundResource(R.drawable.dot_focus);
                dots.get(1).setBackgroundResource(R.drawable.dot_nomal);
                dots.get(2).setBackgroundResource(R.drawable.dot_nomal);
            }
            if (i==1){
                dots.get(0).setBackgroundResource(R.drawable.dot_nomal);
                dots.get(1).setBackgroundResource(R.drawable.dot_focus);
                dots.get(2).setBackgroundResource(R.drawable.dot_nomal);
            }
            if (i==2){
                dots.get(0).setBackgroundResource(R.drawable.dot_nomal);
                dots.get(1).setBackgroundResource(R.drawable.dot_nomal);
                dots.get(2).setBackgroundResource(R.drawable.dot_focus);
            }
            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });
//        自动滑动效果
        Timer timer=new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                count++;
                if (count==3){
                    count=0;
                }
                mHandler.sendEmptyMessage(count);
            }
        },3000,2000);
    }

    private void getDotList() {
        dots=new ArrayList<>();
        for (int i=0;i<images.length;i++){
//            加载布局
            View view= LayoutInflater.from(this).inflate(R.layout.dot,null);
//            得到布局中的dot组件
            View dot=view.findViewById(R.id.dotview);
            dots.add(dot);
            la.addView(view);
        }
    }
//获得网络图片,配置给ViewPage
    private void getImageViewList() {
        imagesList=new ArrayList<>();
      for (int i=0;i<images.length;i++){
          ImageView imageView=new ImageView(this);
          imageView.setScaleType(ImageView.ScaleType.FIT_XY);
          imageView.setImageResource(images[i]);
          imagesList.add(imageView);
//          若为网络图片

//          Glide.with(MainActivity.this).load(url+netImages[i]).into(imageView);
//          Log.i("TAG---->",url+netImages[i]);
//          imagesList.add(imageView);
      }
    }
    class MyViewPageAdapter extends PagerAdapter{

        @Override
        public int getCount() {
            return imagesList.size();
        }

        @Override
        public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
            return view==o;
        }

        @Override
        public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
            ImageView im=imagesList.get(position);
            container.removeView(im);
        }

        @NonNull
        @Override
        public Object instantiateItem(@NonNull ViewGroup container, int position) {
            container.addView(imagesList.get(position));
            return imagesList.get(position);
        }
    }

}

2.在activity_main.xml中

<?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=".MainActivity">

   <android.support.v4.view.ViewPager
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:id="@+id/viewpager"
       >

   </android.support.v4.view.ViewPager>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/yuandian"
        android:gravity="center"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        >

    </LinearLayout>

</RelativeLayout>

3.定义小圆点的布局文件(dot.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
<View
    android:layout_width="8dp"
    android:layout_height="8dp"
    android:layout_margin="10dp"
    android:id="@+id/dotview"
    />
</LinearLayout>

4.图片未滑过时小圆点(dot_nomal.xml)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#fff"/>
    <corners android:radius="8dip"/>
</shape>

5.图片滑过时的小圆点(dot_nomal.xml)

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#f00"/>
    <corners android:radius="8dip"/>
</shape>

6.若使用的是网络加载的图片,别忘了在guild.gradle中添加glide包

implementation 'com.github.bumptech.glide:glide:4.9.0'

在Androidmanifest.xml中添加网络权限

<uses-permission android:name="android.permission.INTERNET"/>

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐