Code Monkey home page Code Monkey logo

banner's People

Contributors

wenchaosong avatar ztftrue avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

banner's Issues

banner引入xml布局里面报错

包名都写对了,也跟着步骤来了。
Caused by: android.view.InflateException: Binary XML file line #139: Error inflating class com.ms.banner.Banner

关于卡片模式下只有一个Item时的优化

如果list只有一项,显示的时候左右都会多出一点,给人还有多余项目的错觉,所以在BannerPagerAdapter的getCount方法中最好做出如下判断:
@OverRide
public int getCount() {
if(mDatas.size() == 1){
return mDatas.size();
}else {
return mDatas.size() + 2;
}

    }

这样就没有问题了。

依赖报错

ERROR: Failed to resolve: com.github.wenchaosong:Banner:2.3.7
Show in Project Structure dialog
Affected Modules: app

修改绘制顺序问题

你好,多屏显示的时候,我想修改viewpager的绘制顺序已到达中间的卡片是显示在两侧卡片之上,但是BannerViewPager中的getCurrentItem()返回2000多

图片消失

我现在tab+viewpager+fragment,第一个tab下顶部有banner(本框架),然后我一直切换tab项,再切换回第一个tab,banner里的轮播图会消失

文档最好加上混淆规则

glide 的混淆代码

-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;
}

banner 的混淆代码

-keep class com.ms.banner.** {
*;
}

【建议】实现LifecycleObserver

在Banner中实现LifecycleObserver接口,这样的话使用AppCompatActivity就不需要手动在onResume和onPause中去satr和stop了。只需要lifecycle.addObserver(banner)
代码

class MyBanner : Banner, LifecycleObserver {
    constructor(context: Context?) : super(context)
    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    fun onResume() {
        startAutoPlay()
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    fun onPause() {
        stopAutoPlay()
    }

}

轮播recycleView,默认先显示的是posiion1 不是0

如题:
List<List> splitList = CollectionUtils.getSplitList(strings, 8);
bannerPingpai.setBannerStyle(BannerConfig.NOT_INDICATOR);
bannerPingpai.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@OverRide
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            ToastUitl.showShort(position + "");
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });
    bannerPingpai.setPages(splitList, new HolderCreator<BannerViewHolder>() {
        @Override
        public BannerViewHolder createViewHolder() {
            return new CustomViewHolder();
        }
    }).start();

class CustomViewHolder implements BannerViewHolder<List> {

    @BindView(R.id.recyclerView)
    RecyclerView mRecyclerView;


    @Override
    public View createView(Context context) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_wholesale_pingpai_layout, null);
        ButterKnife.bind(this, view);
        return view;
    }

    @Override
    public void onBind(Context context, int position, List<String> data) {
        /**/ 数据绑定,这里先加载的是大list的第二个元素**
        PingPaiHotAdapter mPingPaiHotAdapter = new PingPaiHotAdapter(data);
        mRecyclerView.setLayoutManager(new GridLayoutManager(getContext(), 4));
        mRecyclerView.setAdapter(mPingPaiHotAdapter);
        mPingPaiHotAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
                String item = mPingPaiHotAdapter.getItem(position);
                ToastUitl.showShort(item);
            }
        });
    }
}

性能问题

hello,无限轮播的时候,一直调用holder的createView,里面不断通过LayoutInflater填充生成View,这会有性能问题吧,感觉holder没起到复用的作用。

怎么设置指示器大小

用资源图片作为指示器时,怎么设置指示器大小。
同时怎么设置指示器和banner的间距,让其距离banner图片较远。
banner.setIndicatorRes(R.drawable.banner_indicator, R.drawable.banner_indicator_selected);

在RecyclerView中下拉刷新会报错

在RecyclerView中下拉刷新会报错
错误如下:
java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 1000, found: 0 Pager id: cn.zhouheiya.app:id/bannerViewPager Pager class: class com.ms.banner.view.BannerViewPager Problematic adapter: class com.ms.banner.Banner$BannerPagerAdapter
at android.support.v4.view.ViewPager.populate(ViewPager.java:1135)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1084)
at android.support.v4.view.ViewPager$3.run(ViewPager.java:267)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1065)
at android.view.Choreographer.doCallbacks(Choreographer.java:877)
at android.view.Choreographer.doFrame(Choreographer.java:805)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1051)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6806)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:522)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

我是这样使用的
image
image

求指教啊 大佬

同学你好,有个问题想问一下

这个banner使用挺好的 有一个问题,就是我设置banner图片为圆角图片了,根布局使用cardView实现的,banner切换滑动的时候,圆角careView就变了直角,请问大概是什么原因呢

java.lang.IllegalStateException

java.lang.IllegalStateException

The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 7, found: 2 Pager id: xxx.xxx.xxx:id/bannerViewPager Pager class: class com.ms.banner.view.BannerViewPager Problematic adapter: class com.ms.banner.Banner$BannerPagerAdapter

指示器为数字时出现数组下标越界

在 Banner 类中的 onPageSelected(int position) 函数中,与 youth5201314 的比较少了一下两行
...
if (position == 0) position = count;
if (position > count) position = 1;
...
导致出现数组下标越界

圆角轮播设置问题

一个Activity中多个fragment,其中一个fragment的轮播图设置了圆角,其他的也自动变为圆角,不能设置为无圆角效果。老铁们,这个是什么问题?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.