android studio如何在fragment中实现图片轮播

慈云数据 7个月前 (05-14) 技术支持 44 0

我们需要有一个空白的fragment,以及与之对应的layout,还需要一个PagerAdapter的Java类

android studio如何在fragment中实现图片轮播
(图片来源网络,侵删)

这里面的example1,2,3,4,5均为示例图片,自己添加即可,放在mipmap文件夹中

这里面的point_normal,point_focus为两个小圆点图片,一个为灰色,一个为鲜艳颜色,也是放在mipmap文件夹中。

android studio如何在fragment中实现图片轮播
(图片来源网络,侵删)

这是fragment中的代码:

import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class HomeFragment extends Fragment {
    ViewPager homeVp;
    LinearLayout pointLayout;
    //声明图片数组
    int[]imgIds={R.mipmap.example1,R.mipmap.example2,R.mipmap.example3,R.mipmap.example4,R.mipmap.example5};
    //声明Viewpager的数据源
    List ivList;
    //声明管理指示器小圆点集合
    ListpointList;
    //完成定时装置,实现自动滑动的效果
    Handler handler=new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg){
            if (msg.what==1) {
                //获取当前viewpager显示的页面
                int currentItem= homeVp.getCurrentItem();
                //判断是否为最后一张,如果是,回到第一张
                if (currentItem==ivList.size()-1) {
                    homeVp.setCurrentItem(0);
                }else {
                    currentItem++;
                    homeVp.setCurrentItem(currentItem);
                }
                //形成循环
                handler.sendEmptyMessageDelayed(1,2500);
            }
        }
    };
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view= inflater.inflate(R.layout.fragment_home, container, false);
       initView(view);
       initPager();
       setVPListener();
        //延迟五秒钟发送一条消息,通知可以切换viewpager的图片了
        handler.sendEmptyMessageDelayed(1,5000);
        return view;
    }
    /*设置viewPager的监听器函数*/
    private void setVPListener() {
        homeVp.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
            @Override
            public void onPageSelected(int position) {
                for (int i = 0; i  
 

这是与fragment对应的layout中的布局代码:


    
    
    
这是HomePagerAdapter中的Java代码:
import android.content.Context;
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 HomePagerAdapter extends PagerAdapter {
    Context context;
    List imgList;
    public HomePagerAdapter(Context context, List imgList) {
        this.context = context;
        this.imgList = imgList;
    }
    @Override
    public int getCount() {
        return imgList.size();
    }
    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        ImageView imageView = imgList.get(position);
        container.addView(imageView);
        return imageView;
    }
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        ImageView imageView = imgList.get(position);
        container.removeView(imageView);
    }
}
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon