
andorid 开发
文章平均质量分 94
废墟的树
不断的总结,不断的积累...
展开
-
Android属性动画Property Animation系列三之LayoutTransition(布局容器动画)
在上一篇中我们学习了属性动画的ObjectAnimator使用,不了解的可以看看 Android属性动画Property Animation系列一之ObjectAnimator。这一篇我们来学点新的东西。做项目的时候应该碰到这种问题:根据不同条件显示或者隐藏一个控件或者布局,我们能想到的第一个方法就是 调用View.setVisibility()方法。虽然实现了显示隐藏效果,但是总感觉这样的显示隐藏原创 2015-05-25 10:57:07 · 11093 阅读 · 2 评论 -
Android View触摸事件传递机制
PS:以现在的眼光看以前写的博客感觉写的很烂,或许或一段时间再看现在的博客会有同样的感觉。所以每时每刻都去学习,去发现和理解新的东西。引言由于之前写的一篇关于Android事件传递顺序的博客质量太差,可能是理解不到位的原因,故最近又花了许多时间再次去看Android源码,看完之后有了新的理解,所以打算重新整理这篇博客。理解Android触摸事件传递机制有助于日后的开发以及自定义一些手势效果等。注意:原创 2015-08-08 11:01:02 · 6852 阅读 · 5 评论 -
Android Activity应用窗口的创建过程分析
【转载请注明出处:http://blog.csdn.net/feiduclear_up CSDN 废墟的树】前言所谓的窗口(Window)就是一个显示在手机屏幕上可视化视图的一片区域。在Android中窗口是一个抽象的概念,每一个Activity就对应着一个窗口,而所有的窗口都是由视图(View)来呈现,而我们知道View构成的一个树形结构的视图就组成了一个Activity的界面了。在Android原创 2015-10-17 18:47:05 · 8643 阅读 · 5 评论 -
Android 导航栏ActionBar和状态栏StautsBar的定制
有关Theme主题<resources> <!-- 所有主題可以添加 .NoActionBar 让其变成无ActionBar的Activity--> <!-- 所有使用AppCompat兼容主題前提條件如下: 1.当前Activity继承AppCompatActivity 2.添加'com.android.support:appcompat-v7:23.0原创 2015-12-20 14:49:12 · 4830 阅读 · 0 评论 -
详解Android 触摸事件处理和传递过程的来龙去脉
前言前面有两篇博客从源码角度分析了Android中View的触摸事件处理和ViewGroup的触摸事件传递过程,对于初学者来说可能直接从源码了解Android触摸事件有点门槛,那么这篇博客我们不分析源码,尽量用简介的语言和简单的例子来详细解释Android触摸事件的处理和触摸事件传递的过程。Android触摸事件流程简述这里我将触摸事件理解为两部分:触摸事件的传递过程触摸事件的处理过程触摸事件原创 2015-12-20 17:57:41 · 4518 阅读 · 1 评论 -
自己动手写Android数据库框架
前言相信不少开发者跟我一样,每次都很烦恼自己写数据库,而且那些数据库语句也经常记不住。当然网上也有很多很好的数据库框架,你可以直接拿来用,但是 很多时候我们的项目,特别是一个小型的Andrond应用原本用到的数据库结构比较简单,没必要去用那些有点臃肿的框架。当然,即使你用那些框架,当你遇到问题时,你是否也得去修改它?你要修改别人的框架必须的读懂他人的设计代码。所以不管从那个角度出发,你都得掌握简单的原创 2016-01-23 22:18:25 · 4148 阅读 · 6 评论 -
Android 地理位置Location服务之LocationManager,Geocoder详解
前言Android 系统提供了地理位置服务相关的API方便开发者去获得当前地理位置。在android framework层的android.loaction包下面主要提供了如下两个类来帮助开发者来获取地理位置信息。LocationManager:用于获取地理位置的经纬度信息Geocoder:根据经纬度获取详细地址信息 / 根据详细地址获取经纬度信息今天我们通过简单例子来详细说明原创 2016-02-21 14:52:55 · 20463 阅读 · 4 评论 -
Android studio 使用NDK工具实现JNI编程
前言:Android开发中经常会使用到第三方的.so库,在使用.so库的时候就要用到JNI编程。JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。开发中一般都用第三方的库,很多时候也可能我们自己来编写C或者C++来实现JNI编程,这篇博客主要是介绍Android studio 使用NDK工具来开发JNI编程。环境配置JN原创 2016-04-02 23:02:36 · 3855 阅读 · 1 评论 -
Android ViewGroup 触摸事件传递机制
引言上一篇博客我们学习了Android View 触摸事件传递机制,不了解的同学可以查看Android View 触摸事件传递机制。今天继续学习Android触摸事件传递机制,这篇博客将和大家一起探讨ViewGroup的触摸事件传递机制。示例示例代码如下:public class MainActivity extends ActionBarActivity { private String原创 2015-08-01 22:44:38 · 4420 阅读 · 2 评论 -
Android IntentService的使用和源码分析
引言Service服务是Android四大组件之一,在Android中有着举足重轻的作用。Service服务是工作的UI线程中,当你的应用需要下载一个文件或者播放音乐等长期处于后台工作而有没有UI界面的时候,你肯定要用到Service+Thread来实现。因此你需要自己在Service服务里面实现一个Thread工作线程来下载文件或者播放音乐。然而你每次都需要自己去写一个Service+Thread原创 2015-07-21 15:53:05 · 3291 阅读 · 4 评论 -
Android异步任务处理框架AsyncTask源码分析
【转载请注明出处:http://blog.csdn.net/feiduclear_up CSDN 废墟的树】引言在平时项目开发中难免会遇到异步耗时的任务(比如最常见的网络请求)。遇到这种问题,我们可以自己通过Handler+Message+Thread/ThreadPool来构造一个异步耗时任务框架。当你下次项目中又遇到一个网络请求,你又不得不重写异步耗时任务处理框架。出于避免开发者重复搬砖工作,G原创 2015-07-20 11:03:54 · 5995 阅读 · 3 评论 -
从setContentView方法分析Android加载布局流程
PS一句:当初你所逃避的问题终会在未来的某一天重新出现在你面前,因此,当你第一次遇到它时,请不要逃避。相信很多初学者对XML布局怎么加载到Activity上并且显示在手机屏幕上很好奇吧?今天我们就从经常使用的方法setContentView来从源码分析一下XML布局是怎么加载到当前Activity上的。Activity#setContentView我们知道,Activity是在onCreate方法中原创 2015-07-02 16:00:55 · 9275 阅读 · 2 评论 -
Android Activity生命周期都该做哪些事情?
Android系统根据生命周期的不同阶段唤起对应的回调函数来执行代码。系统存在启动与销毁一个activity的一套有序的回调函数。本节来讨论下不同生命周期的回调函数里都该做哪些事情,不该做哪些事情。理解生命周期的回调在一个activity的生命周期中,系统会像金字塔模型一样去调用一系列的生命周期回调函数。Activity生命周期的每一个阶段就像金字塔中的台阶。当系统创建了一个新的activity实例原创 2015-05-25 16:30:16 · 10437 阅读 · 7 评论 -
Android四大组件之 BroadCastReceive 使用总结
BroadCast的定义:广播是一种订阅--通知 事件,广播接收者向Android系统 register (订阅广播),广播发送者向Adnroid系统 sendBroadCast(发送广播),然后Android 系统通知所有注册该广播的接收者,广播接收者收到自己注册的广播之后实现自己想做的事情(该事情一般不超过10s,否则应用会出现ANR)。BroadCast的分类:1.无序广原创 2015-05-18 10:09:39 · 3116 阅读 · 2 评论 -
从Handler+Message+Looper源码带你分析Android系统的消息处理机制
引言【转载请注明出处:http://blog.csdn.net/feiduclear_up CSDN 废墟的树】作为Android开发者,相信很多人都使用过Android的Handler类来处理异步任务。那么Handler类是怎么构成一个异步任务处理机制的呢?这篇博客带你从源码分析Android的消息循环处理机制,便于深入的理解。这里不得不从“一个Bug引发的思考”开始研究Android的消息循环处原创 2015-07-13 10:19:59 · 7029 阅读 · 10 评论 -
从LayoutInflater分析XML布局解析成View的树形结构的过程
上一篇博客分析了XML布局怎么加载到Activity上,不了解的可以参考从setContentView方法分析Android加载布局流程上一篇博客只是分析了怎么讲XML布局添加到 Activity 的DecorView根布局上,最后是通过如下代码将资源布局添加到Activity上 mLayoutInflater.inflate(layoutResID, mContentParent);参考博客从se原创 2015-07-06 11:29:21 · 6967 阅读 · 1 评论 -
Android Context 是什么?
【转载请注明出处:http://blog.csdn.net/feiduclear_up CSDN 废墟的树】引言Context对于Android开发人员来说并不陌生,项目中我们会经常使用Context来获取APP资源,创建UI,获取系统Service服务,启动Activity,绑定Service,发送广播,获取APP信息等等。那么Context到底是什么?Context又是怎么来实现以上功能的?在什原创 2015-08-12 14:17:48 · 31373 阅读 · 41 评论 -
Android进程间通信之----Aidl传递对象
转载请注明出处 CSDN废墟的树前言有关Android进程间通信之Aidl编程的基本使用步骤已经在上一篇博客中有讲解,Android studio 下的aidl编程实现Android的夸进程间通信。上一篇博客中只是演示了怎么利用Aidl实现跨进程间传递Java基本类型,以及Aidl传递Bitamap对象。可能在一些场景下你需要跨进程传递一个对象,那么Aidl是否能传递一个对象呢?答案是肯定的,网上也原创 2016-05-13 10:54:04 · 19897 阅读 · 2 评论 -
初识Android进程间通信之----Binder机制
【转载请注明出处:http://blog.csdn.net/feiduclear_up/article/details/51385868 CSDN废墟的树】前言前面两篇博客分别介绍了Android进程间通信之AIDL的使用,以及使用AIDL传递复杂对象以及Bitmap对象。所谓AIDL:Android Interface Definition Language,是一种Android接口定义语言,原创 2016-05-14 22:36:38 · 8282 阅读 · 2 评论 -
Android 常用的数据加密方式
前言Android 很多场合需要使用到数据加密,比如:本地登录密码加密,网络传输数据加密,等。在android 中一般的加密方式有如下:亦或加密AES加密RSA非对称加密当然还有其他的方式,这里暂且介绍以上三种加密算法的使用方式。亦或加密算法什么是亦或加密?亦或加密是对某个字节进行亦或运算,比如字节 A^K = V,这是加密过程;当你把 V^K得到的结果就是A,也就是 V^K = A,这原创 2017-06-22 15:46:08 · 9229 阅读 · 0 评论 -
java 对象锁和类锁的区别
1.一个类可以有多个对象,所以一个类可以有多个对象锁。 2.当一个类中有多个synchronized修饰的同步方法时,其中一个方法被线程访问持有锁,其他方法同样被锁住,其他线程依然不能访问其他同步方法,因为此时锁住的是该类的对象,相当于整个对象锁住了。 3.一个类只能有一个.claas,所有一个类只能有一个类锁。首先的明白java中锁的机制 synchronized 在修饰代码块的时候需转载 2017-09-18 15:19:32 · 7851 阅读 · 0 评论 -
Android ContentProvider 知识点总结
概述ContentProvider:内容提供者,是Android四大组件之一,为其他app提供数据。其他app可以通过ContentResolver:内容解析器来增,删,查,改相关的数据。ContentProvider主要用于跨进程共享数据,它是一套标准的接口访问,其内部实现可以是SQLiteDatabase,文件,图片索引,媒体索引等。如果你不需要在多个应用间共享数据,可以使用SQLiteData原创 2017-11-08 15:33:11 · 1246 阅读 · 0 评论 -
Android 音频管理AudioManager使用
1.api解析 2.api使用 1.音频的三种模式(静音,震动,响铃) 2.音频的分类(电话,通知,媒体,闹钟) 3.音频单独控制(控制是通知,电话静音,震动等) 3.实用场景原创 2017-10-29 10:44:04 · 7412 阅读 · 0 评论 -
Android 跨进程启动Activity黑屏(白屏)的三种解决方案
当Android跨进程启动Activity时,过程界面很黑屏(白屏)短暂时间(几百毫秒?)。当然从桌面Lunacher启动一个App时也会出现相同情况,那是因为App冷启动也属于跨进程启动Activity。为什么没会出现这种情况呢?真正元凶就是Android创建进程需要准备很多资源,它是一个耗时的操作。黑屏(白屏)原因当A进程启动B进程中的一个Activity时,Android系统会先有zygote原创 2017-12-16 23:19:32 · 7219 阅读 · 1 评论 -
Android HandlerThread 源码分析
HandlerThread 简介:我们知道Thread线程是一次性消费品,当Thread线程执行完一个耗时的任务之后,线程就会被自动销毁了。如果此时我又有一个耗时任务需要执行,我们不得不重新创建线程去执行该耗时任务。然而,这样就存在一个性能问题:多次创建和销毁线程是很耗系统资源的。为了解这种问题,我们可以自己构建一个循环线程Looper Thread,当有耗时任务投放到该循环线程中时,线程执行耗时原创 2015-07-11 12:33:53 · 17190 阅读 · 13 评论 -
逆向小米系统Settings.apk过程记录
知识背景dexodexdex文件xxx.java->xxx.class->classes.dex 拿一个apk解压后你会看到一个classes.dex文件,我们逆的目标就是他,也就是apk中的源码都在classes.dex文件中。odex文件odex是安卓上的应用程序apk中提取出来的可运行文件,即将APK中的classes.dex文件通过dex优化...原创 2018-03-05 10:53:58 · 9471 阅读 · 1 评论 -
Android线程知识
线程概念及使用场景线程是操作系统中最小的执行单元,一个进程中可以有多个线程,他们可以并发的执行多个任务。同一个进程中的多线程是共享内存的,可以很方便的相互通信线程是一次性消费品,一般用于耗时任务中,避免阻塞UI线程。线程的创建和销毁是比较消耗CPU资源的,所以,一般不频繁的创建和销毁线程,如果存在这种需求,请使用线程池。创建线程线程的使用方式有两种:继承Thread对象,...原创 2018-03-19 16:21:41 · 1186 阅读 · 0 评论 -
android zip 递归打包压缩,解压
android zip 递归打包,解压原创 2017-06-22 15:02:53 · 5198 阅读 · 0 评论 -
简析Android网络请求Volley框架的工作原理
Volley网络模块以及错误重试机制分析相关类如下: Network :封装网络请求接口 BaseNetWork : Network 接口实现类,用于封装网络请求,并且对请求结果封装,且实现网络请求错误重试机制。 HttpStack:执行网络请求接口 HurlStack:HttpStack 接口实现类,用于真正执行网络请求,并且得到请求结果。 HttpClientStack:Http原创 2016-10-29 09:39:52 · 4043 阅读 · 1 评论 -
Android 对话框AlertDialog,PopupWindow使用大全
对话框种类1.AlertDialog(Dialog)系统对话框。 2.Popupwindow弹出式对话框。对话框区别1.AlertDialog非阻塞式对话框:对话框的显示不影响后台任务的执行。 2.PopupWindow阻塞式对话框:对话框弹出后阻塞后台任务执行,直到对话框消失。对话框示例Dialog类的对话框我们一般使用AlertDialog对话框,那么和Dialog有什么区别呢,其实Aler原创 2015-05-19 11:30:47 · 5445 阅读 · 3 评论 -
Android性能优化之布局优化篇
怎样才能写出优秀的Android App,是每一个程序员追求的目标。那么怎么才能写出一个优秀的App呢?相信很多初学者也会有这种迷茫。一句话来回答这个问题:细节很重要。今天我们就从最基础的XML布局来谈谈怎么提高Android性能问题吧!也许你经常会遇到比较复杂的布局,这种情况下,最简单的方法就是多层嵌套实现效果,但是最简单的方法是否是最优的方法呢? 这里需要打一个大大的问号?????经验告诉原创 2015-06-29 16:28:30 · 4816 阅读 · 0 评论 -
从ViewRootImpl类分析View绘制的流程
【转载请注明出处:从ViewRootImpl类分析View绘制的流程 CSDN 废墟的树】从上两篇博客 《从setContentView方法分析Android加载布局流程》 和 《从LayoutInflater分析XML布局解析成View的树形结构的过程》 中我们了解到Activity视图UI是怎么添加到Activity的根布局DecorView上面的。我们知道Activity中的PhoneVie原创 2015-07-09 09:10:16 · 19392 阅读 · 23 评论 -
Volley框架的错误重试机制分析
Volley框架的网络处理相关类如下: Network :封装网络请求接口 BasicNetWork : Network 接口实现类,用于封装网络请求,并且对请求结果封装,且实现网络请求错误重试机制。 HttpStack:执行网络请求接口 HurlStack:HttpStack 接口实现类,用于真正执行网络请求,并且得到请求结果。 HttpClientStack:HttpStack 接口实原创 2016-11-28 10:44:12 · 2271 阅读 · 1 评论 -
Android对话框Dialog,PopupWindow,Toast的实现机制
1.前言在Android系统中窗口(Window)分三种类型:应用窗口,子窗口,系统窗口。上一篇博客分析了Android应用窗口Window的创建过程,接下来这篇博客来学习其他两种窗口类型的实现机制。Android开发中经常会使用到Dialog,PopupWindow,Toast等对话框来作为提示信息或者和用户交互。然而这些对话框其实都是窗口,它们的创建和移除机制也就是Android系统对窗口的添加原创 2015-10-20 21:37:10 · 17464 阅读 · 5 评论 -
Android ViewPager的使用总结
ViewPager的基本使用ViewPager继承自ViewGroup,是一个View容器。用于装载多个View页面,可以在一个固定空间切换多个页面显示。 ViewPager使用也很简单,主要代码是实现PagerAdapter适配器。首先适配器继承PagerAdapter,一般需要实现如下几个方法:getCount()isViewFromObject(View, Object)instant原创 2017-04-01 12:02:57 · 13078 阅读 · 1 评论 -
Android辅助功能 Accessibility Services基本用法笔记
概述Accessbility 又叫做辅助功能,是Android官方推出帮助身体不便或者操作不灵活的人来辅助操作手机应用的。当然也可以用来干一些别的事,比如自动抢红包啊,静默安装app,帮助用于开一系列权限操作等。出于项目需求,大概研究了下Accessilibity的基本用法。Accessibility用法实现自己的辅助功能类要实现自己的辅助功能,需要继承系统的AccessibilityService原创 2017-04-23 14:34:08 · 25045 阅读 · 2 评论 -
Android Camera开发之基础知识篇
概述Android框架支持设备的相机拍照和录像功能,你的应用可以直接调用系统的Camera应用来拍照或者录像(比如微信拍照),当然也可以利用Android系统提供的API开发一个Camera应用来实现相机拍照和录像功能(比如市面上流行的360相机)。此篇文章主要记录相机开发有关的基础知识,以及带着自己的理解翻译Camera官方文档,如有翻译不恰当支出,还请指出改正。当然我会开一个有关相机开发的一个系原创 2016-08-19 17:22:59 · 35540 阅读 · 13 评论 -
Android顶部布局View不随着输入框弹出而上移
前提平时我们需要实现布局底部布局View随着输入框弹出而上移的效果,但是有些时候我们需要实现顶部布局View不随着输入框弹出而上移,比如自定义的Activity的title,这个时候就不希望随着输入框弹出而title也上移。以为此时title上移就看不见了。所以我们需要实现顶部title View不随着输入框的弹出而上移。实现的主要代码是布局文件,实现如下:<?xml version="1.0" e原创 2017-06-05 20:55:05 · 6602 阅读 · 1 评论 -
Java进阶知识-反射
获取Class对象有三种方式获取Class对象:根据类的完整包名获取ClassClass clazz = Class.forName("com.example.xjp.demo.reflect.PersonInfo");根据类名直接获取ClassClass clazz = PersonInfo.class;根据实例类的对象获取Class PersonIn...原创 2018-03-23 16:32:20 · 1293 阅读 · 1 评论 -
在eclipse 中 制作自己的Android apk 签名密钥
为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。原创 2014-07-02 17:02:48 · 3105 阅读 · 0 评论