Giter Site home page Giter Site logo

hotbitmapgg / bilibili-android-client Goto Github PK

View Code? Open in Web Editor NEW
4.5K 165.0 1.5K 110.53 MB

An unofficial bilibili client for android http://www.jianshu.com/p/f69a55b94c05 -- 该项目已停止维护!

License: Do What The F*ck You Want To Public License

Java 100.00%
ijkplayer android rxjava bilibili retrofit2 okhttp3

bilibili-android-client's Introduction

An Unofficial Bilibili Android Client

Wercker Issue Stats TeamCity CodeBetter

Screenshots

UpdateLog

Version update log viewer

Thanks to the open source project

Statement

The project only for the use of exchange of learning, such as the project have bilibili copyright infringement problem, I will delete this page and the whole project in time.

Recommend

Acg-community

The old driver, hurry to get on the bus~!

About me

Wercker

An android developer in Wuhan.

If you want to make friends with me, You can focus on my weibo.

License

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE

Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed.

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

You just DO WHAT THE FUCK YOU WANT TO.

bilibili-android-client's People

Contributors

alvince avatar hotbitmapgg 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  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

bilibili-android-client's Issues

视频详情页点击up主关注bug

视频详情页点击up主后的关注,会跳转播放视频页面!
不是点关注,是点击播放按钮的位置。
应该是播放按钮隐藏了,但实际还存在的原因,所以可以点击。

请教:主页布局

我也在做一个影音类的app,推荐页布局大体上跟你的布局是一样的,但是它Section的content部分有些是两行两列布局,有些却是两行3列布局,我拿着你的代码修改了一下,效果不是很好,不知道有什么可以指点的,还有就是,按你这种写法,换一批的实现是不是只能全部刷新,不能做到局部刷新某个Section的内容? @HotBitmapGG

emptyView problem

在有网络时正确获取数据后 在无网络下进行刷新emptyView在tab推荐和直播中显示错误 与番剧中不同

关于RxFragment

我看RxFragment 继承于app.fragment MainActivity 中导的是v4的包 为什么可以用呢 QwQ

内容搜索的疑惑

抓包是发现有抓到数据的
比如搜索到四重奏,
ui上确实什么都没搜到的2233娘!
附上返回的json是{"code":0,"data":{"trackid":"9870625618631225261","page":1,"nav":[{"name":"番剧","total":2,"pages":1,"type":1},{"name":"UP主","total":5,"pages":1,"type":2},{"name":"影视","total":2,"pages":1,"type":3}],"items":{"season":[{"title":"苍之彼方的四重奏","cover":"https://i0.hdslb.com/bfs/bangumi/fa218bbc1f73d86824dddb3048691058a82ccf25.jpg","uri":"bilibili://bangumi/season/3106","param":"3106","goto":"bangumi","finish":1,"started":0,"index":"12","newest_cat":"tv","newest_season":"TV","cat_desc":"TV(1) ","total_count":12,"status":0,"attentions":0},{"title":"夜樱四重奏","cover":"https://i0.hdslb.com/bfs/bangumi/801ce571558800627e9b5f70c3a52ae7a09ae81d.jpg","uri":"bilibili://bangumi/season/472","param":"472","goto":"bangumi","finish":1,"started":0,"index":"3","newest_cat":"ova","newest_season":"OVA2","cat_desc":"TV(2) OVA/OAD/SP(2)","total_count":3,"status":0,"attentions":0}],"movie":[{"title":"生命四重奏","cover":"https://i0.hdslb.com/bfs/bangumi/6e620aa1622c718ba192c1ba2c96c62ec8f52cff.jpg","uri":"bilibili://video/3034521","param":"3034521","goto":"av","started":0,"total_count":0,"desc":"依山傍海的卡拉布里亚岛的小村子,住着一个已经时日不多的老牧羊人,他病了,他坚信他找到了续命的良药,他从教堂的地板上收集灰尘,每晚就水喝下。在一个羊圈里的一小片黑土地上,一只山羊生下了一只小白山羊,生命最初的不适只持续了一小段时间,它的眼睛立刻便睁开了,它的蹄子已经可以支撑身体的重量。整个村子的生活都被这个新生命的到来而充满了希望","screen_date":"2000-11-22 08:00:00","area":"法国","cover_mark":"免费观看","actors":"阿兰·卡瓦利埃、Jean-Louis Faure、Michel Labelle","staff":"导演: 阿兰·卡瓦利埃\n编剧: 阿兰·卡瓦利埃","length":88,"status":2,"attentions":0}],"archive":[{"title":"《四重奏》真的是神作吗?5分钟带你看完最近超火的日剧","cover":"https://i0.hdslb.com/bfs/archive/bf7b0f4cefcb1803b9467ad28ce059b92b64b2b4.jpg","uri":"bilibili://video/9450628","param":"9450628","goto":"av","play":24878,"danmaku":21,"author":"追剧侠","started":0,"total_count":0,"desc":"《四重奏》以四人的单相思为感情线,在不经意生活中勾勒出一幕幕人性的温情片段。四人从心怀不轨的结识到相互信任,让人体会到各种真实生活中的谎言,但谎言背后却是真性情","duration":"5:3","status":0,"attentions":0},{"title":"【5分钟人物os解说】日剧 《四重奏》 小心!会入坑的!","cover":"https://i0.hdslb.com/bfs/archive/ca9cf0349be80467965f50029aed739010017956.jpg","uri":"bilibili://video/8986533","param":"8986533","goto":"av","play":30482,"danmaku":125,"author":"DanDan·酱","started":0,"total_count":0,"desc":"抱歉又更晚了!不过四重奏好看!让我一不小心就入了日剧的坑!","duration":"4:58","status":0,"attentions":0},{"title":"【日剧/四重奏/ED】成人的法则【翻唱合集】(更新中)","cover":"https://i0.hdslb.com/bfs/archive/eb9044b79fc030c624fe036ff2db90c81c463170.png","uri":"bilibili://video/8918963","param":"8918963","goto":"av","play":15092,"danmaku":45,"author":"千夏晴香","started":0,"total_count":0,"desc":"http://www.youtube.com/watch?v=3TAXt7QQ7tg(其余链接分P简介) 最近质量较好的几个翻唱","duration":"30:8","status":0,"attentions":0},{"title":"【2016冬季日剧】四重奏~.预告【@FIX字幕侠】","cover":"https://i0.hdslb.com/bfs/archive/c89ef71c94a400d9cb95036b07320ee7d9e14149.jpg","uri":"bilibili://video/8033457","param":"8033457","goto":"av","play":33645,"danmaku":10,"author":"b站FIX字幕侠","started":0,"total_count":0,"desc":"FIX字幕侠 某天,忽然相遇的四个男女。\n这群人未能实现梦想,也未曾到过人生巅峰,驻足于平缓的下坡道前。他们四人决定组成四重奏,并一起在轻井泽生活。\n然而这个“偶然”中隐藏着巨大的秘密。","duration":"0:32","status":0,"attentions":0},{"title":"四重奏#松隆子#满岛光#高桥一生#松田龙平#看日剧学日语#一会日语学习","cover":"https://i0.hdslb.com/bfs/archive/aca26e4d5d64b4e9b00c51ba1f4cc77a44d37b05.jpg","uri":"bilibili://video/8744476","param":"8744476","goto":"av","play":51747,"danmaku":50,"author":"高贵冷艳教主一会","started":0,"total_count":0,"desc":"一会酱学习群230659050 一会酱qq824980948 \n一会酱周六晚上21:00直播公开课https://ke.qq.com/course/119258#term_id=100130590\n一会酱B站直播间:http://live.bilibili.com/372645","duration":"51:39","status":0,"attentions":0},{"title":"日劇四重奏 1-5話 官方濃縮版","cover":"https://i0.hdslb.com/bfs/archive/9c4adf7603351e5e0ee45115d159b7e77b6bd0fe.jpg","uri":"bilibili://video/8631718","param":"8631718","goto":"av","play":7795,"author":"cmyk8823","started":0,"total_count":0,"desc":"https://www.youtube.com/watch?v=I-FVSdSKX7c\u0026amp;feature=youtu.be \n今からでもまだ間に合う 6分間スペシャルダイジェスト!! 火曜10時 『カルテット』いよいよ後半戦に突入!【TBS】\n【1〜5話SPダイジェスト】\nカルテットも次週からいよいよ後半戦に突入します!\n1話から5話までの、6分間のスペシャルダイジェストを公開しました!","duration":"6:32","status":0,"attentions":0},{"title":"【四重奏主题曲完整\u0026ed】中日歌词版 『成人的法则』","cover":"https://i0.hdslb.com/bfs/archive/41aa6a31d24c182e1e19a148692343355aacb3ee.jpg","uri":"bilibili://video/8337142","param":"8337142","goto":"av","play":89059,"danmaku":326,"author":"一米月光1997","started":0,"total_count":0,"desc":"很喜欢的剧 完整版是ed+剧01cut(剪片子真是みぞみぞできました\n若有翻译错误,还请赐教~网易云里可以听完整版啦\n『おとなの掟』\n 歌:松たか子 満島ひかり 松田龍平 高橋一生 \n詞/曲:椎名林檎 \n\n翻译制作:一米月光1997","duration":"5:11","status":0,"attentions":0},{"title":"这部被各大公众号疯转的神剧《四重奏》,台词既丧心又戳心","cover":"https://i0.hdslb.com/bfs/archive/3522961b253f7b8fe2c0f6f5b9073bbd1680dad4.jpg","uri":"bilibili://video/8797979","param":"8797979","goto":"av","play":19987,"danmaku":40,"author":"知引mm","started":0,"total_count":0,"desc":"没时间刷《四重奏》没关系,5分钟告诉你,这部神剧都讲了什么?","duration":"5:13","status":0,"attentions":0},{"title":"【中日字幕】[四重奏ED] 成人法则","cover":"https://i0.hdslb.com/bfs/archive/b6ee844a0d5c3419cc5a799ca32749543a1758ec.jpg","uri":"bilibili://video/8504134","param":"8504134","goto":"av","play":32288,"danmaku":93,"author":"ll阿祈ll","started":0,"total_count":0,"desc":"おとなの掟_成人法则\n4月22日更新:日语字幕已根据官方歌词订正 48s音画不同步问题已修复\n视频及字幕制作:阿祈\n请勿二传二改","duration":"3:26","status":0,"attentions":0},{"title":"【四重奏】ED合集","cover":"https://i0.hdslb.com/bfs/archive/e093842418cd48dcf9e2ca5655b600d142600fcd.jpg","uri":"bilibili://video/9326990","param":"9326990","goto":"av","play":5096,"danmaku":1,"author":"里猫","started":0,"total_count":0,"desc":"片源来自fix字幕组","duration":"3:31","status":0,"attentions":0},{"title":"【完整版】(中日歌词)日剧四重奏ED 成人的准则 Doughnuts Hole","cover":"https://i0.hdslb.com/bfs/archive/aaf567b4c41d50d7ddd21f1ba0b21899aae672b1.jpg","uri":"bilibili://video/8456300","param":"8456300","goto":"av","play":15728,"danmaku":98,"author":"曼熱咖啡","started":0,"total_count":0,"desc":"四重奏 おとなの掟 \n已翻译\n四重奏 BGM/OST 精选:av8502388","duration":"3:26","status":0,"attentions":0},{"title":"《四重奏》ED-成人法则 带字幕 日文/渣中文","cover":"https://i0.hdslb.com/bfs/archive/73518b0a991d042d765e4a8a29faa96faeca577e.jpg","uri":"bilibili://video/8090015","param":"8090015","goto":"av","play":20302,"danmaku":54,"author":"阿良良木历sca","started":0,"total_count":0,"desc":"站里的没字幕,就随手贴了日文和渣中文","duration":"1:43","status":0,"attentions":0},{"title":"【原声音乐】fox capture plan -《四重奏》(Quartet)Original Soundtrack","cover":"https://i0.hdslb.com/bfs/archive/2688fefa4215c85c6d9842af79d6787d37ab4527.png","uri":"bilibili://video/9364859","param":"9364859","goto":"av","play":6056,"danmaku":8,"author":"太安静会窒息斯基","started":0,"total_count":0,"desc":"曲包自取 链接:http://pan.baidu.com/s/1eRUGiK6 密码:h5yv\r\n匆忙浮躁的都市中,四个与音乐相关的男男女女看似偶然般地邂逅了,他们分别是第一小提琴手卷真纪、大提琴手世吹雀、中提琴手家森谕高以及第二提琴手别府司。仿佛是对音乐的共同志向,他们组建了名为“甜甜圈洞”的四重奏乐队,暂时落脚于别府家位于轻井泽的别墅,过起了与世隔绝的人生。然而四个人终究无法超脱世俗存在,除了最基本的吃饭问题,每个人似乎都被各自的秘密所牵扯纠缠。。。","duration":"77:11","status":0,"attentions":0},{"title":"[治愈向 四重奏 满岛光]因为你我对这世界稍微有点期待/我曾想过一了百了","cover":"https://i0.hdslb.com/bfs/archive/87e835379a86472b8243d945e27be0ef96808715.jpg","uri":"bilibili://video/8473020","param":"8473020","goto":"av","play":11822,"danmaku":82,"author":"离酱的本命是SD呀","started":0,"total_count":0,"desc":" -\u0026amp;lt;我曾想过一了百了。失败的过去, 复杂的人际关系,冰冷的言语。生而为人,如此不堪。我曾想过一了百了,因为你这样的人存在于世上,我对这个世界稍微有点喜欢和期待\u0026amp;gt;-\n\n 我想要微笑面对这个世界。","duration":"4:49","status":0,"attentions":0},{"title":"2017冬季档日剧《四重奏》15秒预告(松隆子 满岛光 高桥一生 松田龙平)","cover":"https://i0.hdslb.com/bfs/archive/4439d126b85e6b26606240a3de3d2553f8d9d2fb.jpg","uri":"bilibili://video/7515897","param":"7515897","goto":"av","play":14587,"danmaku":30,"author":"wangkk","started":0,"total_count":0,"desc":"TBS 2016冬季日剧四重奏15秒预告(松隆子 满岛光 高桥一生 松田龙平)","duration":"0:17","status":0,"attentions":0},{"title":"男孩四重奏 Boy Quartette(2012)","cover":"https://i0.hdslb.com/bfs/archive/d4d9c95a1f89e2a6d2de6c8d3909140314611942.jpg","uri":"bilibili://video/2049617","param":"2049617","goto":"av","play":44345,"danmaku":2684,"author":"不是天才是地才","started":0,"total_count":0,"desc":"直传 第一重奏:夏日的序章 幸运蓝Good Blue 第二重奏:暗恋行板 爱之初,欲本善 第三重奏:梦魇交响乐 牛仔惊魂 cowboy 第四重奏:飘淼安魂曲 戴维与斯图 Davy and Stu 四部以青春男孩为主题的最优秀的短片,分别来自美国、法国、德国与瑞典。让我们一起重听荷尔蒙跳动的乐章吧,那些懵懂的、温热的、掺揉甜蜜和苦涩的男孩故事,其实一直存在于我们的记忆。","duration":"117:0","status":0,"attentions":0},{"title":"【光妹实拍】四重奏玩多米诺雪糕棒+多视角","cover":"https://i0.hdslb.com/bfs/archive/f0c139b54b5cc8c38110f7727341ebd11e328c9f.jpg","uri":"bilibili://video/9223227","param":"9223227","goto":"av","play":13381,"danmaku":35,"author":"Ringa飽丶","started":0,"total_count":0,"desc":"【公式】火曜ドラマ『カルテット』3_21‏ @quartet_tbs\nリクエスト多数につき公開します!!","duration":"1:26","status":0,"attentions":0},{"title":"『四重奏』 Tune For A Found Harmon完整版","cover":"https://i0.hdslb.com/bfs/archive/bdda111d36de69fe2aabf189400d22bff76f0d8a.jpg","uri":"bilibili://video/9331112","param":"9331112","goto":"av","play":6647,"danmaku":12,"author":"烂柯人啊_","started":0,"total_count":0,"desc":"Youtube\n沉迷四重奏无法自拔,就开始听OST,特别喜欢这首Tune For A Found Harmon,听说油管上有小提琴完整版就搬下来了,希望大家喜欢啊哈哈哈哈","duration":"2:34","status":0,"attentions":0},{"title":"梦魇】模拟人生4 日剧四重奏别墅","cover":"https://i0.hdslb.com/bfs/archive/40adbb49473053dd15fe2ef924a250fb2d363cc8.jpg","uri":"bilibili://video/11147587","param":"11147587","goto":"av","play":36,"author":"梦魇魇魇魇魇魇魇魇","started":0,"total_count":0,"desc":"有很久没有发视频了~前两天突发奇想还原一下喜欢的日剧建筑看看~本来录制了一个建造视频的但是因为软件原因没有录制成功,所以就简单给大家介绍一下这个房子~如果喜欢可以在模拟工坊里下载到,要开自定义内容才行哦~因为有一些不影响还原度的小零件用了mod。\n如果喜欢记得给我投币哟(^U^)ノ~","duration":"14:34","status":0,"attentions":0},{"title":"【四重奏/家雀】和你的美好回忆,早已成为我心脏的一部分","cover":"https://i0.hdslb.com/bfs/archive/02f3719f8350aa39a221fcb1a7ddb8fd1ead6c46.jpg","uri":"bilibili://video/11128478","param":"11128478","goto":"av","play":67,"author":"是啾啾咩","started":0,"total_count":0,"desc":"这个视频早就想剪了)都几个月过去了 终于有时间了。\n看四重奏的时候就非常喜欢家森和小雀 还哭过几次。(被SAJ和章鱼烧虐的不行)。BGM是RADWIMPS的《有心論》。用掏空心脏的歌词和继续emmm的脑补合成了这样的一个故事)一个【相识相知相恋到分手】的故事,过程从单恋到热恋到结束(没谈过恋爱的我哭了。冷色调是现在(是用两人的演奏串起来的)暖色调和黑白是回忆。\n标题是取自于歌曲中,啊。 你还在我的心脏里,使我活着,给予我爱。\n嗯 要幸福啊。\n谢谢观看w","duration":"4:13","status":0,"attentions":0}]}},"message":"","ttl":1}

小问题

你好,最近在学习你这个项目,发现个小问题,首先切换到首页 番剧 一栏,然后从首页的任何一个页面切回番剧,番剧页面会自动向上滑动一段距离,请问大神这个是什么梗?

关于视频无法播放的问题!

由于b站官方已更换了https,导致很多接口无法再抓包获取到了,所以视频地址接口获取不到,无法播放视频。

okhttp 拦截器的缓存配置问题

这一段
`private static class CacheInterceptor implements Interceptor {

    @Override
    public Response intercept(Chain chain) throws IOException {

        // 有网络时 设置缓存超时时间1个小时
        int maxAge = 60 * 60;
        // 无网络时,设置超时为1天
        int maxStale = 60 * 60 * 24;

        Request request = chain.request();

        if (CommonUtil.isNetworkAvailable(BilibiliApp.getInstance())) {
            //有网络时只从网络获取
            request = request.newBuilder()
                    .cacheControl(CacheControl.FORCE_NETWORK)
                    .build();
        } else {
            //无网络时只从缓存中读取
            request = request.newBuilder()
                    .cacheControl(CacheControl.FORCE_CACHE)
                    .build();
        }
        Response response = chain.proceed(request);
        if (CommonUtil.isNetworkAvailable(BilibiliApp.getInstance())) {
            response = response.newBuilder()
                    .removeHeader("Pragma")
                    .header("Cache-Control", "public, max-age=" + maxAge)
                    .build();
        } else {
            response = response.newBuilder()
                    .removeHeader("Pragma")
                    .header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale)
                    .build();
        }
        return response;
    }
}`

测试后发现无网的情况下刷新所读取的 cache 失效时间是 maxAge ,换句话说, Response response = chain.proceed(request); 之后的代码在无网络的时候是运行不到的,我在这块研究的也不太透彻,想磋商一下解决方案...还望赐教啊

视频接口

视频接口地址好像不能用,请求返回一直显示404

楼主大神,登录之后直接崩溃

FATAL EXCEPTION: main Process: com.hotbitmapgg.ohmybilibili, PID: 30444 java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) at java.util.ArrayList.get(ArrayList.java:308) at com.hotbitmapgg.ohmybilibili.adapter.AttentionBangumiAdapter.onBindViewHolder(AttentionBangumiAdapter.java:52) at com.hotbitmapgg.ohmybilibili.adapter.helper.AbsRecyclerViewAdapter.onBindViewHolder(AbsRecyclerViewAdapter.java:104) at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5822) at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5855) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5091) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4967) at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2029) at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:541) at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377) at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578) at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170) at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3315) at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:2843) at android.view.View.measure(View.java:18026) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5702) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692) at android.widget.LinearLayout.measureVertical(LinearLayout.java:760) at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) at android.view.View.measure(View.java:18026) at android.support.v7.widget.RecyclerView$LayoutManager.measureChildWithMargins(RecyclerView.java:7871) at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1440) at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377) at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578) at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3315) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3124) at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3568) at android.view.View.layout(View.java:16112) at android.view.ViewGroup.layout(ViewGroup.java:5185) at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1767) at android.view.View.layout(View.java:16112) at android.view.ViewGroup.layout(ViewGroup.java:5185) at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:131) at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42) at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1364) at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:852) at android.view.View.layout(View.java:16112) at android.view.ViewGroup.layout(ViewGroup.java:5185) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:639) at android.widget.FrameLayout.onLayout(FrameLayout.java:574) at android.view.View.layout(View.java:16112) at android.view.ViewGroup.layout(ViewGroup.java:5185) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:639) at android.widget.FrameLayout.onLayout(FrameLayout.java:574) at android.view.View.layout(View.java:16112) at android.view.ViewGroup.layout(ViewGroup.java:5185) at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1197) at android.view.View.layout(View.java:16112) at android.view.ViewGroup.layout(ViewGroup.java:5185) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:639) at android.widget.FrameLayout.onLayout(FrameLayout.java:574) at android.vi

App Crash

在"发现"页面点击搜索框会崩

Android 4.4

Htc one e8

Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
                                                                                at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:355)
                                                                                at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:324)
                                                                                at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:285)
                                                                                at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143)
                                                                                at com.hotbitmapgg.bilibili.base.RxBaseActivity.onCreate(RxBaseActivity.java:38)

主题切换问题。

正版的主题切换很好,切换不闪屏,无缝切换的样子。本项目的切换主题会闪屏,能不能优化下,可以研究下正版是怎么实现的么,共享咯。

自动安装未知应用Leaks?

启动哔哩哔哩后会自动安装下面这个应用,打开这个应用如图二,提示"Leaks in com.hotbitmapgg.ohmyb..."
请问这是什么东东?搜索了res文件夹并没看到这个图标
alt text
image

点击(分区)下面的任何一个item,也有崩溃的现象

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.hotbitmapgg.ohmybilibili, PID: 12667 java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) at java.util.ArrayList.get(ArrayList.java:308) at com.hotbitmapgg.ohmybilibili.module.home.region.HomeRegionFragment.-com_hotbitmapgg_ohmybilibili_module_home_region_HomeRegionFragment_lambda$4(HomeRegionFragment.java:97) at com.hotbitmapgg.ohmybilibili.module.home.region.HomeRegionFragment$-void_initRecyclerView__LambdaImpl0.onItemClick(HomeRegionFragment.java) at com.hotbitmapgg.ohmybilibili.adapter.helper.AbsRecyclerViewAdapter.-com_hotbitmapgg_ohmybilibili_adapter_helper_AbsRecyclerViewAdapter_lambda$1(AbsRecyclerViewAdapter.java:111) at com.hotbitmapgg.ohmybilibili.adapter.helper.AbsRecyclerViewAdapter$-void_onBindViewHolder_com_hotbitmapgg_ohmybilibili_adapter_helper_AbsRecyclerViewAdapter$ClickableViewHolder_holder_int_position_LambdaImpl0.onClick(AbsRecyclerViewAdapter.java) at android.view.View.performClick(View.java:4909) at android.view.View$PerformClick.run(View.java:20390) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5826) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1010) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)

请教一下recyclerview的问题

主页推荐布局,recyclerview有嵌套横向recyclerview,如果横向recyclerview很多,怎么解决横向recyclerview复用的问题?

主题选择CardPickerDialog没有用啊

我把主题选择你注释掉的代码打开了,发现主题选择功能没有实现

  case R.id.item_theme:

// 主题选择
CardPickerDialog dialog = new CardPickerDialog();
dialog.setClickListener(this);
dialog.show(getSupportFragmentManager(), CardPickerDialog.TAG);
return true;

关于素材问题

看到聚聚的这个项目觉得很厉害,自己也想实现一个 mobile web 版的 bilibili,但是想问聚聚的素材从哪里来呢?就是这些图片和设计图,找了半天没找到啊 sigh

开个issue 来吐槽,吐槽使人进步

public class ActivityCenterActivity extends RxBaseActivity {

  @BindView(R.id.toolbar)
  Toolbar mToolbar;

  @BindView(R.id.swipe_refresh_layout)
  SwipeRefreshLayout mSwipeRefreshLayout;

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

  private int pageNum = 1;

  private int pageSize = 20;

  private View loadMoreView;

  private List<ActivityCenterInfo.ListBean> activityCenters = new ArrayList<>();

  private ActivityCenterAdapter mAdapter;

  private HeaderViewRecyclerAdapter mHeaderViewRecyclerAdapter;

  private boolean mIsRefreshing = false;

  private EndlessRecyclerOnScrollListener mEndlessRecyclerOnScrollListener;

}
  1. 去掉部分空行代码会显得更有层次感
  2. ButterKnife 推荐的是一行绑定
  3. 属性命名也是醉了,一时有m,一时没有,boolean 属性反而又加了m
public class ActivityCenterActivity extends RxBaseActivity {

    @BindView(R.id.toolbar) Toolbar mToolbar;
    @BindView(R.id.swipe_refresh_layout)SwipeRefreshLayout mSwipeRefreshLayout;
    @BindView(R.id.recycle) RecyclerView mRecyclerView;

    private int mPageNum = 1;
    private int mPageSize = 20;
    private View mLoadMoreView;
    private boolean isRefreshing = false;
    
    private List<ActivityCenterInfo.ListBean> mActivityCenters = new ArrayList<>();
    private ActivityCenterAdapter mAdapter;
    private HeaderViewRecyclerAdapter mHeaderViewRecyclerAdapter;
    private EndlessRecyclerOnScrollListener mEndlessRecyclerOnScrollListener;

}

用了java8吗(as2.1.2 还要怎么配置 或者说哪个个分支212可以用啊)?

Error:com.android.jack.frontend.FrontendCompilationException: Failed to compile
at com.android.jack.Jack.buildSession(Jack.java:978)
at com.android.jack.Jack.run(Jack.java:496)
at com.android.jack.api.v01.impl.Api01ConfigImpl$Api01CompilationTaskImpl.run(Api01ConfigImpl.java:102)
... 85 more
:app:transformJackWithJackForDebug FAILED
Error:Execution failed for task ':app:transformJackWithJackForDebug'.

com.android.build.api.transform.TransformException: com.android.jack.api.v01.CompilationException: Failed to compile

视频播放问题

视频可能暂时播放不了,获取的视频播放的地址被权限了

crash:setRefreshing(boolean)' on a null object reference

10-21 16:32:44.885 28129-28129/com.hotbitmapgg.ohmybilibili E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.hotbitmapgg.ohmybilibili, PID: 28129
java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread.
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:62)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5550)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750)
Caused by: rx.exceptions.OnErrorFailedException: Error occurred when trying to propagate error to Observer.onError
at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:192)
at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:120)
at rx.exceptions.Exceptions.throwOrReport(Exceptions.java:204)
at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:144)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:215)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at android.os.Handler.handleCallback(Handler.java:815) 
at android.os.Handler.dispatchMessage(Handler.java:104) 
at android.os.Looper.loop(Looper.java:194) 
at android.app.ActivityThread.main(ActivityThread.java:5550) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750) 
Caused by: rx.exceptions.CompositeException: 2 exceptions occurred.
at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:192) 
at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:120) 
at rx.exceptions.Exceptions.throwOrReport(Exceptions.java:204) 
at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:144) 
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:215) 
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55) 
at android.os.Handler.handleCallback(Handler.java:815) 
at android.os.Handler.dispatchMessage(Handler.java:104) 
at android.os.Looper.loop(Looper.java:194) 
at android.app.ActivityThread.main(ActivityThread.java:5550) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750) 
Caused by: rx.exceptions.CompositeException$CompositeExceptionCausalChain: Chain of Causes for CompositeException In Order Received =>
at android.util.Log.getStackTraceString(Log.java:330)
at com.android.internal.os.RuntimeInit.Clog_e(RuntimeInit.java:59)
at com.android.internal.os.RuntimeInit.access$200(RuntimeInit.java:43)
at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:85)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:66)
at android.os.Handler.handleCallback(Handler.java:815) 
at android.os.Handler.dispatchMessage(Handler.java:104) 
at android.os.Looper.loop(Looper.java:194) 
at android.app.ActivityThread.main(ActivityThread.java:5550) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.SwipeRefreshLayout.setRefreshing(boolean)' on a null object reference
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment.finishTask(AllareasRankFragment.java:107)
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment.lambda$getAllareasRanks$77(AllareasRankFragment.java:96)
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment.access$lambda$3(AllareasRankFragment.java:0)
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment$$Lambda$4.call(Unknown Source)
at rx.internal.util.ActionSubscriber.onNext(ActionSubscriber.java:39)
at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:139)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:215)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at android.os.Handler.handleCallback(Handler.java:815) 
at android.os.Handler.dispatchMessage(Handler.java:104) 
at android.os.Looper.loop(Looper.java:194) 
at android.app.ActivityThread.main(ActivityThread.java:5550) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.SwipeRefreshLayout.setRefreshing(boolean)' on a null object reference
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment.lambda$getAllareasRanks$78(AllareasRankFragment.java:99)
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment.access$lambda$4(AllareasRankFragment.java:0)
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment$$Lambda$5.call(Unknown Source)
at rx.internal.util.ActionSubscriber.onError(ActionSubscriber.java:44)
at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:157)
at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:120)
at rx.exceptions.Exceptions.throwOrReport(Exceptions.java:204)
at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:144)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:215) 
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55) 
at android.os.Handler.handleCallback(Handler.java:815) 
at android.os.Handler.dispatchMessage(Handler.java:104) 
at android.os.Looper.loop(Looper.java:194) 
at android.app.ActivityThread.main(ActivityThread.java:5550) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750) 

探讨一下,关于b站播放器

最近在做播放器这一块,出现很多问题,我在开启MediaCodec后在某些手机上播放一些高码率的视频时,你把播放器切换至后台,此时surfaceview会调destroy,暂停播放器,然后再重后台切换至前台,surfaceview会调create,,开始播放器,流程都没有错,但是就是在某些机型上播放某些视频时,MediaCodec会报状态异常,跟踪代码是在create里设置surface出现的,我看你playView的实现,surfaceview在销毁后,你直接释放掉了播放器,surfaceview重新创建之后又会新建播放器并seek到之前的播放点,这样当然可以,但是这样每次从后台切换至前台后都会有个seek动作,你那没有进度条显示所以不是很明显,有了进度条每次都会先转几秒再开始播放,体验效果不怎么样,我看了B站播放器的效果,感觉它的surfaceView在切换至后台之后并没有被销毁,我猜测它是不是并没有把surfaceview放到activity里而是放在popupwindow里这样

Project tasks completed progress

1.用户界面完善,正在开发中。
2.搜索界面的完善和优化。
3.番剧详情界面完善。
4.直播界面完善和优化。
5.主题切换和夜间模式填坑。
6.代码和布局优化。
7.主页6大模块添加缓存。
8.分区界面添加推荐页面。
9.番剧时间表优化,添加追番界面。
10.已知bug修复,MVP重构。

主页布局

可以加载更多吗,加载更多时候会不会复用

HomeBangumiBobySection.java line 75 crash by Invalid index 0, size is 0

This report is automatically captured by Appetizer.io mobile quality monitoring

"devices": [
        {
            "android_version": "6.0",
            "brand": "google",
            "phone_model": "Nexus 5",
            "product": "hammerhead"
        }
    ]
"item": {
            "available_external_size": 9548783616,
            "available_ram_size": 14327808,
            "brief": "Invalid index 0, size is 0",
            "category": "crash",
            "crash_time": 1488201501823,
            "display": {
                "height": 1776,
                "rotation": "ROTATION_0",
                "width": 1080
            },
            "exception_message": "Invalid index 0, size is 0",
            "exception_name": "java.lang.IndexOutOfBoundsException",
            "highlight": [
                {
                    "filename": "ArrayList.java",
                    "line": "255",
                    "method": "java.util.ArrayList.throwIndexOutOfBoundsException"
                },
                {
                    "filename": "ArrayList.java",
                    "line": "308",
                    "method": "java.util.ArrayList.get"
                },
                {
                    "filename": "HomeBangumiBobySection.java",
                    "line": "75",
                    "method": "com.hotbitmapgg.bilibili.adapter.section.HomeBangumiBobySection.onBindHeaderViewHolder"
                },
                {
                    "filename": "SectionedRecyclerViewAdapter.java",
                    "line": "207",
                    "method": "com.hotbitmapgg.bilibili.widget.sectioned.SectionedRecyclerViewAdapter.onBindViewHolder"
                },
                {
                    "filename": "RecyclerView.java",
                    "line": "6279",
                    "method": "android.support.v7.widget.RecyclerView.Adapter.onBindViewHolder"
                },
                {
                    "filename": "RecyclerView.java",
                    "line": "6312",
                    "method": "android.support.v7.widget.RecyclerView.Adapter.bindViewHolder"
                },
                {
                    "filename": "RecyclerView.java",
                    "line": "5258",
                    "method": "android.support.v7.widget.RecyclerView.Recycler.tryBindViewHolderByDeadline"
                },
                {
                    "filename": "RecyclerView.java",
                    "line": "5521",
                    "method": "android.support.v7.widget.RecyclerView.Recycler.tryGetViewHolderForPositionByDeadline"
                },
                {
                    "filename": "GapWorker.java",
                    "line": "270",
                    "method": "android.support.v7.widget.GapWorker.prefetchPositionWithDeadline"
                },
                {
                    "filename": "GapWorker.java",
                    "line": "324",
                    "method": "android.support.v7.widget.GapWorker.flushTaskWithDeadline"
                },
                {
                    "filename": "GapWorker.java",
                    "line": "337",
                    "method": "android.support.v7.widget.GapWorker.flushTasksWithDeadline"
                },
                {
                    "filename": "GapWorker.java",
                    "line": "344",
                    "method": "android.support.v7.widget.GapWorker.prefetch"
                },
                {
                    "filename": "GapWorker.java",
                    "line": "370",
                    "method": "android.support.v7.widget.GapWorker.run"
                },
                {
                    "filename": "Handler.java",
                    "line": "739",
                    "method": "android.os.Handler.handleCallback"
                },
                {
                    "filename": "Handler.java",
                    "line": "95",
                    "method": "android.os.Handler.dispatchMessage"
                },
                {
                    "filename": "Looper.java",
                    "line": "148",
                    "method": "android.os.Looper.loop"
                },
                {
                    "filename": "ActivityThread.java",
                    "line": "5417",
                    "method": "android.app.ActivityThread.main"
                },
                {
                    "filename": "Native Method",
                    "line": "Native Method",
                    "method": "java.lang.reflect.Method.invoke"
                },
                {
                    "filename": "ZygoteInit.java",
                    "line": "726",
                    "method": "com.android.internal.os.ZygoteInit.MethodAndArgsCaller.run"
                },
                {
                    "filename": "ZygoteInit.java",
                    "line": "616",
                    "method": "com.android.internal.os.ZygoteInit.main"
                }
            ],
            "problem": "IndexOutOfBoundsException",
            "session": {
                "session_index": 4,
                "session_step": 7,
                "session_ticker": 7
            },
            "total_external_size": 28734615552,
            "total_ram_size": 1058320384
}
"steps": [
                {
                    "class": "com.hotbitmapgg.bilibili.module.common.SplashActivity",
                    "duration": "2015",
                    "status": "onResume",
                    "time": "1488201494424"
                },
                {
                    "class": "com.hotbitmapgg.bilibili.module.common.SplashActivity",
                    "duration": "197",
                    "status": "onPause",
                    "time": "1488201496439"
                },
                {
                    "class": "com.hotbitmapgg.bilibili.module.common.MainActivity",
                    "duration": "1590",
                    "status": "onResume",
                    "time": "1488201496636"
                },
                {
                    "class": "com.hotbitmapgg.bilibili.module.common.MainActivity",
                    "duration": "86",
                    "status": "onPause",
                    "time": "1488201498226"
                },
                {
                    "class": "com.hotbitmapgg.bilibili.module.video.VideoDetailsActivity",
                    "duration": "763",
                    "status": "onResume",
                    "time": "1488201498312"
                },
                {
                    "class": "com.hotbitmapgg.bilibili.module.video.VideoDetailsActivity",
                    "duration": "6",
                    "status": "onPause",
                    "time": "1488201499075"
                },
                {
                    "class": "com.hotbitmapgg.bilibili.module.common.MainActivity",
                    "duration": "2717",
                    "status": "onResume",
                    "time": "1488201499081"
                },
                {
                    "class": "com.hotbitmapgg.bilibili.BilibiliApp",
                    "duration": "0",
                    "status": "onCrash",
                    "time": "1488201501798"
                }
            ]
"ticker": {
                    "CPU_usage": "0.23364486",
                    "native_heap": "22282240",
                    "native_heap_allocated": "20436200",
                    "native_heap_free": "1846040",
                    "time": "1488201497220"
                },
                {
                    "CPU_usage": "0.12765957",
                    "native_heap": "24117248",
                    "native_heap_allocated": "22055992",
                    "native_heap_free": "2061256",
                    "time": "1488201498201"
                },
                {
                    "CPU_usage": "0.42028984",
                    "native_heap": "27000832",
                    "native_heap_allocated": "23775392",
                    "native_heap_free": "3225440",
                    "time": "1488201499153"
                },
                {
                    "CPU_usage": "0.110497236",
                    "native_heap": "27000832",
                    "native_heap_allocated": "23144640",
                    "native_heap_free": "3856192",
                    "time": "1488201500105"
                },
                {
                    "CPU_usage": "0.070512824",
                    "native_heap": "27000832",
                    "native_heap_allocated": "24908648",
                    "native_heap_free": "2092184",
                    "time": "1488201501058"
                },
                {
                    "CPU_usage": "0.15508021",
                    "native_heap": "27787264",
                    "native_heap_allocated": "24990240",
                    "native_heap_free": "2797024",
                    "time": "1488201502010"
                },
                {
                    "CPU_usage": "0.032258064",
                    "native_heap": "27787264",
                    "native_heap_allocated": "25219264",
                    "native_heap_free": "2568000",
                    "time": "1488201502962"
                },
                {
                    "CPU_usage": "0.021621622",
                    "native_heap": "27787264",
                    "native_heap_allocated": "25219872",
                    "native_heap_free": "2567392",
                    "time": "1488201503914"
                },

ToolBar 字体颜色

你好 ToolBar 字体颜色默认是黑的 我找你的源码 并没有找到改的地方 请问你是怎么改成白色的

无法播放视频

点击直播:一直黑屏
点击视频:视频缓冲失败,HTTP 404 Not Found

您好 帮我看一下 这个问题怎么解决?

Error:(100, 0) Could not find method apt() for arguments [com.jakewharton:butterknife-compiler:8.4.0] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
Open File

我把as改成2.0.0之后出现了这个问题

无法运行,报这样的错误~~~~(>_<)~~~~

H:\SangGuiGu\bilibili-master-x\app\src\main\java\com\hotbitmapgg\ohmybilibili\network\RetrofitHelper.java
Error:(19, 48) 错误: OriginalRankService在com.hotbitmapgg.ohmybilibili.network.api中不是公共的; 无法从外部程序包中对其进行访问
Error:(437, 19) 错误: 找不到符号
符号: 类 OriginalRankService
位置: 类 RetrofitHelper
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.

Compilation failed; see the compiler error output for details.

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.