Android高仿BiliBili

lingxiaopua/BiliBili

使用ijkplayer,实现一个仿B站的Android客户端。使用组件化的思想对项目进行拆分,目前分出两个组件,一个是网络请求组件,一个是视频播放组件。

扫码体验:

 

qr.png

 

组件化实现方案

组件化使用的方案出自张华洋的文章:Android组件化方案

在gradle.properties中,有一个isModule值,为true时是组件化模式,为false为library。在业务组件的build.gradle中读取 isModule,代码如下:

if (isModule.toBoolean()) {
    apply plugin: 'com.android.application'
} else {
    apply plugin: 'com.android.library'
}

在 AndroidStudio 中每一个组件都会有对应的 AndroidManifest.xml,application和library使用的AndroidManifest.xml不同,所以要为组件开发模式下的业务组件再创建一个 AndroidManifest.xml,然后根据isModule指定AndroidManifest.xml的文件路径,让业务组件在集成模式和组件模式下使用不同的AndroidManifest.xml:

sourceSets {
        main {
            if (isModule.toBoolean()) {
                manifest.srcFile 'src/main/module/AndroidManifest.xml'
            } else {
                manifest.srcFile 'src/main/AndroidManifest.xml'
            }
        }
    }

组件功能介绍

ijkplayer组件(功能组件)

该组件是一个视频播放组件,在ubuntu16.04上集成编译了ijkplayer,支持rtsp和rtmp的视频直播推流。提供了一个自定义view,可以使用该view实现本地/网络视频的播放、暂停、快进、视频亮度、音量的调节。ijkplayer0.8.8下载地址

使用方式如下:

声明所需权限,用于播放网络视频和本地视频:

<uses-permission android:name="android.permission.INTERNET" />  
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

注意,如果横竖屏切换不想重新走一遍生命周期,还需要在表单中设置Activity的configChanges属性:

<activity android:name=".PlayActivity"
                  android:configChanges="orientation|keyboardHidden|screenSize" >
</activity

在布局中添加如下view:

<com.bilibili.lingxiao.ijkplayer.widget.SimplePlayerView
            android:id="@+id/simple_view"
            android:layout_width="match_parent"
            android:layout_height="180dp">
    </com.bilibili.lingxiao.ijkplayer.widget.SimplePlayerView>

在Activity/Fragment中的oncreate方法里:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_play)
    //屏幕常亮
	getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
	/** 普通播放 start **/
	var url = getIntent().getStringExtra("url");
	simple_view
            .setVideoUrl(url)
            .setVideoTitle("这是标题")
            .startPlay()
}
override fun onConfigurationChanged(newConfig: Configuration?) {
        super.onConfigurationChanged(newConfig)
        //横竖屏切换 显示/隐藏actionbar
        var isPortrait = simple_view.onConfigurationChang(newConfig)
        if (isPortrait) {
            supportActionBar?.show()
        } else {
            supportActionBar?.hide()
        }
    }

    override fun onBackPressed() {
        simple_view.onBackPressed()
        if (!simple_view.isPortrait){
            supportActionBar?.show()
        }else{
            super.onBackPressed()
        }
    }

    override fun onPause() {
        super.onPause()
        simple_view.onPause()
    }

    override fun onResume() {
        super.onResume()
        simple_view.onResume()
    }

    override fun onDestroy() {
        super.onDestroy()
        simple_view.onDestory()
    }

common组件(功能组件)

  1. common组件是基础库,添加一些公用的类;

  2. 网络请求、图片加载、工具类、base类等;

  3. 声明APP需要的uses-permission;

  4. 定义mvp架构实现网络请求

目前完成的功能

  • 整体架构搭建

  • 对b站客户端抓包,分析接口

  • 主界面布局完成

  • 完成直播播放页面

  • 完成推荐视频的播放

  • 视频弹幕获取

项目截图:

1.png

2.png

源码

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio是一款基于IntelliJ IDEA开发的集成开发环境,用于开发安卓应用程序。仿Bilibili界面设计源代码则是指使用Android Studio开发一个类似Bilibili应用的界面布局和功能实现的源代码。 首先,在Android Studio中新建一个项目,命名为Bilibili或者其他你喜欢的名字。接着创建各种资源文件,包括图标、背景图片、音频文件等,以使界面更加逼真。 接下来开始设计界面布局。仿Bilibili的界面通常是分为几个主要模块的,如导航栏、首页、订阅、排行榜、动态、个人中心等。可以使用LinearLayout、RelativeLayout或者ConstraintLayout来实现这些模块的布局,具体根据实际需求进行调整。 然后,根据Bilibili的设计风格和UI要求,在各个模块中添加相应的控件,如TextView、ImageView、Button、RecyclerView、TabLayout等。通过设置它们的属性,如文本、背景、图片等,使得界面看起来更加类似Bilibili。 在界面布局完成后,还需要为控件添加相应的交互功能。例如,设置导航栏中的按钮点击事件,实现页面之间的跳转;为首页中的RecyclerView添加监听器,实现点击某个条目后的详情页面显示等。 最后,进行调试、测试和优化。在Android Studio中可以使用模拟器或者连接真机进行测试,确保界面的功能和逻辑正确无误。对于可能存在的性能问题,可以使用工具进行性能分析和优化。 总结来说,仿Bilibili界面设计源代码的实现主要包括创建项目、设计界面布局、添加控件和交互功能,以及调试、测试和优化。通过这些步骤,可以实现一个类似Bilibili应用的界面,并且能够正常运行和展示相应的功能和特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值