🐐 0. 播放器升级指南
🤓:玩到这,你就知道写辅导的那个够随便的了,瞧:
- 音响怎么控制?没有💀
- 画面怎么改? 没有💀
- 字幕?更加没有💀
- 加网址窗口?也没有💀
还有没有?我眼镜多了两圈。
😎:在网上找例子,还挺少的。在 Apple 找了个,还是 C++,是 C 的大儿子。现在我尝试改改屏幕。
🐕:有就不错了,大哥!汪汪(继续继续)…
🤔:我是不是幻听啊,狗会说话?我只听过隔壁的猫 😻 早上六点在唱 ABC。叫得比公鸡还响亮。真想扔它一棍子,叫春叫我窗口下面。
🔪1. 看飞刀,插入Activity!
Hilt(💂):呔!那小子,上次为何一刀未插,是不是看不起咱来嗻?
😌:对不起,您大人有大粱( Framework 不就是大粱吗?)!上一章写得我都蒙了,自己都看下去了,一刀未插,丢你大人的脸了!现在补上。
…
🍱 建立模块
➕ 路子 package:di
➕ Kotlin 文件:PlayModule.kt
插什么?当然是 NativePlayer 啦。
@Module
@InstallIn(SingletonComponent::class)
object PlayerModule {
@Provides
@Singleton
fun providePlayer(): NativePlayer = NativePlayer()
}
其他的你随便加。
❗️ Hilt 更新 ❗️ : ApplicationComponent 换 SingletonComponent
…
🔪 插入 Tutorial4
在头顶摆个 @AndroidEntryPoint 牌苹果。
飞刀插来看看:
@AndroidEntryPoint
class Tutorial4 : AppCompatActivity(R.layout.main),
SurfaceHolder.Callback, OnSeekBarChangeListener {
// VM
private val playerVM: PlayerViewModel by viewModels()
// NativePlayer
// val nplayer = NativePlayer()
@Inject
lateinit var nplayer:NativePlayer
❌杀掉 setContentView (),把 R.layout.main 移 AppCompatActivity(R.layout.main) 。瞧,我帮你省了一行。
🔺 🏃跑一遍,备份💾。
🐛?如果插不准,回 PlayerModule 看看。现在这个更新不好,把图标给更没了;看不见有没有错。
💢2. 开动全屏 Fragment🧩
💡 提示
系统:
@Inject
lateinit var nplayer:NativePlayer
这个已经在出生👶了,所以
nplayer.initJni()
已经在记忆体挂号了,Fragment 抄书可以照抄,然后死机试试。
😭: 置于死地而后生。
…
🎞️ 新片
名字: FullScreenFragment
Kotlin: 清理一下,arguements 就不要了。
class FullScreenFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_full_screen, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}
companion object {
@JvmStatic
fun newInstance() = FullScreenFragment()
}
}
…
✍️ UI 布局设计
🔨 main.xml
- 控制分成两组 LinearLayout 。
- 再网上找两个按钮图档
🤷缩水成:50x50
🔨 fragment_full_screen.xml
用 Landscape 横放设计:
完成:
抄过去,每个 ID 加 2 。这里使用 shrink 图像。
加 Landscape Variation:
系统会炒一份 横放设计 的菜,🍱。
😋:到中午没有,👃香啊!
…
👉🏻 Tutorial4.kt 加 Fragment
- UI:
// UI
...
val full:ImageButton by lazy {
findViewById(R.id.button_full) }
// layout
val compact:ConstraintLayout by lazy {
findViewById(R.id.compact_CL) }
val fragmentManager = supportFragmentManager
- onCreate():
// Called when the activity is first created.
public override fun onCreate(savedInstanceState: Bundle?) {
...
// buttons
play.setOnClickListener {
...}
pause.setOnClickListener {
...}
full.setOnClickListener {
nplayer.pause()
loadFullScreen()
}
...
}
我来个暂停,转班。
👩🏻:什么班?
🤓:全屏班。
- loadFullScreen():
fun loadFullScreen() {
lgd("\n.\n==> Full Screen Fragment Mode <==\n.\n")
compact.visibility = View.GONE
val fragment = FullScreenFragment.newInstance()
val mTransaction = fragmentManager.beginTransaction()
mTransaction.replace(R.id.full_FL, fragment