Android
文章平均质量分 97
neuHenry
一个还没有入门的程序员!!!
展开
-
深入Android S (12.0) 探索Framework之输入系统IMS的构成与启动
Android 输入系统(Input System)的工作原理,包括:输入设备的管理、输入事件的加工方式及派发流程。首先输入设备包括:触摸屏,键盘,鼠标和手柄等,其中触摸屏与键盘是 Android 最普遍也是最标准的输入设备。当用户操作输入设备时,Linux内核接收到相应的硬件中断,然后将中断加工成原始的输入事件数据并写入其对应的设备节点中,在用户空间可以通过输入系统内部的读取函数将原始事件数据读出,并进行一系列翻译加工成Android输入事件,然后在所有的窗口寻找合适的事件接收者,并派发给它来消费该事件原创 2023-11-28 16:28:28 · 1279 阅读 · 0 评论 -
深入Android S(12.0)探索Framework之SystemServer进程的启动详解
SystemServer 作为 Zygote 进程 fork 出的第一个进程,其进程名为:system_server。其承载着整个 Framework 的核心服务,如创建并启动 ActivityManagerService、PackageManagerService、WindowManagerService、InputManagerService 等 90 多个核心系统服务。接下来一起深入学习一下 SystemServer 进程的创建与启动流程。原创 2023-11-14 23:27:11 · 376 阅读 · 0 评论 -
深度详解 Android R(11.0)Service 启动过程
服务 (Service) 是 Android 系统中 4 大应用程序组件之一,主要用途有:后台运行和跨进程访问。通过启动服务可以在不显示界面的前提下在后台执行那些不需要和用户交互且长期运行的任务,即使程序切换到后台,或者用户打开了另一个应用程序,服务仍然能够保持独立运行。通过 AIDL 服务可以实现不同进程之间的数据通信,后面详细解析。Service 的存在形式:本地服务、远程服务和前台服务。Service 的状态:启动状态和绑定状态,也可以说成是服务的两种启动方式。.........原创 2022-08-03 00:35:26 · 2236 阅读 · 1 评论 -
深度详解 Android 之 Context
在 Android 开发中、亦或是面试中都离不开四大组件的身影,而在创建或启动这些组件时,并不能直接通过 new 关键字后跟类名来创建实例对象,而是需要有它们各自的上下文环境,也就是本篇文章要讨论的 Context。Context 提供了关于应用环境全局信息的接口。它是一个抽象类,它的执行被 Android 系统所提供。它允许获取以应用为特征的资源和类型,是一个统领一些资源(应用程序环境变量等)的上下文。............原创 2022-07-18 22:19:56 · 7299 阅读 · 0 评论 -
深度详解 View.post() 为何能够获取到 View 的宽高值?
在文章中通过分析源码解析了获取不到 View 宽高值的原因,在文章结尾处留了一个问题,是打算后面继续分析解读的,但是却给忘了,欠下的总归是要弥补的,因此这里来补上,本文就来深度详解 View.post() 为何能够获取到 View 的宽高值?...............原创 2022-07-10 14:53:35 · 1746 阅读 · 7 评论 -
深度详解 Android S(12.0)屏幕刷新机制之 Choreographer
Android 的 UI 渲染性能是 Google 工程师们长期以来非常重视的,随着 Android 系统的不断演进和完善,Google 在 2012 年的 I/O 大会上宣布 Project Butter 计划,并在 Android 4.1 中正式开始实施,以优化 UI 渲染流畅性的问题。Project Butter 对 Android Display 系统进行了重构优化,引入了三个核心元素,即 VSYNC、Triple Buffering 和 Choreographer。..............原创 2022-06-30 23:22:35 · 3775 阅读 · 1 评论 -
深度详解 Android R(11.0)Activity 启动过程
文章目录前言一、Launcher进程请求ATMS1. Launcher 桌面的 App 图标入口2. Launcher ## startActivitySafely() 方法二、ATMS发送创建应用进程请求三、Zygote进程接受请求并孵化应用进程四、应用进程启动ActivityThread1.引入库2.读入数据总结前言面试中经常会被问到,让面试者简述一下 Activity 的启动流程,这个问题是考察面试者对源码的理解程度,要征服面试官获得满意的 offer 还是需要一步步深入去探索一下源码,梳理启动原创 2022-05-22 23:43:32 · 4856 阅读 · 4 评论 -
深度解析源码 onCreate() 和 onResume() 中获取不到View的宽高值?
首先,提出一个问题,下面三处打印输出的结果是什么呢?带着问题思考一下,然后猜测一下输出结果,之后我们再带着问题去探寻源码;public class MyActivity extends Activity { private static final String TAG = MyActivity.class.getSimpleName(); private Button mButton; @Override public void onCreate(Bundle sa原创 2020-06-26 21:00:16 · 1335 阅读 · 1 评论 -
分析Handler之同步屏障机制与Android的屏幕刷新机制在源码中的应用
说到Handler的消息机制,相信大家谈起这个的时候,多多少少都会有所了解,甚至会说到,还比较熟悉吧!那笔者也自信一把,算是比较熟悉!!!但是笔者在跟踪学习View的invalidate()、requestLayout()方法的源码时,总是会遇到这样一段不甚知晓的代码: @UnsupportedAppUsage void scheduleTraversals() { if (!mTraversalScheduled) { mTraversalSche原创 2020-06-17 21:19:03 · 962 阅读 · 1 评论 -
View的requestLayout()方法的源码分析
首先来看一下requestLayout()方法是做什么的?View#requestLayout(): /** * Call this when something has changed which has invalidated the * layout of this view. This will schedule a layout pass of the view * tree. This should not be called while the view原创 2020-06-15 02:29:44 · 828 阅读 · 0 评论 -
View的invalidate()方法的源码分析
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...原创 2020-06-12 19:29:52 · 4482 阅读 · 2 评论 -
统计一个ViewGroup中包含的子View的个数(递归和非递归实现)
编码实现统计一个ViewGroup中锁包含的子View的个数1、首先想到的肯定是递归实现,代码如下: /** * 递归统计一个View的子View数(包含自身) * * @param root * @return */ public int count1(View root) { int viewCount = 0;...原创 2019-03-20 17:41:46 · 2509 阅读 · 0 评论 -
Android设置TextView中部分字体颜色和点击事件
最近接到一个新需求,在一个TextView中实现部分字体的颜色不同于其它字体,且点击该部分文字时实现跳转的功能。一开始想着用多个TextView连起来实现功能,优化代码时再想想,这也太弱智了点儿吧! 果断Google搜索一下别的Coder是怎么实现的,其实Android在TextView中已经为开发者提供了这样的API:/** * This is the class for text ...原创 2018-10-24 19:32:44 · 7365 阅读 · 8 评论 -
Android设备支持的CPU架构
1、目前Android支持的CPU架构有以下几种:类型简介armeabi第5代 ARM v5TE,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢armeabi-v7a第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能(从2010年起)arm64-v8a第8代,64位,包含AArch32、AArch64两个执行状态对应32、64bitx86...原创 2018-12-12 16:45:23 · 3421 阅读 · 0 评论 -
Android隐藏标题栏ActionBar的几种方式
Android 3.0 系统之后,Google 引入了 ActionBar 要统一安卓应用的导航栏样式。但是由于 ActionBar 难以定制,在很大程度上制约了开发人员开发与设计的弹性。所以,较为常见的实现方式是:使用ViewGroup来封装一个自己的 HeaderBar。 自2014年 Google I/O 大会上 Material Design 横空出世后,市场上的应用又逐步趋向了...原创 2018-12-28 17:58:58 · 2946 阅读 · 0 评论 -
Macbook配置一套自己喜欢的高效的开发环境
俗话说:“工欲善其事必先利其器”,“磨刀不误砍柴工”等等,无不在告诉我们,要做好一件事,准备工作是非常重要的;对我们Coder来说,我们的MacBook Pro或者ThinkPad等等,那就是我们的武器啊!在开发、学习任务前,把我们这件装备配置好就显得尤为重要啦!笔者是Mac,就来配置一下我的武器吧! 1、安装Mac的包管理工具-Homebrew 终端中输入如下命令即可安装(由...原创 2018-09-12 23:46:21 · 11089 阅读 · 0 评论 -
Android开发屏幕适配方案
由于Android系统的开放性,任何用户、开发者、硬件厂商和运营商都可以对Android系统和硬件进行定制,修改成他们自己所需要的样子。使得随着Android设备的增多,设备碎片化、系统碎片化、屏幕尺寸碎片化和屏幕碎片化的程度也在不断加深;这种碎片化达到什么程度呢? 1、Android系统碎片化:基于Google原生系统,小米定制的MIUI(米粉一个)、华为定制的EMUI和魅族定制...原创 2018-09-09 16:32:25 · 3004 阅读 · 0 评论 -
FlowLayout流式布局实现搜索历史或热门标签
最近项目中有这么一个需求:实现搜索历史记录的展示,默认只展示最近搜索的10条记录,并且最近搜索的首先展示,其余按搜索时的先后顺序依次展示;笔者想到(FlowLayout+SharedPreferences+List+TextView)来实现; 看一下实现的效果图: 笔者想到用FlowLayout流式布局来展示搜索历史(自己实现或者使用开源库),为了实现最近搜索的最先展示,且不展...原创 2018-05-29 17:29:49 · 1313 阅读 · 2 评论 -
Android Studio录制手机屏幕并制作GIF演示动画
逛简书,知乎或者GitHub时,看到很多大神写的技术文章,文章中有很多GIF演示动画来展示其所写代码的效果,这些GIF演示动画生动、形象的展示了笔者所要表达的意图。平时喜欢写点博客的我也按捺不住了,于是就各种查、各种找,怎么制作这些生动而又形象的演示动画。原创 2017-06-10 10:43:12 · 2976 阅读 · 1 评论 -
Android点击View改变字体颜色和边框背景
最近要做一个仿网易严选的底部弹出式菜单,在弹出的菜单中可以选择具体的要买的商品,比如规格和购买数量等等;做到这里时笔者想着给规格按钮选项设置点击后改变字体颜色和边框背景,用来显示已选定的商品规格;原创 2017-07-01 15:22:15 · 1932 阅读 · 0 评论 -
Android之FlexboxLayout弹性布局的介绍
Google最近开源了一个和CSS3中FlexBox布局功能类似的flexbox-layout,项目地址:google/flexbox-layout ,Google将其引入以提高复杂布局的能力。 FlexBoxLayout可以理解成一种更高级的LinearLayout,不过比LinearLayout更加强大和灵活。原创 2017-06-26 20:24:36 · 1582 阅读 · 0 评论 -
SwipeToLoadLayout布局中添加自定义控件仿美团、饿了吗等下拉效果
SwipeToLoadLayout是一个可重用的下拉刷新和上拉加载控件,理论上支持各种View和ViewGroup(RecyclerView,GridView等)的刷新和加载,还支持自动刷新,手动刷新,自动加载等,这里我们使用它来实现我们所常见的几种下拉刷新效果,如百度外卖、饿了吗、京东商城、美团外卖、天猫、微博及天气的下拉刷新效果;原创 2017-07-04 09:43:40 · 2338 阅读 · 0 评论 -
Android界面设计语言Material Design的一些用法
介绍Android的Material Design,感受MaterialDesign的强大,同时对自己所学做总结;所写demo利用DesignSupport库,及开源项目库如CircleImageView库等;介绍ToolBar和滑动菜单、NavigationView控件、悬浮按钮和可交互提示、CardView、AppBarLayout和SwipeRefreshLayout和CollapsingToolbarLay等原创 2017-06-08 20:11:19 · 1963 阅读 · 0 评论 -
Android Studio常用的快捷键
整理一下使用Android Studio所常用的快捷键,方便自己以后查看;原创 2017-07-08 20:26:42 · 347 阅读 · 0 评论 -
Android xUtils3下载文件的使用
xUtils3简介 xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(246K), 并且特性强大, 方便扩展:稳定的基石: AbsTask和统一的回调接口Callback, 任何异常, 即使你的回调方法实现有异常都会进入onError, 任何情况下onFinished总会让你知道任务结束了.原创 2017-08-15 15:20:18 · 8309 阅读 · 5 评论 -
Android仿腾讯手机管家实现桌面悬浮窗小火箭发射的动画效果
模仿腾讯手机管家实现桌面悬浮窗小火箭发射的动画效果1、小火箭游离在activity之外,不依附于任何activity,不管activity是否开启,不影响小火箭的代码逻辑,所以小火箭的代码逻辑是要写在服务中; 2、小火箭挂载在手机窗体之上; 3、小火箭喷射火焰,两种图片轮流展示的动画集; 4、小火箭可以拖拽到任意位置; 5、小火箭拖拽到指定区域才可以触发发射效果; 6、小火箭喷射尾气动画效果;原创 2017-08-29 20:05:56 · 3923 阅读 · 2 评论 -
Android实现来电和去电的监听
写个实例实现Android中来电和去电的监听,来电可以使用PhoneStateListener对电话状态的改变进行监听,去电需要动态或者静态去注册广播接收器,对去电进行监听;原创 2017-08-30 09:48:39 · 6746 阅读 · 4 评论 -
Android Studio中安装Kotlin插件及如何使用
小感悟:最近面试的时候被面试官问到,有没有使用Kotlin写过什么东西,当时一脸尴尬的我只能回答,还没有使用过呢,面试官又问,我们程序员入门时经常写的HelloWorld也没写过吗?笔者一脸懵逼中……痛定思痛,之前Eclipse+ADT插件转Android Studio都转了,这点波折算什么,不就是学吗!!! Kotlin是一种在 Java虚拟机上执行的静态型别编程语言;原创 2017-09-25 10:13:29 · 2891 阅读 · 0 评论 -
Kotlin实现一个简单的登录界面
刚接触Kotlin的第一天,仿照QQ的登录界面,先写一个简单的登录界面,虽然笔者用的不是很熟,还在慢慢摸索,但是Kotlin是真的很简洁;原创 2017-09-25 21:19:41 · 8444 阅读 · 7 评论 -
Android Studio中如何导入和添加aidl文件
Eclipse中写的项目移植到Android Studio中,如何导入和添加aidl文件原创 2017-09-01 21:41:17 · 5086 阅读 · 0 评论 -
Android更新UI界面的几种方法的使用
更新UI界面:由于性能要求,Android不能在子线程中访问UI控件,只能在UI线程中更新UI,如果要想在其他线程中更新UI,可以通过以下几种方法更新UI:原创 2017-10-06 22:21:21 · 2864 阅读 · 3 评论 -
Android Studio NDK开发与调试所需配置及其使用
很多人习惯于Eclipse或源码环境下开发JNI应用,但是随着越来越多的Android开发者转战于Android Studio,使用Android Studio作NDK开发将越来越多,下面是笔者查找资料所做的笔记吧!介绍Android Studio中JNI、NDK、CMake、LLDB等;以及如何配置这些组件及使用这些组件进行NDK的开发与调试;原创 2017-10-19 10:34:23 · 3959 阅读 · 0 评论 -
Mac装完Oh My Zsh之后Android Studio 3.0中Terminal 中文显示乱码
问题:楼主在终端配置完 Oh My Zsh 之后,没有注意中文乱码的问题,之后在Android Studio Terminal 中提交代码时,commit时打字出现中文乱码,才懵逼了! 具体的乱码是啥样的我没有截图,就不贴出来了,下面说一下解决方法吧! 在终端中输入:open ~/.zshrc ,打开 .zshrc 文件,找到下面两行,将第二行的注释打开; 修改前:#...原创 2018-03-02 15:01:34 · 2393 阅读 · 0 评论 -
Android控件RecyclerView的基本用法
RecyclerView是Android提供的一个功能强大的滚动控件,是增强版的ListView和GridView,不仅可以轻松实现和ListView相同的效果,还优化了ListView中存在的各种不足之处;目前Android官方更加推荐使用RecyclerView,本文介绍一下Android Studio中RecyclerView的基本用法。原创 2017-05-17 20:20:40 · 906 阅读 · 0 评论