android的PopupWindow无法收到KeyEvent-KEYCODE_BACK的原因-md
PopupWindow无法收到KeyEvent.KEYCODE_BACK的原因:
在创建的顶层PopupDecorView的dispatchKeyEvent()回调中,把该事件拦截了。
1. PopupDecorView创建PopupDecorView代码:
//PopupWindow#showAtLocation()
public void showAtLocation(IBinder token, int gravity, int x, int y) {
if (isShowing() || mContentView == null) {
return;
}
2019-11-26
View
理解ijkplayer(一):开始
前言
我是一名打算走音视频路线的android开发者。以此系列文章开始,记录我的音视频开发学习之路
ijkplayer系列文章目录:理解ijkplayer(一):开始
理解ijkplayer(二)项目结构分析
理解ijkplayer(三)从Java层开始初始化
理解ijkplayer(四)拉流
理解ijkplayer(五)解码、播放
Ijkplayer源码:
https://github.com/bilibili/ijkplayer
学习ijkplayer需要掌握的技能:
简单的c语言基础
android开发基础和java jni基础
linux或mac开发环境(windows环境下的
2019-11-23
音视频开发
mac开发环境配置
mac开发环境配置1. 安装zsh参考文章:
https://juejin.im/post/5d773da76fb9a06aff5e9a99
当zsh安装完后,用户目录的脚本.bash_profile不再被自动执行,需要放到zsh的脚本里一起执行:
打开.zshrc,并追加一行:
source ~/.bash_profile
2. 安装Homebrew
安装xcode command line tool
Xcode-select命令是什么
xcode command line tool
安装homebrew
/usr/bin/ruby -e "$(curl -fsSL https:
2019-11-23
操作系统
Kotlin协程(一)理解
最近这段时间抽空学习了一下Kotlin协程相关的知识,在此做一个总结和梳理
是什么kotlin协程是什么一个名为kotlinx.coroutines包下的库, 是由 JetBrains 开发的功能丰富的协程库,方便大家利用协程来完成异步处理的开发。
当我们创建协程(Coroutine)时,我们创建的是什么?一种类似于java.lang.Runnable,但比Runnable功能要强大的多的对象。
//launch函数是CoroutineScope的拓展函数,即launch{}函数需要该对象才能使用,以下代码不能直接使用
launch(Dispatchers.IO) {
//这段代码
2019-11-09
Kotlin
Gradle-常用工具脚本
基于gradle 4.6
本文记录一些常用的gradle工具脚本的写法,基于gradle4.6,不同版本的gradle应对照官方文档不同版本的DSL Reference参考对应的api的接口的使用。
1. clean整个项目有的时候有一些操作需要对root project和其下面所有的child project进行一个clean,那么可以参考如下的脚本实现:
//该task定义在root Project下。
task cleanAllProject(){
it.dependsOn("clean")
rootProject.subprojects{sub-
2019-11-05
Gradle
View#onKeyDown不调用
原因:当前View没有获得焦点。
只要当前的View获得了焦点,那么View的onKeyDown(),onKeyUp(),setOnKeyListener()等回调都会发生。
KeyEvent由操作系统接收用户输入产生,在应用层,到达顺序是:
ViewRootImpl->DecorView->Activity->ViewGroup->View
那么看ViewGroup的dispatchOnKeyEvent()方法:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (mInputE
2019-11-02
View
在AndroidStudio中使用其他的terminal程序
默认的termianl程序是windows自带的cmd,用起来十分的不方便,不支持shell的命令。AS支持对默认termianl的一个切换,在这里我切换成cmder。
安装cmder
配置cmder的目录到系统环境变量:
将系统环境变量写入到AS的terminal设置中,让AS启动terminal的时候去启动cmder:"cmd.exe" /k ""%CMDER_ROOT%\vendor\init.bat""
关闭AS的terminal,重新打开一个即可。
thanks:https://github.com/cmderdev/
2019-10-18
加快开发效率的工具