Eateeer 的笔记屋


  • 首页

  • 标签

  • 归档

RadioButton在Android4.4调用setButtonDrawable(null)无效的问题

发表于 2016-12-19 |

今天遇到一个问题,在 Android 4.4 系统下,Java 代码布局中调用 RadioButton.setButtonDrawable(null) 无效,而在 xml 布局中设置元素属性 android:button="@null" 有效,并且在 Android 5.0+ 系统上调用 Java 代码布局也有效。

初步分析,应该是系统差异导致的,因此直接比较 Android 4.4 和 Android 5.0 系统代码中 RadioButton.setButtonDrawable() 方法的差异。

阅读全文 »

方法引用

发表于 2016-11-23 |

你可以使用 lambda 表达式来创建匿名方法,然而,有时候 lambda 表达式只是用来调用一个已存在的方法。这种情况下,直接调用方法的名字会更简单直接。方法引用就是干这种事的。

阅读全文 »

Handler与异步消息的源码解析

发表于 2016-11-20 |

在上一篇中,简单介绍了 Handler 的使用场景和常用方法,并且强调了 Handler 必须和 Looper 相关联才能使用 这一观点。由于 Looper 的构造方法是私有的,创建一个 Looper 的方法是调用 Looper.prepare(),如果当前线程中已经有了一个 Looper,那么调用这个方法就会抛出异常,说 “Only one Looper may be created per thread”。那么如何判断一个线程(注意是线程)里面有多个 Looper 呢?那么今天的主题就从这里开始。

阅读全文 »

Handler与异步消息处理

发表于 2016-10-31 |

Handler 在 Android 中的应用很广泛,基本上每个 Android 开发人员都会使用到它。本篇文章将会介绍 Handler 和异步消息机制相关的使用方法,下一篇会从源码的角度分析 Android 中异步消息处理的流程。

Android 中的异步消息处理框架由 Handler 、MessageQueue、Looper 等组成。Handler 是我们使用最多的一个类,主要负责发送和处理消息,MessageQueue 是一个队列,用来存储 Handler 发送来的消息,而 Looper 则是一个死循环。

阅读全文 »

BottomNavigationView 的使用

发表于 2016-10-20 |

BottomNavigationView 很早之前就在 Material Design 中出现了,但是直到 Android Support Library 25 中才增加了 BottomNavigationView 控件。

该控件使用方法如下:

  • 在 build.gradle 文件中增加依赖:
1
compile 'com.android.support:design:25.0.0'
阅读全文 »

Android 中的转场动画及兼容处理

发表于 2016-10-16 |

Android 中的动画有很多,除了在一个界面上使用帧动画、属性动画将一个或多个 View 进行动画处理以外,还可以用于两个界面之间过渡、跳转。在 Android 5.0 之前,我们已经有了 overridePendingTransition() 方法来实现一些转场效果。然而,在 Android 5.0 以后,转场效果更加炫酷。 比如下面的动画:

Anime_Demo

本篇文章,主要就是解说如何实现上述的效果。主要内容包括:

  • Android 5.0+ 的转场动画
  • Android 4.X 模拟实现 Android 5.0+ 转场效果。
阅读全文 »

在 Android Studio 2.2 中愉快地使用 C/C++

发表于 2016-09-21 |

注:官网上面的技术文章也在不断地汉化中,只是进度有点慢。在我翻译本篇文章的时候,官网没有对应的中文教程。经人提醒,该文章现在在官网已经有对应的中文版教程了,链接地址:向您的项目添加 C 和 C++ 代码。有需要的朋友可以直接阅读官方中文解说。

———–分割线————-

Android Studio 2.2 正式版发布后,看到更新内容中有提到对 C/C++ 支持的完善,表示非常高兴。然后将官网上这一部分内容翻译出来,如有错误,欢迎指正。

原文链接:Add C and C++ Code to Your Project

使用 Android studio,你可以将 C 和 C++ 代码编译成 native library(即 .so 文件),然后打包到你的 APK 中。你的 Java 代码可以通过 Java Native Interface(JNI)调用 native library 中的方法。

Android Studio 默认使用 CMake 编译原生库。由于已经有大量的代码使用了 ndk-build 来编译 native code,所以 Android Studio 同样也支持 ndk build。如果你想导入一个 ndk-build 库到你的 Android Studio 项目中,请参阅后文的 关联本地库与 Gradle。然而,如果你创建了一个新的 native 库工程,你应该使用 CMake。

本篇文章将会说明如何使用 Android Studio 来创建、配置 Android 项目,以支持 native code,以及将其运行到你的 app 中。

阅读全文 »

ViewPager 解析(一)

发表于 2016-09-18 |

ViewPager 用途比较广泛,本篇文章将会谈谈 ViewPager 和 PagerAdapter 的相关使用。

阅读全文 »

Android 中的指纹识别

发表于 2016-09-05 |

最近项目需要使用到指纹识别的功能,查阅了相关资料后,整理成此文。

指纹识别是在Android 6.0之后新增的功能,因此在使用的时候需要先判断用户手机的系统版本是否支持指纹识别。另外,实际开发场景中,使用指纹的主要场景有两种:

  • 纯本地使用。即用户在本地完成指纹识别后,不需要将指纹的相关信息给后台。
  • 与后台交互。用户在本地完成指纹识别后,需要将指纹相关的信息传给后台。

由于使用指纹识别功能需要一个加密对象(CryptoObject)该对象一般是由对称加密或者非对称加密获得。上述两种开发场景的实现大同小异,主要区别在于加密过程中密钥的创建和使用,一般来说,纯本地的使用指纹识别功能,只需要对称加密即可;而与后台交互则需要使用非对称加密:将私钥用于本地指纹识别,识别成功后将加密信息传给后台,后台开发人员用公钥解密,以获得用户信息。

下面先简单介绍一下对称加密和非对称加密的相关概念,然后对两种开发方式的实现分别进行讲解。

阅读全文 »

HashMap源码解析

发表于 2016-08-23 |

HashMap是基于哈希表的Map接口的非同步实现。此提供实现所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证顺序的一直不变。

在讲解HashMap之前,需要了解一下数据的存储。

阅读全文 »
1234
Eateeer

Eateeer

35 日志
4 标签
© 2019 Eateeer
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.3