William的小星球 
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  •     

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   

解释Kotlin协程官方文档:(一)基础:

本系列文章用于解释kotlin官方文档中的示例代码。希望能帮助到你。 基础官方文档地址 https://www.kotlincn.net/docs/reference/coroutines/basics.html 作用域构建器import kotlinx.coroutines.* fun main() = runBlocking { // this: CoroutineScope launch { delay(200L) println("Task from runBlocking") } coroutineS
 2019-11-05   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   

JsonDeserializer和JsonSerializer可能引起无限循环调用导致StackOverFlow

1. 两种自定义方式Gson自定义序列化和反序列的方式有两种 通过GsonBuilder来注册适配器。 用@JsonAdapter注解来为类型或者属性指定适配器。 其中,以注解的方式用@JsonAdapter来实现自定义序列化或反序列化,gson的github的wiki页是没有的,但是参照这个类的注释,也很容易就能实现。 2. 例子场景: 首先,正常的json字符串是这样的结构: { "family":{ "Dad":"a", "Mon":"b"
 2019-10-26   第三方库   

用javah命令生成-h头文件

1. 配置JDK环境变量因为要用到javah的命令,所以需要配置jdk的环境变量,配置成功后,在命令行输入javah C:\Users\Administrator λ javah 用法: javah [options] <classes> 其中, [options] 包括: -o <file> 输出文件 (只能使用 -d 或 -o 之一) -d <dir> 输出目录 -v -verbose 启用详细输出 -h --help -?
 2019-10-20   ndk   

在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   加快开发效率的工具   
12345…21

搜索

Hexo Fluid