Coder Social home page Coder Social logo

hbanner's People

Contributors

lakehubo 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

hbanner's Issues

如果想在View里添加HBanner,ViewPager要如何创建

直接用代码new完添加 报
java.lang.IllegalArgumentException: your viewPager has not attached,it will can not get the handler!
at com.lake.hbanner.HBannerImp.checkViewAttached(HBannerImp.java:460)
at com.lake.hbanner.HBannerImp.(HBannerImp.java:97)
at com.lake.hbanner.HBanner$-CC.create(HBanner.java:151)

播放单独一个视频1,然后使用update更新内容后,再次播放到视频1自动轮播失效

图片和视频均是本地资源,列表中原本有多张图片和视频,使用update方法将播放列表中的资源移除,只剩余视频1,然后通过update又增加了视频和图片 ,条件依然是自动轮播 ,但是当再次播放,播放到视频1的位置时,视频1位置后的资源不会再自动播放,此时自动轮播失效,但是可以通过手滑方式切换到下一个资源,自动轮播就恢复效果。

效果优化

能否在视频播放时默认静音,然后有个控件可以控制播放呢

加载空列表,触摸角标越界异常

private void stopPositionVideoView(int position) {
        ViewItem v = subList.get(position);
        View view = v.getView();
        if (view instanceof VideoView) {
            videoLoader.onStop((VideoView) view);
        }
    }

角标越界异常

注意点HBannerImp第100行addOnPageChangeListener的调用者是外部实例化的View在所以存在多次监听的情况,导致滚动位置错乱

//查看androidx.viewpager.widget.ViewPager 源码addOnPageChangeListener内维护的是一个List
public void addOnPageChangeListener(@nonnull OnPageChangeListener listener) {
if (mOnPageChangeListeners == null) {
mOnPageChangeListeners = new ArrayList<>();
}
mOnPageChangeListeners.add(listener);
}
//HBannerImp第100行,作者的使用方式这里存在漏洞,具体场景需要多次create()
解决方式:最简单的方式在androidx.viewpager.widget.PagerAdapter#instantiateItem作如下修改:
@nonnull
@OverRide
public Object instantiateItem(@nonnull ViewGroup container, int position) {
View view = usingItems.get(position);
ViewGroup parent = (ViewGroup) view.getParent();
if (parent != null){
parent.removeView(view);
}
container.addView(view);
return view;
}
在不修改源码情况下在create前可使用:
viewPager.removeAllViews();
viewPager.clearOnPageChangeListeners();

运行错误 空指针

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hbanner/com.example.hbanner.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Handler.removeCallbacks(java.lang.Runnable)' on a null object reference

5.1版本

banner支持5.1版本的手机,单个视频轮播吗

竖屏视频问题

作者您好,收先感谢您的分享,在使用的时候发现了两个小问题在这里反馈一下

  1. 从1.0.1版本开始(1.0.0不存在这个问题),竖屏视频默认显示在中间了,但是如果是一个竖屏视频和一个图片轮播的话,显示图片的时候会显示一秒就黑屏了,等图片显示时间到的前一秒又会显示一下然后就切换到视频了。
    不知道有没有描述清楚,总之重现方式是:加载一个竖屏视频和任意一个图片,视频切换到图片时就会出现这个问题;

  2. 此问题在1.0.3版本确认存在,之后的版本未测试。问题描述:
    加载媒体越多越容易出现,比如加载了10个视频和10个图片,然后再即将要切换下一个元素时立即(不需要那么及时,大概切换的前后就行)触发更新动作(就是调用hBanner.update方法),如果更新后的内容比之前的少,比如只剩下一个视频和一个图片,会引起崩溃。我把HB'anner类复制下来做了个修改解决了此问题,但具体修改的哪我真的想不起来了,好像是因为lastItem的问题,我在update方法里设置了lastItem=0;(不确定,真记不清了)


再次感谢作者的分享

对点击跳转的建议

针对点击事件,如果当前item是图片的话,点击可以跳转。如果当前item是视频的话,控制播放与暂停。

图片视频查看

大神这个视频有进度和时间显示么?阔以支持点击查看吗?

下载不下来 是怎么回事?

1.0.8的可以先下载下来。implementation 'com.lakehubo:hbanner:1.1.0-alpha' 这个就是下载不下来 我就奇了怪了。我在External Libraries里面就找不到这个库。欲哭无泪?这个咋办

引用1.0.8运行项目直接闪退

引用1.0.8运行项目直接闪退

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.dhcc.hbanner/com.dhcc.hbanner.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.dhcc.hbanner.MainActivity" on path: DexPathList[[zip file "/data/app/com.dhcc.hbanner-UAD9KU78FaAjtpSnQ9GpXw==/base.apk"],nativeLibraryDirectories=[/data/app/com.dhcc.hbanner-UAD9KU78FaAjtpSnQ9GpXw==/lib/arm64, /system/lib64, /system/vendor/lib64]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2757)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2931)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1620)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:173)
at android.app.ActivityThread.main(ActivityThread.java:6698)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.dhcc.hbanner.MainActivity" on path: DexPathList[[zip file "/data/app/com.dhcc.hbanner-UAD9KU78FaAjtpSnQ9GpXw==/base.apk"],nativeLibraryDirectories=[/data/app/com.dhcc.hbanner-UAD9KU78FaAjtpSnQ9GpXw==/lib/arm64, /system/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.Instrumentation.newActivity(Instrumentation.java:1174)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2747)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2931) 
at android.app.ActivityThread.-wrap11(Unknown Source:0) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1620) 
at android.os.Handler.dispatchMessage(Handler.java:105) 
at android.os.Looper.loop(Looper.java:173) 
at android.app.ActivityThread.main(ActivityThread.java:6698) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782) 
Suppressed: java.io.IOException: Failed to open dex files from /data/app/com.dhcc.hbanner-UAD9KU78FaAjtpSnQ9GpXw==/base.apk because: Failure to verify dex file '/data/app/com.dhcc.hbanner-UAD9KU78FaAjtpSnQ9GpXw==/base.apk': Bad method handle type 7
at dalvik.system.DexFile.openDexFileNative(Native Method)
at dalvik.system.DexFile.openDexFile(DexFile.java:353)
at dalvik.system.DexFile.(DexFile.java:100)
at dalvik.system.DexFile.(DexFile.java:74)
at dalvik.system.DexPathList.loadDexFile(DexPathList.java:374)
at dalvik.system.DexPathList.makeDexElements(DexPathList.java:337)
at dalvik.system.DexPathList.(DexPathList.java:157)
at dalvik.system.BaseDexClassLoader.(BaseDexClassLoader.java:65)
at dalvik.system.PathClassLoader.(PathClassLoader.java:64)
at com.android.internal.os.PathClassLoaderFactory.createClassLoader(PathClassLoaderFactory.java:43)
at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:69)
at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:36)
at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:681)
at android.app.LoadedApk.getClassLoader(LoadedApk.java:714)
at android.app.LoadedApk.getResources(LoadedApk.java:941)
at android.app.ContextImpl.createAppContext(ContextImpl.java:2254)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5755)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1690)

添加暂停banner的方法

页面切换时候,需要暂停banner图,目前只有方法停止轮播的操作, 切换时候视频还是在播放的,没有停止的操作,
目前调用了 banner.releaseBanner(); 停止轮播 banner.start(); 开始方法,但效果不理想, 切换后响应不快

请求头导致的 bad request 状态码400

showView.java 文件第66行,实例化 HttpParam 的构造函数中写死了一个请求头信息:requestHeader.put("Content-type", "multipart/form-data");
然而对于某些 url 来说,带上了这个请求头就会报 400 的错误码。

运行的时候 一直在打印一个警告 是什么意思。

VSYNC THREAD can not get buffer to queue
我的项目是一个大屏的终端机。
因为我是所有页面没有操作的时候都有会延迟加载这个广告轮播。反复切换页面的时候那个内存一直在增长。能帮回答一下怎么处理么

在部分机型上,通过网络缓存的文件下载不完整

在部分机型上,通过网络缓存的文件下载不完整,导致视频无法播放,当时checkCache()方法并没有去检测文件的完整性,只检测了本地是否存在缓存文件,这个要怎么解决(文件并不是很大,一个视频文件才2M,下载到本地的时候只有14k)

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.