安卓开发之屏蔽按键抖动,连击,长按事件

博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917

每日一景

缘由


今天来个小知识点,也许遇到的人不多,但还是记录下。现在安卓机很少有实体键,老罗的情怀也只剩下一丝丝。但是除去手机,其他一些设备,比如电视,盒子等很多还有实体键,那么实体键在按下后就有一些问题,“抖动”和“连击”。

在开发中,我这里有一个很重要的操作,是实体键触发的,在实际测试中,会出现按下一次,多次触发的问题,那么就需要解决下,其实,解决方法也不难,我们开始吧。

ViewPager 嵌套百度地图事件冲突的解决方法

博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917

每日一景

问题


主 Activity 由一个自定义的 ViewPager 控制,包含多个 fragment,其中一个 fragment 包含一个百度地图 View,当左右滑动百度地图的时候,地图不动,只能望着 ViewPager 左右滑动的脚步而叹息,导致事件冲突。

解决之路


这个问题从开始就有,只是感觉事件分发有些复杂,没深入研究,网上很多大神关于这个知识点有很多的分享,也收获了不少,曾经按照《开发艺术探索》里的方法解决,最终地图的事件解决,又导致其他 View 冲突,不能操作,这个真心没法忍啊。

这个问题一直在我的心里,始终没有放下,只要看到关于事件分发的文章,我都会看一下,看能否对此有帮助,然而,一无所获。

直到今天,晚上,有心人天不负,无意的,我看到一个群里的群主这么写到:

EventBus3 简单使用及注意点

博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917

每日一景

EventBus3 简介


EventBus Android 发布/订阅事件总线,可简化 Activities, Fragments, Threads, Services 等组件间的消息传递,可替代 Intent, Handler, BroadCast ,接口等传统方案,更快,代码更小,50K 左右的 jar 包,代码更优雅,彻底解耦。EventBus3 是最新版本,官网地址:

https://github.com/greenrobot/EventBus

Android Studio 引用系统 jar 包的正确姿势

博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917

每日一景

Android Studio 如何引用 jar 包,相信大家都会操作的,现在问题来了,对于系统里的 jar,比如 framework.jar该如何配置呢?

这里来个简单的需求吧,我们自己编译系统,并且有串口驱动,该驱动有提供 so 和 jar。这些文件配置到系统里面,当jar更新,api 不变的话,只要更新系统就可以,而应用程序可以不变而采用系统最新的 jar 包。

也就是说,编译时引用jar包,而不把该 jar 打包进 apk,而apk运行时采用系统里面的 jar 即可。

这个需求在 eclipse 里面很好配置,只要设置 jar 为系统 jar 就可以,那么 AS 该如何配置呢?

jni 开发错误之 java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol tcgetattr referenced by libserial_port.so...

博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917

每日一景

昨天把串口的驱动代码重新编译下,出现了问题:

1
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol tcgetattr referenced by libserial_port.so...

一般 jni 开发的话,C 代码命名常出错,检查了下,是 OK 的,然后 google了下,发现基本就下面两个:

[Android 调试] android串口通信问题,基于android studio
NDK UnsatisfiedLinkError when lowering project api level 21 to 19

而 stackoverflow 的哥们 rebuild 就好了,我各种折腾也不见好呐,于是看到上一篇 eoe 的,给了我思路:

我们看下包含该函数 **tcgetattr** 的文件, 比较下 NDK api 19 和 23 的 termios.h 文件:

23 的该文件目录:D:\Android\Sdk\ndk-bundle\platforms\android-23\arch-arm\usr\include

Android Studio clean 时产生 Error:Execution failed for task ':app:mockableAndroidJar' > java.lang.NullPointerException (no error message)

博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917

每日一景

Android Studio 使用,clean 后 gradle message 出现如下错误:

1
2
Error:Execution failed for task ':app:mockableAndroidJar'.
> java.lang.NullPointerException (no error message)

error

编译能通过,运行也正常,但是强迫症啊,你懂吧 T_T

java 基本数据类型及数组使用集锦

博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917

每日一景

Arrays.copyOf与System.arrayCopy


数组拷贝,有Arrays.copyOf与System.arrayCopy,区别是System.arraycopy要求你必须提供一个目标数组,而Arrays.copyOf不用你提提供目标数组,其内部实现就是用的 System.arrayCopy

另外,这个Arrays类有很多实用方法,比如Arrays.toString(int[] ints),可以直接把数组转成字符串,参数是8种基本数据类型数组和Object数组

自动装箱和拆箱


jdk1.5 新增加的技能,自动装箱允许我们将基本类型和装箱基本类型(Boxed Primitive Type)混用,按需自动装箱和拆箱

它们之间性能是有明显的差别的(基本类型更优),所以优先使用基本数据类型——第2章-创建和销毁对象

Android Studio中常用插件及浅释

博客: 安卓之家
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917

美景

插件可以来这个仓库查找:Android Studio Plugins

这里给出几个平时常用到的as插件,方便我们的开发。点击标题就直接可以进入插件的github源码查看。

如何自己开发插件,请参考鸿洋大神的博客:自己编写Android Studio插件 别停留在用的程度了

.ignore


as第一大插件,版本控制必备,.gitignore内容写法,来这里看看:git使用之二——.gitignore文件详解

,
Fork me on GitHub