最后
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
同时我经过多年的收藏目前也算收集到了一套完整的学习资料以及高清详细的Android架构进阶学习导图及笔记分享给大家,希望对想成为架构师的朋友有一定的参考和帮助。
下面是部分资料截图,诚意满满:特别适合有开发经验的Android程序员们学习。
不论遇到什么困难,都不应该成为我们放弃的理由!
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
mCurrentVolume++
} else {
mCurrentVolume = mMaxVolume
}
updateNum(mCurrentVolume)
setStreamVolume(mCurrentVolume)
}
btn_reduce.setOnClickListener {
if (mCurrentVolume > 0) {
mCurrentVolume–
} else {
mCurrentVolume = 0
}
updateNum(mCurrentVolume)
setStreamVolume(mCurrentVolume)
}
注意,这里要判断一下是否超出了音量的最大值最小值。
在事件中,除了判断最大值最小值之外,还调用了两个方法
updateNum
更新页面显示:
/**
- 更新页面显示
*/
private fun updateNum(volume: Int) {
tv_volume.text = volume.toString()
seekBar.progress = volume
}
还调用了setStreamVolume
方法,这里就涉及到setStreamVolume
和adjustStreamVolume
的区别:
-
setStreamVolume 直接设置音量,指哪打哪
-
adjustStreamVolume 步长式设置音量,即10,20,30这样阶梯式
二者都可以设置音量,可以根据自己的业务需求来选择。
setStreamVolume
来看一下具体的setStreamVolume
方法:
private fun setStreamVolume(volume: Int) {
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, AudioManager.FLAG_SHOW_UI)
}
-
参数1:音量类型
-
参数2:音量数值
-
参数3:
-
AudioManager.FLAG_SHOW_UI 调整音量时显示系统音量进度条 , 0 则不显示
-
AudioManager.FLAG_ALLOW_RINGER_MODES 是否铃声模式
-
AudioManager.FLAG_VIBRATE 是否震动模式
-
AudioManager.FLAG_SHOW_VIBRATE_HINT 震动提示
-
AudioManager.FLAG_SHOW_SILENT_HINT 静音提示
-
AudioManager.FLAG_PLAY_SOUND 调整音量时播放声音
adjustStreamVolume
音量递增
private fun adjustRaise() {
mAudioManager.adjustStreamVolume(
AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_RAISE,
AudioManager.FLAG_SHOW_UI
)
}
-
参数1:音量类型
-
参数2:音量调整方向
-
AudioManager.ADJUST_RAISE 音量逐渐递增
-
AudioManager.ADJUST_LOWER 音量逐渐递减
-
AudioManager.ADJUST_SAME 不变
-
参数3:同setStreamVolume参数3
音量递减
private fun adjustLower(volume: Int) {
mAudioManager.adjustStreamVolume(
AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_LOWER,
AudioManager.FLAG_SHOW_UI
)
}
===================================================================
除了我们手动去改之外,用户也可以通过物理按键
或是耳机
来控制音量,这时,我们理应也要做出相应的改变,所以,还需要对音量按键做监听才行。
这里就用到熟悉的老方法了,重写Activity
的onKeyDown
方法:
/**
-
监听并接管系统的音量按键,
-
注意:最好保持原有逻辑不变
*/
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
when (keyCode) {
//音量+按键
KeyEvent.KEYCODE_VOLUME_UP -> {
if (mCurrentVolume < mMaxVolume) {
mCurrentVolume++
} else {
mCurrentVolume = mMaxVolume
}
updateNum(mCurrentVolume)
setStreamVolume(mCurrentVolume)
return true
}
//音量-按键
KeyEvent.KEYCODE_VOLUME_DOWN -> {
if (mCurrentVolume > 0) {
mCurrentVolume–
如何做好面试突击,规划学习方向?
面试题集可以帮助你查漏补缺,有方向有针对性的学习,为之后进大厂做准备。但是如果你仅仅是看一遍,而不去学习和深究。那么这份面试题对你的帮助会很有限。最终还是要靠资深技术水平说话。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。
学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。
我搜集整理过这几年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。
在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!