美文网首页
使用Android Banner来设置一个轮播图

使用Android Banner来设置一个轮播图

作者: 晨曦诗雨 | 来源:发表于2019-01-11 15:12 被阅读0次

    使用Banner需要引入依赖

     //Banner
        compile 'com.youth.banner:banner:1.4.10'
        //Glide框架
        compile "com.github.bumptech.glide:glide:4.6.1"
    

    首先来设值xml文件

        <com.youth.banner.Banner 
                            xmlns:app="http://schemas.android.com/apk/res-auto"
                            android:id="@+id/banner1"
                            android:layout_width="match_parent"
                            android:layout_height="180dp"
                            app:indicator_height="8dp"
                            app:indicator_margin="4dp"
                            app:indicator_width="8dp" />
    

    其次就是我们的java代码

      /*轮播图*/
        private Banner banner;
       private ArrayList<String> list_path = new ArrayList<>();
        private ArrayList<String> list_title = new ArrayList<>();
    

    这个是用来设置轮播图的标题和图片集合的方法

    private void initData() {
            if (inPathImg != null && inPathImg != "") {
                list_path.add(inPathImg);
            } else {
                list_path.add(R.drawable.no_image+"");
            }
            if (outPathImg != null && outPathImg != "") {
                list_path.add(outPathImg);
            } else {
                list_path.add(R.drawable.no_image+"");
            }
    
            list_title.add("进车图片");
            list_title.add("出车图片");
        }
    

    需要一个刷新图片的类GlideImageLoader .java

    public class GlideImageLoader extends ImageLoader {
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            //具体方法内容自己去选择,次方法是为了减少banner过多的依赖第三方包,所以将这个权限开放给使用者去选择
            Glide.with(context.getApplicationContext())
                    .load(path)
                    .into(imageView);
        }
        @Override
        public ImageView createImageView(Context context) {
    
           ImageView imageView = new ImageView(context);
            imageView.setMaxWidth(100);
            return imageView;
        }
    }
    

    设置banner的初始化方法

     private void initView() {
            banner = (Banner) view.findViewById(R.id.banner1);
            //设置banner样式
            banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
            //设置banner动画效果
            banner.setBannerAnimation(Transformer.DepthPage);
            banner.isAutoPlay(false);
            //设置轮播间隔时间
            banner.setDelayTime(3000);
            banner.setBannerTitles(list_title);
            //简单使用
            banner.setImages(list_path)
                    .setImageLoader(new GlideImageLoader())
                    .setOnBannerListener(this)
                    .start();
    
        }
    

    然后在onCreateView方法里调用 initView()和initData方法就可以啦~~~
    设置轮播图的小圆点 定义适配器等

      /*定义的适配器*/
        public class ViewPagerAdapter extends PagerAdapter {
    
            @Override
            public int getCount() {
                return images.size();
            }
    
            @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                return arg0 == arg1;
            }
    
            @Override
            public void destroyItem(ViewGroup view, int position, Object object) {
                // TODO Auto-generated method stub
    //          super.destroyItem(container, position, object);
    //          view.removeView(view.getChildAt(position));
    //          view.removeViewAt(position);
                view.removeView(images.get(position));
            }
    
            @Override
            public Object instantiateItem(ViewGroup view, int position) {
                // TODO Auto-generated method stub
                view.addView(images.get(position));
                return images.get(position);
            }
        }
    
    
        /**
         * 接收子线程传递过来的数据
         */
        private Handler mHandler = new Handler() {
            public void handleMessage(android.os.Message msg) {
                mViewPaper.setCurrentItem(currentItem);
            }
    
            ;
        };
    
        @Override
        public void onStop() {
            // TODO Auto-generated method stub
            super.onStop();
            if (scheduledExecutorService != null) {
                scheduledExecutorService.shutdown();
                scheduledExecutorService = null;
            }
        }
    

    也可以给设置的图片设置点击事件

     @Override
        public void OnBannerClick(int position) {
    
            Toast.makeText(getContext(), "你点了第" + (position + 1) + "张轮播图", Toast.LENGTH_SHORT).show();
    
    
        }
    

    相关文章

      网友评论

          本文标题:使用Android Banner来设置一个轮播图

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