- 博客(98)
- 资源 (8)
- 收藏
- 关注
转载 Android 屏幕(View)坐标系统
首先明确一下 android中的坐标系统 :屏幕的左上角是坐标系统原点(0,0),原点向右延伸是X轴正方向,原点向下延伸是Y轴正方向。一、View的坐标 需要注意view的坐标是相对父容器而言的,包括:getTop()、getBottom(),getLeft(),getRight()。以getTop为例,函数源代码为:/*** Top position
2016-03-08 16:19:56 546
原创 学习Android有用的插件和工具推荐
此博文收藏常用的一些开发工具,主要包括但是不仅限于Android ,会随时保持不定期更新,添加一些开发中的好工具,也欢迎大家推荐!
2015-11-05 13:24:20 608
原创 Android博客佳文推荐
本篇文章主要纪录我在学习过程中,发现的非常给力的CSDNBlog和个人Blog,这些Blog都有一个共同的特点,即内容详实,讲解透彻,也算是给后来的初学者指一条路吧!只要你下定决心跟随强者的脚步,成为人们眼中的大神,只不过是时间问题! 下面排名不分先后 CSDN 鸿洋:http://blog.csdn.net/lmj623565791 爱哥:http...
2015-10-30 11:34:43 561 2
原创 Android 编程下 Touch 事件的分发和消费机制
ViewGroup 和 View 对与 Touch 事件相关的三个方法均能响应,而 Activity 对 onInterceptTouchEvent(MotionEvent ev) 也就是事件拦截不进行响应。另外需要注意的是 View 对 dispatchTouchEvent(MotionEvent ev) 和 onInterceptTouchEvent(MotionEvent ev) 的响应的前提是可以向该 View 中添加子 View,如果当前的 View 已经是一个最小的单元 View(比如 Text
2015-02-01 15:07:46 696
原创 变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 关于本题,前提是n个台阶会有一次n阶的跳法。分析如下:f(1) = 1f(2) = f(2-1) + f(2-2) //f(2-2) 表示2阶一次跳2阶的次数。f(3) = f(3-1) + f(3-2) + f(3-3) ...f...
2018-11-05 16:49:19 200
原创 Android中的消息机制 - 密切协作的 Handler,Looper,MessageQueue
Android中的消息机制 - 密切协作的 Handler,Looper,MessageQueue
2017-08-16 09:41:24 484
转载 Android热修复三部曲之动态加载补丁.dex文件
该篇作为Andriod热修复三部曲的最后一篇,本篇基于前两篇在之前的博客中,我们将.java文件打成了三个.dex文件 - classes.dex:程序必须启动的类,保证没问题的(Application,MainActivity) - classes2.dex:业务逻辑的类,如果出问题了可以动态替换。 - classes3.dex:jar包的类,基本上不会出现问题。那么
2016-10-09 12:49:40 506
转载 Android热修复三部曲之MultiDex 分包架构
在上一篇博客中,讲解了使用Ant打包的流程,也编写了相应的脚本代码。但是忘了说明怎么运行了。有两种方式:在Eclipse的build.xml 中,右键run as 即可。通过命令行形式进入到当前工程目录下,输入命令ant 工程名。上一篇漏下的已经补充。下面开始今天博客的主要内容。该篇博客主要分为三个部分:什么是分包架构分包架构的好处怎么实现分包什么是分包架构
2016-10-09 12:48:42 388
转载 Android 热修复三部曲之基本的Ant打包脚本
热修复从2015年开始,逐渐的被推广开来,现在已经是比较热门的技术。当Android发布的Apk中,因为有个bug,导致程序一直崩溃。如果此时发布版本,时间间隔太短,则会导致用户的使用繁琐,导致用户的流逝。而热修复达到的目的便是在不发布版本的情况下,动态修改其中包含bug的类,实现替换,达到修复bug 的目的。现在市面上有一些开源的热修复,例如androidFix等等。对于这些
2016-10-09 12:47:47 533
转载 Ant 脚本 多渠道打包
最近研究Android里用ant打多个渠道的apk包,终于搞出头绪!!走了很多错路,希望大家不要这样子!!下面就是个人的几点总结,希望对大家有帮助: 首先说的是我用的ant不是eclipse和android SDk里面自带的ant,而是从这里下载的 -- Ant官网http://ant.apache.org/ , 下载Ant,当然第一步就是安装ant了,步骤如下:
2016-08-22 16:43:38 774
原创 dx命令详解
usage:[html] view plain copy print?dx --dex [--debug] [--verbose] [--positions=style>] [--no-locals] [--no-optimize] [--statistics] [--[no-]optimize-list=file>] [--no-strict
2016-08-21 17:26:29 4978
原创 aapt的常用命令
1. 列出apk包的内容 aapt l[ist] [-v] [-a] file.{zip,jar,apk}-v 以table形式列出来-a 详细列出内容 例如:aapt l ,这个命令就是查看apk内容2. 查看apk一些信息aapt d[ump] [--values] WHAT file.{apk} [asset [asset ...]]bad
2016-08-21 17:24:41 298
转载 Ant自动编译打包&发布 android项目
Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了。1 Ant自动编译打包android项目 1.1 Ant安装 ant的安装比较简单,下载ant压缩包 http://ant.apache.org (最新的为1
2016-08-20 17:47:18 367
转载 命令行开发、编译、打包Android应用程序
流程概述:1、打包资源文件,生成R.java文件2、处理aidl文件,生成相应java 文件3、编译工程源代码,生成相应class 文件4、转换所有class文件,生成classes.dex文件5、打包生成apk6、对apk文件进行签名7、对签名后的apk文件进行对其处理Android SDK提供了一系列命
2016-08-20 17:39:38 2355
转载 Android插件化框架和热修复技术的资料收集和汇总
本文出自 :https://www.figotan.org/2016/08/12/android-plugin-and-hotfix-collections/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io插件化框架一个APP功能的堆叠和业务的蓬勃发展,导致APP越来越庞大和臃肿,每一个APP都有一颗超级APP
2016-08-15 18:05:03 490
转载 Android编译时注解框架系列1-什么是编译时注解
概述Android编译时注解框架从入门到项目实践。该系列将通过5篇博客一步步教你打造一个属于自己的编译时注解框架,并在之后开源出基于APT的编译时注解框架。提到注解,普遍都会有两种态度:黑科技、低性能。而使用注解往往可以实现用非常少的代码作出匪夷所思的事情,比如这些框架:ButterKnife、Retrofit。但一直被人诟病的是,运行时注解会因为java反射而引起较为严重
2016-08-15 13:46:34 1136
转载 Android编译时注解框架系列2-Run Demo
概述先讲一下编写《Android编译时注解框架》的初衷吧,APT其实并不难,可以说是简单且高效,但关于APT的资料却并不多,甚至很多人都不知道这么一个技术。国内关于APT的博客屈指可数,唯二找到的几篇初级讲解一个是用Eclipse写得,一个是用AndroidStudio加Intellij。刚开始着实踩了不少坑,但事实是,APT完全可以用AndroidStudio单独实现。光是项目搭建就如此
2016-08-15 13:45:36 510
转载 Android编译时注解框架3-Run Project:OnceClick
概述因为编译时注解框架前期项目搭建部分需要较多的图文讲解,所以前一章《Android编译时注解框架-Run Demo》只是实现了最简单应用,或许注解信息,并没有生成代码。本章将以生成代码为重点进行一个案例讲解。框架名称:OnceClick框架功能:功能就是它的名字:在一定时间内,按钮点击事件只能执行一次。未到指定时间,不执行点击事件。框架背景:从用户的角
2016-08-15 13:44:40 548
转载 Android编译时注解框架4-爬坑
概述因为有关APT的资料过少,又因为是Java Moudle +Android Moudle的使用方式,在项目编写过程中,会有一些匪夷所思的奇怪问题~入门阶段真的是步履维艰。这篇博客就是编写《Android编译时注解框架》系列中,将所遇到的一些坑列举出来,并给出一些绕过坑的方法。(注意哦~是绕过,坑还在,没有填~因为不知道这坑咋来的……)随时踩坑,随时更新~坑1
2016-08-15 13:38:51 3370
转载 Android编译时注解框架5-语法讲解
概述本章内容主要对APT一些语法进行简单讲解。apt的学习资料真的太少了,我的学习方法基本上只能通过看开源库的源码猜、看源码注释猜、自己运行着猜……这里对猜对的结果进行一个总结,让后来者可以更快的上手。第一次写这种类型的博客,总结的可能有些分散,建议结合开源库源码学习。自定义注解相关定义注解格式: public @interface 注解名 {定义体}
2016-08-15 13:38:12 2466 1
转载 APK魔鬼瘦身计划
瘦身前因为平时就考虑到大小的限制,所以很多工作已经做过了,如下列举现在的状态:7.3M(Debug版本)和6.5M(Release版本)开启minifyEnabled开启shrinkResources已经去除不相关的大型库图片和代码已经经历过粗略的一轮清理开始魔鬼瘦身1. tinypng有损压缩android打包本身会对png进行无损压缩,不信大
2016-02-26 15:43:00 588
转载 Android夜间模式最佳实践
由于Android的设置中并没有夜间模式的选项,对于喜欢睡前玩手机的用户,只能简单的调节手机屏幕亮度来改善体验。目前越来越多的应用开始把夜间模式加到自家应用中,没准不久google也会把这项功能添加到Android系统中吧。业内关于夜间模式的实现,有两种主流方案,各有其利弊,我较为推崇第三种方案:1、通过切换theme来实现夜间模式。2、通过资源id映射的方式来实现夜间模式。3
2016-01-07 12:04:59 717
转载 内存泄露从入门到精通三部曲之常见原因与用户实践
常见原因1.集合类集合类如果仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用。如果这个集合类是全局性的变量 (比如类中的静态属性,全局性的 map 等即有静态引用或 final 一直指向它),那么没有相应的删除机制,很可能导致集合所占用的内存只增不减。 2.单例模式不正确使用单例模式是引起内存泄露的一个常见问题,单例对象在被初始化后将在
2015-11-20 09:55:53 418
转载 内存泄露从入门到精通三部曲之排查方法篇
1 最原始的内存泄露测试重复多次操作关键的可疑的路径,从内存监控工具中观察内存曲线,是否存在不断上升的趋势且不会在程序返回时明显回落。这种方式可以发现最基本,也是最明显的内存泄露问题,对用户价值最大,操作难度小,性价比极高。2 MAT内存分析工具2.1 MAT分析heap的总内存占用大小来初步判断是否存在泄露在Devices 中,点击要监控的程序。
2015-11-17 10:23:32 399
转载 内存泄露从入门到精通三部曲之基础知识篇
一、首先以一个内存泄露实例来开始本节基础概念的内容:实例1:(单例导致内存对象无法释放而泄露)可以看出ImageUtil这个工具类是一个单例,并引用了activity的context。试想这个场景,应用起来以后,转屏。转屏以后,旧MainActivity会destroy,新MainActivity会重建,导致单例ImageUtil重新getInstance。
2015-11-17 09:57:56 451
原创 Android中自定义仿IOS回弹效果的ListView
ios中有一个控件回弹的效果,比如listview ,拉动到第一条或者最后一条数据的时候,还可以继续拉动,松手就回弹到原来位置,很赞,其实在android中实现起来也非常简单,listview有两个 方法,提供了我们这样实现的可能,只需要重载 这两个方法即可@Override public void setOverScrollMode(int mode) { super.setO
2015-11-16 14:46:21 1264 2
原创 Gradle打包那些事儿
使用gradle打包apk已经成为当前主流趋势,我也在这个过程中经历了各种需求,并不断结合gradle新的支持,一一改进。在此,把这些相关的东西记录,做一总结。
2015-11-13 11:06:27 1754
转载 携程Android App插件化和动态加载实践
编者按:本文为携程无线基础团队投稿,介绍它们已经开源的Android动态加载解决方案 DynamicAPK ,本文作者之一,携程无线研发总监陈浩然将会在 ArchSummit北京2015架构师大会 上分享架构优化相关内容,欢迎关注。携程Android App的插件化和动态加载框架已上线半年,经历了初期的探索和持续的打磨优化,新框架和工程配置经受住了生产实践的考验。本文将详细介绍Androi
2015-11-05 09:35:04 1232
转载 Android源码分析-全面理解Context
前言Context在android中的作用不言而喻,当我们访问当前应用的资源,启动一个新的activity的时候都需要提供Context,而这个Context到底是什么呢,这个问题好像很好回答又好像难以说清楚。从字面意思,Context的意思是“上下文”,或者也可以叫做环境、场景等,尽管如此,还是有点抽象。从类的继承来说,Context作为一个抽象的基类,它的实现子类有三种:Applica
2015-11-03 17:16:31 454
转载 公共技术点之面向对象六大原则
概述在工作初期,我们可能会经常会有这样的感觉,自己的代码接口设计混乱、代码耦合较为严重、一个类的代码过多等等,自己回头看的时候都觉得汗颜。再看那些知名的开源库,它们大多有着整洁的代码、清晰简单的接口、职责单一的类,这个时候我们通常会捶胸顿足而感叹:什么时候老夫才能写出这样的代码!在做开发的这些年中,我渐渐的感觉到,其实国内的一些初、中级工程师写的东西不规范或者说不够清晰的原因是缺乏
2015-11-03 16:51:56 481
转载 Android设计模式源码解析之原型模式
1. 模式介绍模式的定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。模式的使用场景类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗;通过 new 产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式;一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用,
2015-11-03 16:50:40 319
转载 Android设计模式源码解析之桥接模式
模式介绍模式的定义将抽象部分与实现部分分离,使它们都可以独立的变化。模式的使用场景如果一个系统需要在构件的抽象化角色和具体化角色之间添加更多的灵活性,避免在两个层次之间建立静态的联系。设计要求实现化角色的任何改变不应当影响客户端,或者实现化角色的改变对客户端是完全透明的。需要跨越多个平台的图形和窗口系统上。一个类存在两个独立变化的维度,且两个维度都需要进行扩展。
2015-11-03 16:50:11 877
转载 Android设计模式源码解析之命令模式
1. 模式介绍模式的定义将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。模式的使用场景系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互。系统需要在不同的时间指定请求、将请求排队和执行请求。系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作。系统需要将一组操作组合在一起,即支
2015-11-03 16:49:46 444
转载 Android设计模式源码解析之责任链模式
1. 模式介绍模式的定义一个请求沿着一条“链”传递,直到该“链”上的某个处理者处理它为止。模式的使用场景一个请求可以被多个处理者处理或处理者未明确指定时。2. UML类图角色介绍Client:客户端Handler:抽象处理者ConcreteHandler:具体处理者3. 模式的简单实现简单实现的
2015-11-03 16:49:14 656
转载 Android设计模式源码解析之迭代器(Iterator)模式
1. 模式介绍模式的定义迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。模式的使用场景 Java JDK 1.2 版开始支持迭代器。每一个迭代器提供next()以及hasNext()方法,同时也支持remove()(1.8的时候remov
2015-11-03 16:48:26 1127
转载 Binder中的代理模式
Binder中的代理模式再说Binder中的代理模式之前,我们需要先看看代理模式的简单实现,这一部分内容采用了《JAVA与模式》之代理模式这篇文章中的代码示例和uml类图。1. 模式介绍代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。模式的使用场景就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下
2015-11-03 16:47:49 1282
转载 Android设计模式源码解析之策略模式
1. 模式介绍模式的定义策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。注:针对同一类型操作,将复杂多样的处理方式分别开来,有选择的实现各自特有的操作。模式的使用场景针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。需要安全的封装多种同一类型的操作时。出现同一抽象多个子类,而又需
2015-11-03 16:47:07 373
转载 Android设计模式源码解析之模板方法模式
1. 模式介绍模式的定义定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模式的使用场景多个子类有公有的方法,并且逻辑基本相同时。重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现。重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数约
2015-11-03 16:46:35 338
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人