ViewPager实现Android轮播图

Android轮播图

1.前言

其实做这个也是无奈之举,毕竟自己心在java,但别人给你安排任务你也不能不做啊。

2.直接上代码

可以直接在AS上运行;

Mainactivity.java

package com.example.myapplication1;

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;

import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class MainActivity extends AppCompatActivity {

private ViewPager loopPager;
private LooperPagerAdapter looperPagerAdapter;
private static List<Integer>spic = new ArrayList<>();

private Handler handler;

static {
spic.add(R.drawable.ic_launcher_1);
spic.add(R.drawable.ic_launcher_2);
spic.add(R.drawable.ic_launcher_3);
spic.add(R.drawable.ic_launcher_4);
}

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        handler = new Handler();

//        Random random = new Random();
//        for (int i = 0; i < 5; i++) {
//            colos.add(Color.argb(random.nextInt(255),random.nextInt(255),random.nextInt(255),random.nextInt(255)));
//
//
//        }
//        looperPagerAdapter.setData(colos);
//        looperPagerAdapter.notifyDataSetChanged();

    }


    public void onAttachedToWindow(){
    super.onAttachedToWindow();
    handler.post(looperTask);


    }
    public void onDetachedFromWindow(){
    super.onDetachedFromWindow();
    handler.removeCallbacks(looperTask);
    }

    private Runnable looperTask = new Runnable() {
        @Override
        public void run() {
            int currentItem = loopPager.getCurrentItem();
            loopPager.setCurrentItem(++currentItem,true);
            handler.postDelayed(this,2000);
        }
    };

private void initView(){

    //找到这个控件
        loopPager = this.findViewById(R.id.loop_pager);

        //2.给这个控件设置适配器
        looperPagerAdapter = new LooperPagerAdapter();
        looperPagerAdapter.setData(spic);
        loopPager.setAdapter(looperPagerAdapter);

        loopPager.setCurrentItem(looperPagerAdapter.getDataRealSize()*100,false);


}

LooperPagerAdapter.java

package com.example.myapplication1;

        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.ImageView;

        import androidx.annotation.NonNull;
        import androidx.viewpager.widget.PagerAdapter;

        import java.util.List;

public class LooperPagerAdapter extends PagerAdapter {

    private List<Integer>pics= null;
    @Override
    public int getCount() {
        //基本上是无限循环
        if (pics!=null){
            return Integer.MAX_VALUE;
        }
        return 0;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        int realPosition = position%pics.size();
        //getContext返回视图运行的上下文,通过该上下文可以访问当前主题、资源等。
        ImageView imageView = new ImageView(container.getContext());
        //设置视图的资源
        imageView.setImageResource(pics.get(realPosition));
        container.addView(imageView);
        return imageView;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }

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

    public void setData(List<Integer>colos){
        this.pics = colos;

    }
    public int getDataRealSize(){
        if (pics!=null){
            return pics.size();
        }
        return 0;
    }
}

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">

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/loop_pager"
        android:layout_width="match_parent"
        android:layout_height="200dp"/>



</RelativeLayout>

这是是用viewpager实现的,实现的方法有很多,其实用别人的库更方便

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值