美文网首页
ViewPager的使用

ViewPager的使用

作者: 君袅 | 来源:发表于2019-02-21 23:28 被阅读0次

1.使用ViewPager静态绑定xml

            //1.获取控件
            vp = (ViewPager) findViewById(R.id.vp);

            //2.创建数据源(静态布局:模拟开机引导页面)
            list = new ArrayList<View>();
            View view1 = LayoutInflater.from(this).inflate(R.layout.layout_item1, null);
            View view2 = LayoutInflater.from(this).inflate(R.layout.layout_item2, null);
            View view3 = LayoutInflater.from(this).inflate(R.layout.layout_item3, null);
            list.add(view1);
            list.add(view2);
            list.add(view3);

            //3.设置适配器
            adapter = new MyAdapter(this,list);
            vp.setAdapter(adapter);

        
            //设置默认选中位置
            vp.setCurrentItem(list.size()-1);
            
            //设置滑动监听事件
            vp.addOnPageChangeListener(this);
        }

        @Override
        public void onPageScrolled(int i, float v, int i1) {
            //滑动位置
        }

        @Override
        public void onPageSelected(int i) {
            //当前显示位置
            Toast.makeText(this,"显示"+i+"页面",Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onPageScrollStateChanged(int i) {
            //滑动状态
  1. 适配器
    public class MyAdapter extends PagerAdapter {
    private Context context;
    private ArrayList<View> list;

    public MyAdapter(Context context, ArrayList<View> list) {
        this.context = context;
        this.list = list;
    }

    //返回长度
    @Override
    public int getCount() {
        return list.size();
    }

    //判断视图
    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
        return view == o;
    }

    //初始化视图
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        //将对应view添加到容器中
        container.addView(list.get(position));
        //返回集合对应的View对象
        return list.get(position);
    }

    //销毁视图
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        //容器中移除视图View
        container.removeView(list.get(position));
    }
    //绑定tablayout
        @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return title.get(position);
    }

3.使用ViewPager绑定动态xml(viewpager的轮播图)

public class Main2Activity extends AppCompatActivity {

    private ViewPager vp;
    private int a=1;
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            if(msg.what==1){
               if(a>0){
                   ++a;
                   vp.setCurrentItem(a);
                   Logger.logD("aaa",a+"");
                   handler.sendEmptyMessageDelayed(1,2000);
               }
            }

        }
    };
    private ViewPagerAdapter viewPagerAdapter;
    private ArrayList<String> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        initView();
    }

    private void initView() {
        vp = (ViewPager) findViewById(R.id.vp);
        list = new ArrayList<>();
        list.add("https://ws1.sinaimg.cn/large/0065oQSqly1g0ajj4h6ndj30sg11xdmj.jpg");
        list.add("https://ws1.sinaimg.cn/large/0065oQSqly1g04lsmmadlj31221vowz7.jpg");
        //  handler.sendEmptyMessageDelayed(1, 1000);
        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(this,list);
        vp.setAdapter(viewPagerAdapter);
        handler.sendEmptyMessageDelayed(1,2000);
    }
}

适配器

public class ViewPagerAdapter extends PagerAdapter {
    private final Context context;
    private final ArrayList<String> list;
    public ViewPagerAdapter(Context context, ArrayList<String> list) {
        this.context = context;
        this.list = list;
    }

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

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

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        
        View inflate1 = LayoutInflater.from(context).inflate(R.layout.layout, null);
        ImageView img = inflate1.findViewById(R.id.img);
        container.addView(inflate1);
        Glide.with(context).load(R.mipmap.ic_launcher).into(img);

        return container.getChildAt();
    }

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

ViewPager的加载图片(可滑动),通过对fragment的复用加载多张图片

public class BlankFragment2 extends Fragment {
    private ViewPager vp;

    public BlankFragment2() {
        // Required empty public constructor
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View inflate = inflater.inflate(R.layout.fragment_blank_fragment2, container, false);
        initView(inflate);
        return inflate;
    }

    private void initView(View inflate) {
        vp = (ViewPager) inflate.findViewById(R.id.vp);

        ArrayList<bean.ResultsBean> mList = MyAdapter.mList;

        ArrayList<Fragment> list = new ArrayList<>();
        for (int i = 0; i < mList.size(); i++) {
            String url = mList.get(i).getUrl();
            list.add(new BlankFragment(url, i, mList.size()));
        }
        Adapter adapter = new Adapter(getChildFragmentManager(), list);
        vp.setAdapter(adapter);

    }
}

这是通过复用fragment吧图片地址,发送到另fragment中

@SuppressLint("ValidFragment")
public class BlankFragment extends Fragment {
    private String Murl;
    private int a;
    private int c;
    private View view;
    private ImageView mImg1;
    /**
     * 1
     */
    private TextView mXian;
    /**
     * 1
     */
    private TextView mZong;
    
    @SuppressLint("ValidFragment")
    public BlankFragment(String url, int i,int b) {
        // Required empty public constructor
        Murl=url;
        a=i;
        c=b;
    }
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View inflate = inflater.inflate(R.layout.fragment_blank, container, false);
        initView(inflate);
        return inflate;
    }

    private void initView(View inflate) {
        mImg1 = (ImageView) inflate.findViewById(R.id.img1);
        mXian = (TextView) inflate.findViewById(R.id.xian);
        mZong = (TextView) inflate.findViewById(R.id.zong);
        Glide.with(getContext()).load(Murl).into(mImg1);
        mXian.setText(a+"");
        mZong.setText(c+"");
    }
}

收到图片地址进行加载

相关文章

网友评论

      本文标题:ViewPager的使用

      本文链接:https://www.haomeiwen.com/subject/bebjyqtx.html