android
文章平均质量分 62
Justwen26
这个作者很懒,什么都没留下…
展开
-
InputMethodFramework学习记录-前言
从毕业到现在已经从事android系统开发已经整整3年了,作为一个非科班出身的码农,时常感到压力很大,总是惶恐自己到底会什么。回想起这3年,除了第一年有兴趣写写PPT,研究下源码,后来只是周期性的处理bug。在工作上得心应手之后更是很少去学习新的东西,看了一些书,可也记不得什么了。所以决定还是在某个地方留下点东西,也算是给自己定下一个目标,去好好研究android framework。...原创 2016-08-06 23:45:29 · 471 阅读 · 0 评论 -
Android 插件化分析(1)- 反射
Java中有一个非常强大的技术:反射。通常我们可以使用反射技术去调用一个类的私有方法或者是访问和修改一个私有属性。 1. 如何获取一个类的类型1.1 直接通过一个类的对象获取它的类型。 String reflect = "reflect"; Class clz = reflect.getClass();1.2 通过类的命名空间和类名去获取类型...原创 2018-11-18 00:09:56 · 214 阅读 · 0 评论 -
Android 插件化分析(5)- 加载外部dex
Android 插件化能从外部下载apk并加载主要依赖于ClassLoader。ClassLoder是一个抽象类,其中最重要的是BaseDexClassLoader及其子类PathClassLoader和DexClassLoader. public DexClassLoader(String dexPath, String optimizedDirectory, ...原创 2018-11-22 01:31:27 · 508 阅读 · 0 评论 -
Android 插件化分析(4) - 启动一个没有在manifest注册的Activity
Activity必须要在manifest里申明,否则会抛出ActivityNotFoundException。这个是大家再熟悉不多的Android开发规则。但是所谓的插件化就是要在不安装新的apk的情况去修复bug或者增加新的功能,增加一个新的Activity是再正常不过的要求,所以我们就需要利用反射和动态代理去实现这一个要求。之前分析过,要启动一个Activity我们需要把Intent发...原创 2018-11-22 01:58:31 · 1532 阅读 · 1 评论 -
Android 插件化分析(3)- Activity启动流程
在真正分析插件化技术前,我们必须了解一些必要的关于Android四大组件的相关知识。以Activity为例,我们需要了解Activity启动过程,才能有效的进行Hook实现插件化。以Android 8.1为例我们启动一个Activity通常会使用startActivity方法,但是在Activity内部最终都会调用startActivityForResult方法 publi...原创 2018-11-18 21:52:10 · 242 阅读 · 0 评论 -
LeakCanary 原理和用法简单总结
LeakCanary是Square公司基于MAT开发的一款监控Android内存泄漏的开源框架。Java基础知识在总结之前需要先了解一些Java的基础知识。1. 强引用通常可以认为是通过new出来的对象,即使内存不足,GC进行垃圾收集的时候也不会主动回收。Object obj = new Object();2. 软引用在内存不足的时候,GC进行垃圾收集的时候会被GC回...原创 2018-08-05 13:19:57 · 4081 阅读 · 0 评论 -
Android 输入法框架 (2)- 输入法显示和隐藏
通常显示或者隐藏输入法有以下三个场景当一个窗口焦点改变的时候,会根据Window属性控制输入法的显示 App主动调用imm::showSoftInput或者imm::hideSoftinputFromWindow 输入法自己调用ims:requestShowSelf或者ims:requestHideSelfWindow焦点改变当window获得焦点时会调用imm::onPostWin...原创 2019-03-06 15:40:25 · 2036 阅读 · 1 评论 -
TextInputLayout简单用法:hintText上浮动画以及为EditText设置错误信息
前几天在某个app的注册界面发现当编辑框获得焦点的时候,hintText会自动上浮,当时觉得这app做的还挺好的,居然还设置了动画效果。结果后来百度了一下,发现居然是google提供的support库里自带的。。只能/** * Layout which wraps an {@link android.widget.EditText} (or descendant) to show a flo原创 2017-05-01 21:12:05 · 2519 阅读 · 0 评论 -
PopupWindow.showAtLocation理解
最近开发一个新功能的时候遇到了popupWindow显示位置问题,于是好好的研究了下使用方法和源码,发现之前对showAtLocation一直是错误的理解。showAtLocation 是popupWinow的一个public方法,用于在一个特定的问题显示contentView。这个方法一共有4个参数:public void showAtLocation(View parent原创 2017-03-12 16:56:30 · 9639 阅读 · 3 评论 -
判断状态栏是否显示以及获取状态栏高度的方法
前段时间遇到一个问题,需要在一个popupWindow里计算当前状态栏的高度,百度了下相关的方法,要么是直接读取系统里状态栏高度的值,但是无法判断状态栏是否显示,要么就需要在一个activity里通过getWindow获取window对象来判断,有局限性。自己鼓捣了半天,外加百度来的一些信息,想出一个可以同时判断状态栏是否显示以及获取状态栏高度的方法,还不依赖于activity。为了方便自己对原创 2017-02-28 22:13:40 · 3825 阅读 · 0 评论 -
FragmentTabHost用法简介
最近接到新的需求,要求把原本用TabActivity实现词库UI界面重新使用Fragment来实现。不得不吐槽当初开发的人,居然还用TabActivity开发。因为没有滑动切换界面的需求(如果有滑动需求,建议直接用ViewPager实现),为了尽量少的改动代码,所以采用了FragmentTabHost去实现。FragmentTabHost 适用范围 适用范围同TabAct原创 2017-03-27 22:44:00 · 439 阅读 · 0 评论 -
RecycleView实现左右滑动监听和上下拖拽调换顺序
之前想实现ListView右滑删除和上下拖拽交换位置的功能,但是找来找去,要么就实现上比较复杂,要么就是代码太老了。从github找了几个开源项目,但是总是有这样那样的bug。但是后来得知看到Google居然已经内置了这两个功能,只需要使用v7包里的RecycleView去实现就可以了。代码如下package justwen.demorecycleview;import and原创 2017-01-08 22:00:35 · 2811 阅读 · 0 评论 -
Android 输入法框架 (1)
以下来自android官网的介绍:Architecture OverviewThere are three primary parties involved in the input method framework (IMF) architecture:The input method manager as expressed by this class is the central ...原创 2017-01-03 23:25:49 · 1862 阅读 · 0 评论 -
Android 插件化分析(2)- 动态代理
代理模式是一个非常常用的设计模式,如果一个类的名称带有Proxy,基本就是使用了代理模式。代理模式为其代理的对象提供了访问的控制。UML图如下public interface IObject { void run();}class ObjectImpl implements IObject { @Override public void run(...原创 2018-11-18 20:47:36 · 254 阅读 · 0 评论