handler在安卓开发中是必须掌握的技术,但是很多人都是停留在使用阶段。使用起来很简单,就两个步骤,在主线程重写handler的handleMessage( )方法,在工作线程发送消息。但是,有没有人想过这种技术是怎么实现的呢?下面我们一起探讨下。先上图,让大家好理解下handler机制:handler机制示例图上面一共出现了几种类,ActivityThread,Handler,MessageQueue,Looper,msg(Message),对这些类作简要介绍:ActivityThread:程序的启...
几个概念:1) 屏幕密度(dpi) :dot per inch,即每英寸像素数。ldpi(120),mdpi(160),hdpi(240),xhdpi(320)计算方法:以480x854,4.0inch手机为例,其对角线为4.0inch,对角线的像素数为:(480^2 + 854^2)开根号 = 979.所以其dpi = 979 / 4 = 245,约为2402)屏幕尺寸:对角线长度。有small,normal,large,extra large 3)方向:横屏和竖屏 4)分辨率:一个物理屏幕上总的像素点数,如480x800等。我们应用中并不使用分...
1.理解两个概念 抽象和衍生
抽象:从相似的事物中,抽取出共同点,得到相似的结构
衍生:以抽象结构为基础,添加些其他功能,得到具体的事物。
2. 系统OS,框架,应用程序,用户之间的关系
用户操作一个软件的时候,其实中间还隔了一层,那就是系统,例如,用户点击了屏幕上的一个按钮,就会对屏幕产生物理感应,屏幕将这种物理感应交给系统os处理,系统产生相应的事件对象,交给框架处理,框架交给相应的程序,进行相应的处理,然...
动态代码布局如何添加代码布局代码布局注意的问题代码布局和XML布局的性能比较如何添加代码布局for example —— 简单布局LinearLayout LinearLayout llayout = new LinearLayout(mContext);llayout.setOrientation(LinearLayout.VERTICAL);LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);llayout.setLayoutParams...
property动画是一个强大的框架,它几乎能使你动画任何东西。你可以定义一个动画来改变对象的任何属性,不论其是否被绘制于屏幕之上。一个属性动画在一定时间内多次改变一个属性(对象的一个字段)的值。要动画某个东西,你需指定对象的目标属性,比如位置,动画的持续时间,和改变的值的范围。 属性动画系统允许你指定以下动画属性:· Duration: 动画持续时间。默认是300 ms. · Time interpolation: 你可以指定一个函数来定义如何跟...
目录 Android限制只能在主线程中进行UI访问 Thread的实现 Android Thread 的构造方法 Android Thread 的start()方法 如何在我们自己的代码中去检测当前Thread是不是UI线程呢? Android限制只能在主线程中进行UI访问 我们知道,Android中规定了访问UI只能在主线程中进行,如果在子线程中访问UI的话,程序就会抛出异常Only the original thread that created a view hierarchy can touch its views. 查看源码...
1、Android中放置图片资源的文件夹Android中一般有drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi、drawable-xxhdpi等放置图片资源的文件夹,这几个文件夹分别对应的像素密度为:文件夹对应的像素密度drawable-ldpi120dpidrawable-mdpi160dpidrawable-hdpi240dpidrawable-xhdpi320dpi图-1另外自己可以创建一个默认的drawable文件夹,默认对应的像素密度为160dpi。2、Android中view设置背景图片时查找图片资源的顺序...
一. AndFix
AndFix的原理就是方法的替换,把有bug的方法替换成补丁文件中的方法。注:在Native层使用指针替换的方式替换bug方法,已达到修复bug的目的。AndFix采用native hook的方式,这套方案直接使用dalvik_replaceMethod替换class中方法的实现。由于它并没有整体替换class, 而field在class中的相对地址在class加载时已确定,所以AndFix无法支持新增或者删除filed的情况(通过替换init与clinit只可以修改field的数值)。Andfix可以...
本文地址,转载请注明:http://blog.csdn.net/dearsq/article/details/51251009硬件工作原理触摸屏的工作原理概括来说就是上报坐标值,X轴、Y轴的值。所以在 Linux 中是采用 input 子系统来对其进行实现。 具体的硬件原理可以参考这一篇文章 电容式触摸屏硬件基本原理。本文主要归纳其驱动基本原理 与 Android平台上的移植步骤,并分析总结移植过程中碰到的问题。驱动基本原理触摸屏的驱动部分大概涉及到三个点:中断Linux 内核的中...
要理解原理, read the fucking source1,从HandlerThread入手。 HandlerThread是android系统提供的类,继承Thread,是一个线程。请看run方法。 public void run() {mTid = Process.myTid();Looper.prepare();// #1synchronized (this) {mLooper = Looper.myLooper();// #2notifyAll();}Process.setThreadPriority(mPriority);onLooperPrepared();Looper.loop();// #3mTid = -1;}
在代码段的第1个标示中,是调用了Loope...
目前update-script脚本格式是edify,其与amend有何区别,暂不讨论,我们只分析其中主要的语法,以及脚本的流程控制。一、update-script脚本语法简介: 我们顺着所生成的脚本来看其中主要涉及的语法。 1.assert(condition):如果condition参数的计算结果为False,则停止脚本执行,否则继续执行脚本。 2.show_progress(frac,sec):frac表示进度完成的数值,sec表示整个过程的总秒数。主要用与显示UI上的进度条...
一、基础知识1、ViewRoot 和 DecorViewViewRoot 对应 ViewRootImpl 类,它是连接 WindowManager 和 DecorView 的纽带,View 的三大流程都是通过 ViewRoot 来完成的。在ActivityThread 中,当 Activity 对象被创建完毕后,会将 DecorView添加到 Window 中,同时会创建 ViewRoot 对象。DecorView 添加到窗口 Window 的过程。图片来自 https://yq.aliyun.com/articles/3005View 的绘制流程从 ViewRootImpl 的 preformTraversals 开始,...
这里主要跟一下android源码,看看BroadcastReceiver的工作原理。BroadcastReceiver分动态注册和静态注册,静态注册涉及到系统开机时的程序安装过程,这里关于静态注册BroadcastReceiver的过程暂时不理,等写到程序安装会有相应的解说。 我们将从普通的Activity.registerReceiver开始://android.app.ContextWrapper.java
464 @Override
465 public Intent registerReceiver(
466 BroadcastReceiver receiver, IntentF...
用文本标记语言来进行布局,用的最多的应该是HTML语言。HTML可以理解为有一组特殊标记的XML语言。一、iOS中xib与storyboard显示原理在iOS中主要的布置界面的方式有3种:代码,xib,storyboard。1. 代码代码布置界面是万能的,但通常很复杂。布置一个简单的界面可能需要很多行代码,因此十分繁琐。下面为创建一个按钮的代码,最少也要3行:UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd];btn.center = CGPointM...
Android使用SQLite数据库保存数据,那数据库版本升级是怎么回事呢,这里说一下。一、软件v1.0安装v1.0,假设v1.0版本只有一个account表,这时走继承SQLiteOpenHelper的onCreate,不走onUpgrade。1、v1.0(直接安装v1.0)二、软件v2.0有2种安装软件情况:1、v1.0 --> v2.0 不走onCreate,走onUpgrade2、v2.0(直接安装v2.0) 走onCreate,不走onUpgradev1.0版本只有一个account表,软件版本升级到v2.0了,但是v...