Bleoo

志同道合,一杯酒。

  • 主页
  • 随笔
  • Android

Bleoo

志同道合,一杯酒。

  • 主页
  • 随笔
  • Android

Butterknife的实现探究

2017-10-11

思路

  1. 分3个模块:API、注解、编译
  2. API模块是android模块,注解和编译模块是java模块
  3. 利用注解在编译期生成代码
  4. 通过API模块调用对应的编译代码(利用反射)
more >>
  • android

Android 5.0到Android 6.0+的so动态库的适配问题

2017-08-31

前言

先简单阐述下几个概念,这些不是重点。

  1. Android编译时候的 api 版本,指的是你要生成的这个 apk 所依赖的 sdk 版本,例如 api23 即是 Android 6.0。
  2. .so 动态链接库,为 Linux 下的库文件,Windows 是 .dll,Android 是基于 Linux 内核的,所以使用的是 .so,在安卓上面,一般由 C/C++ 语言进行 Jni 编程后,采用 NDK 工具编译后所生成的。
  3. .so的作用,主要是提供系统底层函数,供应用层使用。不用它行不?可以,在Android已经提供了的情况下,你不需要再自己添加,例如一个 View 的绘制,里面都有很多 Native 关键词的函数,这个就是底层函数,Android api 对应的是它已经提供了。
more >>
  • android

Android 共享元素动画的简单实现

2017-07-14

Activity A

1
2
3
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
fragment.getActivity(), holder.background, "event_cover");
ActivityCompat.startActivity(fragment.getActivity(), intent, options.toBundle());

Activity B

在控件内容填充完毕后

1
ViewCompat.setTransitionName(eventCover,"event_cover");

两Activity的View控件布局xml

1
android:transitionName="event_cover"

上述四处的TransitionName必须相同
xml中的transitionName必须有,不然可能出现动画不执行

注意

在需要执行Activity.finish()的地方需要做如下判断

1
2
3
4
5
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
finishAfterTransition();
} else {
finish();
}
  • Android

Android动态加载Apk资源

2017-04-28

通过DexClassLoader加载未安装的apk,提供资源供宿主app使用。因为apk是未安装的,不可能通过createPackageContext(…)方法来构建出一个context,所以这时只有在Resource上下功夫,来获取插件apk的Resource对象。

more >>
  • Android

Android动态加载Dex文件入门

2017-04-26

Android使用Dalvik虚拟机加载可执行程序,所以不能直接加载基于class的jar,而是需要将class转化为dex字节码,从而执行代码。优化后的字节码文件可以存在一个*.jar中,只要其内部存放的是*.dex即可使用。

more >>
  • Android

Android运行时权限库PermissionsDispatcher

2017-02-28

简介

该库方便了处理运行时权限的处理问题
github地址:https://github.com/hotchemi/PermissionsDispatcher

more >>
  • Android

Android蓝牙周边设备开发

2017-01-12

本文只讲述实际开发中的最基本的概念、用法及代码,不过多深入概念及源码。

什么是周边设备

  • BLE(蓝牙4.0+) 有两种状态模式:中心(center)及peripheral(周边)。
  • 大多数中心设备的扮演者是手机、电脑等能主动去连接别人的设备,而大多数周边设备就等着这些中心设备连接,如手环、血糖仪等。
  • Android从 Lolipop 开始支持了BLE Peripheral(周边设备)开发。
  • 如果你希望使Android设备开启为周边设备模式,请往下看。
more >>
  • Android
© 2017 Bleoo
Hexo Theme Yilia by Litten