lakehubo / hbanner Goto Github PK
View Code? Open in Web Editor NEWAndroid 视频/图片混合轮播,可指定每个子view的显示时间
License: Apache License 2.0
Android 视频/图片混合轮播,可指定每个子view的显示时间
License: Apache License 2.0
问题:移植代码后,出现了展示图片,黑屏的现象,
对比demo并不会出现,
后将布局banner给了个固定高度,
将展示改为全局的,问题解决。
但看了源代码,没能看出有什么问题
直接用代码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)
当轮播到视频的时候,如果想释放资源,结束掉HBanner的生命周期,该用什么方法?
图片和视频均是本地资源,列表中原本有多张图片和视频,使用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);
}
}
角标越界异常
//查看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.NullPointerException: Attempt to invoke virtual method 'int android.media.MediaPlayer$TrackInfo.getTrackType()' on a null object reference;播放下面这两个资源的时候异常错误:"https://v-cdn.zjol.com.cn/123468.mp4""http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4";是因为是高清的资源吗??
轮播页面隐藏标题栏和状态栏,视频的布局方式为FULL_SCREEN时视频播放完毕后自动切换到图片第一张图片顶部状态栏会出现并且是黑色的。黑条。后面图片是正常的,如果视频播放中手动切换到下一张展示图片,则正常。
您好请教两个问题 1网络图片貌似加载不出?,2如何快速替换现有播放器?
视频图片轮播中间间隔一张图片播放,如果手动滑动一张,就逐个图片播放
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
banner支持5.1版本的手机,单个视频轮播吗
作者您好,收先感谢您的分享,在使用的时候发现了两个小问题在这里反馈一下
从1.0.1版本开始(1.0.0不存在这个问题),竖屏视频默认显示在中间了,但是如果是一个竖屏视频和一个图片轮播的话,显示图片的时候会显示一秒就黑屏了,等图片显示时间到的前一秒又会显示一下然后就切换到视频了。
不知道有没有描述清楚,总之重现方式是:加载一个竖屏视频和任意一个图片,视频切换到图片时就会出现这个问题;
此问题在1.0.3版本确认存在,之后的版本未测试。问题描述:
加载媒体越多越容易出现,比如加载了10个视频和10个图片,然后再即将要切换下一个元素时立即(不需要那么及时,大概切换的前后就行)触发更新动作(就是调用hBanner.update方法),如果更新后的内容比之前的少,比如只剩下一个视频和一个图片,会引起崩溃。我把HB'anner类复制下来做了个修改解决了此问题,但具体修改的哪我真的想不起来了,好像是因为lastItem的问题,我在update方法里设置了lastItem=0;(不确定,真记不清了)
再次感谢作者的分享
针对点击事件,如果当前item是图片的话,点击可以跳转。如果当前item是视频的话,控制播放与暂停。
当第一条数据为视频时,会有一段下载的时间,此时是黑屏状态。有什么很好的解决方法嘛
小米手机Android11系统视频图片不显示是怎么回事、xiaomi Redmi K20版本
图片和视频混播,视频播完后切换播放第一张图片时黑屏,怎么解决?
大神这个视频有进度和时间显示么?阔以支持点击查看吗?
视频后第一张图片播放时黑屏
存在内存泄露,内存不断在增大,几分钟后就停止运行了
视频全屏后返回到banner,第一张图片会出现空白,但多次滑动又恢复正常?
1.0.8的可以先下载下来。implementation 'com.lakehubo:hbanner:1.1.0-alpha' 这个就是下载不下来 我就奇了怪了。我在External Libraries里面就找不到这个库。欲哭无泪?这个咋办
你好,放入两个视频后,第二个视频会黑屏,单独播放一个视频没问题
目前只能播放本地的视频吗?
现在视频或者图片占不满会出现黑边 怎么把黑边改成别的颜色呢
引用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)
谢谢
播放视频时有的设备没问题 有的设备就会报这个错maybe can not cache the video or play the local resource 并且视频是黑的
这个该怎么解决呢
一定要固定itm的播放时间吗?如果想播放完视频后自动切换咋做?不设定固定时长
size为3,但是实际想加指示器同步,viewPager为5
viewPager.getHandler();是个空对象?
页面切换时候,需要暂停banner图,目前只有方法停止轮播的操作, 切换时候视频还是在播放的,没有停止的操作,
目前调用了 banner.releaseBanner(); 停止轮播 banner.start(); 开始方法,但效果不理想, 切换后响应不快
代码里的视频播放不了,换成其它地址也一样
showView.java 文件第66行,实例化 HttpParam 的构造函数中写死了一个请求头信息:requestHeader.put("Content-type", "multipart/form-data");
然而对于某些 url 来说,带上了这个请求头就会报 400 的错误码。
VSYNC THREAD can not get buffer to queue
我的项目是一个大屏的终端机。
因为我是所有页面没有操作的时候都有会延迟加载这个广告轮播。反复切换页面的时候那个内存一直在增长。能帮回答一下怎么处理么
其实大部分情况用到这个是首页banner上或者商品详情页 所以一般是手动全屏
建议作者有时间的话可以加上播放器和指示器,感谢作者的无私开源 爱你~
这是播放器的
https://github.com/Jzvd/JiaoZiVideoPlayer
这是指示器
https://github.com/romandanylyk/PageIndicatorView
在部分机型上,通过网络缓存的文件下载不完整,导致视频无法播放,当时checkCache()方法并没有去检测文件的完整性,只检测了本地是否存在缓存文件,这个要怎么解决(文件并不是很大,一个视频文件才2M,下载到本地的时候只有14k)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.