Android开发艺术探索笔记
文章平均质量分 93
提辖鲁
这个作者很懒,什么都没留下…
展开
-
Android中Activity、Dialog、Toast的Window创建过程
Android Window的创建过程Android中可以提供视图的地方有Activity、Dialog、Toast,除此之外还有一些依托Window而实现的视图,比如PopUpWindow、菜单,因此Activity、Dialog、Toast等视图都对应着一个Window,本篇将分析这些是土元素中的Window创建过程。Activity的Window创建过程activity的启动过程很复杂...原创 2019-09-17 20:05:18 · 1200 阅读 · 0 评论 -
Android 理解Window和WindowManager
Android 理解Window和WindowManagerWindow表示的是一个窗口的概念,它是一个抽象类,具体实现是PhoneWindow。创建一个Window只需要通过WindowManager即可完成,WindowManager是外界访问Window的入口。Window的具体实现是在WindowManagerService中,WindowManager与WindowManagerSe...原创 2019-09-05 13:34:47 · 510 阅读 · 0 评论 -
Android 属性动画工作原理
Android 属性动画工作原理属性动画要求作用的对象必须有set方法,它会根据传递的初始值和最终值以动画效果多次调用set方法,随着时间的推移,所传递的值越来越接近最终值。如果动画的时候没有传递初始值,则需要提供get方法,可以让系统获取属性的初始值。首先我们根据ObjectAnimator.onInt(mButton, "width", 500).setDuration(5000).sta...原创 2019-08-20 22:38:18 · 476 阅读 · 0 评论 -
Android View 工作原理分析
View的工作原理分析View的工作流程主要是指measure、layout、draw这三大流程,即测量、布局和绘制,其中measure确定View的测量宽/高,layout确定View的最终宽/高和四个顶点的位置,而draw则将View绘制到屏幕上。measure过程measure过程分两种,第一种是view,只需通过measure方法就可以完成测量过程。还有一种是ViewGroup,除了...原创 2019-08-20 16:18:21 · 208 阅读 · 0 评论 -
Android在Activity中获取View宽高
Android在Activity中获取View宽高在onCreate、onStart、onResume中获取不到View的宽高,因为View的measure过程和Activity的生命周期方法不是同步执行的,无法保证Activiy执行了onCreate、onStart、onResume时某个View已经完毕。因此想要在Activity中获取View的宽高需要用其他方式来解决:Activity/...原创 2019-08-18 22:39:12 · 820 阅读 · 0 评论 -
Android View 工作原理基础
View 工作原理基础本章主要介绍View的工作原理,了解了工作原理后才能作出比较完善的自定义View,View需要掌握三大流程:measure、layout和draw,除了三大流程以外,还需要掌握常见的回调方法,比如构造方法、onAttach、onVisibilityChanged、onDetach等。初识ViewRoot和DecorView了解ViewRoot和DecorView的概念有...原创 2019-08-15 13:37:56 · 244 阅读 · 0 评论 -
Android View 滑动
Android View 滑动View 滑动有三种方式可以实现View的滑动:通过View本身提供的scrollTo/scrollBy方法来实现滑动通过动画给View施加平移效果来实现滑动通过改变Viev的LayoutParams使得View重新布局从而实现滑动使用scrollTo/scrollByView提供了scrollTo/scrollBy来实现滑动,实现如下:/** ...原创 2019-07-21 18:41:21 · 281 阅读 · 0 评论 -
Android View 事件基础
Android View 基础View 基础知识本节主要介绍:View的位置参数、MotionEvent和TouchSlop、VelocityTracker,GestureDetector和Scroller对象什么是ViewView是Android中所有控件的基类,是界面层的一种抽象,代表了一个控件。除了View还有ViewGroup,ViewGroup继承于View,内部是可以有子Vie...原创 2019-07-18 22:48:59 · 381 阅读 · 0 评论 -
AIDL使用实例(kotlin)
AIDL使用实例(kotlin)对AIDL以及Binder机制还不太了解的建议先看这篇博客https://blog.csdn.net/lj402159806/article/details/85038382创建AIDL接口首先创建一个数据类文件和四个aidl文件public class Book implements Parcelable { public int book...原创 2018-12-19 14:08:15 · 1681 阅读 · 0 评论 -
Android中Binder与AIDL之间的关系
Android中Binder与AIDL之间的关系BinderAndroid中特有的一种进程间通信方式,一种虚拟的物理设备,设备驱动是/dev/binderAndroid中实现了IBinder接口的一个类ServiceManager连接各种Manager(ActivityManager、WindowManager等等)和相应ManagerService的桥梁应用层客户端和服务端进行通信的...原创 2018-12-16 16:49:12 · 2991 阅读 · 0 评论 -
JNI和NDK编程(四)JNI调用Java方法的流程
JNI调用Java方法的流程JNI调用Java方法的流程是先通过类名找到类, 然后在根据方法名找到方法的id, 最后就可以调用这个方法了. 如果是调用Java的非静态方法, 那么需要构造出类的对象后才可以调用它, 下面通过例子来演示一下如何在JNI中调用Java的静态方法.首先在java中定义一个静态方法供JNI调用.原创 2017-04-03 18:21:50 · 4491 阅读 · 0 评论 -
JNI和NDK编程(三)JNI的数据类型和类型签名
JNI的数据类型和类型签名JNI的数据类型包含两种: 基本类型和引用类型.基本类型主要有jboolean, jchar, jint等, 它们和Java中的数据类型对应关系如下表所示: JNI类型 Java类型 描述 jboolean boolean 无符号8位整型 jbyte byte 无符号8位整型 jchar char 无符号16位整型 jsho原创 2017-04-03 17:47:50 · 3317 阅读 · 0 评论 -
JNI和NDK编程(二)NDK的开发流程
NDK的开发流程NDK的开发是基于JNI的, 主要有如下步骤1. 下载并进行配置NDK首先要下载NDK. 这里我们直接在Android SDK Manager里下载. 然后为NDK配置环境变量, 步骤如下所示.首先打开当前用户的环境变量配置文件:vim ~/.bashrc然后在文件后面添加如下信息: export PATH=~/Documents/Android/android-sdk-lin原创 2017-04-03 17:16:23 · 1151 阅读 · 0 评论 -
JNI和NDK编程(一)JNI的开发流程
Java JNI本意为Java Native Interface(java本地接口), 它是为方便java调用C、C++等本地代码所封装的一层接口. 我们都知道,java的有点是跨平台, 但是作为优点的同时, 其在和本地交互的时候就出现了短板. Java的跨平台特性导致其本地交互的能力不够强大, 一些和操作系统相关的特性Java无法完成, 于是Java提供了JNI专门用于和本地代码交互, 这样就增强原创 2017-04-03 15:15:50 · 1543 阅读 · 0 评论 -
Android View 事件分发机制
Android View 事件分发机制点击事件传递规则在分析点击事件传递规则之前,首先要分析的对象是MotionEvent,点击事件的事件分发,其实就是对MotionEvent事件的分发过程,即当一个MotionEvent产生了以后,系统需要把这个事件传递给一个具体的View,而这个传递的过程就是分发过程。点击事件的分发过程由三个很重要的方法来完成:puhlic boolean disp...原创 2019-08-05 13:59:53 · 319 阅读 · 0 评论