android学习笔记
文章平均质量分 77
本系列是笔者学习android过程中写的一些笔记,涉及到android开发的各个方面。
rowandjj
阿里巴巴资深移动开发工程师
展开
-
【安卓笔记】带自定义属性的view控件
开发中经常需要自定义view控件或者组合控件,某些控件可能需要一些额外的配置。比如自定义一个标题栏,你可能需要根据不同尺寸的手机定制不同长度的标题栏,或者更常见的你需要配置标题栏的背景,这时候,你就会考虑到你写的view的扩展性问题,通常情况下,我们可以为这个自定义的标题栏加上一些setXXX方法,供外界调用,设置其颜色、长度等属性。但是我们都知道,在使用系统控件时,我们大多数情况下并不需要在代码原创 2014-08-07 14:20:05 · 1751 阅读 · 0 评论 -
【源码】LruCache源码剖析
上一篇分析了LinkedHashMap源码,这个Map集合除了拥有HashMap的大部分特性之外,还拥有链表的特点,即可以保持遍历顺序与插入顺序一致。另外,当我们将accessOrder设置为true时,可以使遍历顺序和访问顺序一致,其内部双向链表将会按照近期最少访问到近期最多访问的顺序排列Entry对象,这可以用来做缓存。这篇文章分析的LruCache并不是jdk中的类,而是来自安卓原创 2014-08-20 09:22:12 · 3300 阅读 · 5 评论 -
【安卓笔记】HandlerThread源码剖析
有时候我们需要在应用程序中创建一些常驻的子线程不定期地执行一些计算型任务,这时候可以考虑使用HandlerThread,它具有创建带消息循环的子线程的作用。一、HanderThread使用示例先熟悉下HandlerThread的一般用法。我们创建一个如下所示的Activity:package com.example.handlethreaddemo;import原创 2014-09-04 23:47:44 · 2125 阅读 · 0 评论 -
【安卓笔记】IntentService源码剖析
Service组件想必都不陌生,这里不费口舌了。强调一点,Service组件默认运行在UI线程,所以也是会阻塞主线程的,使用时切记不可在Service中执行耗时操作,而应该创建子线程,异步执行。IntentService类封装了在Service中创建子线程的工作(其实创建的是HandlerThread),我们只需继承IntentService,复写其onHandleIntent方法即可,o原创 2014-09-04 23:51:59 · 2246 阅读 · 0 评论 -
【安卓笔记】单机版手机归属地查询
既然是单机版,那么必然是查询本地数据库了,所以我们得准备一个离线数据库文件(下载地址:http://download.csdn.net/detail/rowandjj/7660979).步骤:1.创建一个工具类打开数据库:package cn.edu.chd.mobilesafe.db.dao;import android.database.sqlite.SQLiteData原创 2014-07-21 22:22:46 · 1665 阅读 · 3 评论 -
【安卓笔记】检测服务是否运行
/** * 判断服务是否后台运行 * * @param context * Context * @param className * 判断的服务名字 * @return true 在运行 false 不在运行 */ public static boolean isServiceRun(Context mContext,原创 2014-07-22 23:46:14 · 1572 阅读 · 0 评论 -
【安卓笔记】快速开发设置界面-----PreferenceActivity
通常app都会有一个设置界面,如下:通常做法是自己定义布局,然后在代码里面添加响应函数,并将结果保存到Sharedpreferences中。android给我们提供了PreferenceActivity来简化开发设置界面。你只需这样做:1.创建一个类继承PreferenceActivity,并导入设置界面布局:package com.exam原创 2014-07-25 22:37:52 · 3382 阅读 · 0 评论 -
【安卓笔记】仿猎豹清理大师波浪效果
先来看效果:实现方式----->自定义控件核心代码:package com.example.wavedemo1;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;i原创 2014-07-26 13:16:44 · 3988 阅读 · 2 评论 -
【安卓笔记】扁平化的ProgressBar-----ProgressWheel
ProgressWheel是github上一个开源的项目,为开发者提供一个扁平化的ProgressBar,并可以对其进行深度定制。效果如下:下面介绍使用方式:1.下面是ProgressWheel源码,拷到项目下。package com.example.view;import android.content.Context;import android.conte原创 2014-07-26 19:05:32 · 4211 阅读 · 0 评论 -
【安卓笔记】仿乐安全首页动态效果
先看效果:布局:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout原创 2014-07-26 21:13:39 · 2572 阅读 · 0 评论 -
【安卓笔记】抽屉式布局----DrawerLayout
效果如下:DrawerLayout来自support.v4包,所以不用考虑兼容性问题。其次,这种布局类似风靡一时的侧滑菜单,但是比侧滑菜单轻巧许多。下面介绍这种布局的使用方式。1.在你的项目中导入support.v4包。2.编辑一个布局,根节点为android.support.v4.widget.DrawerLayout,此节点下只允许有两个子节点,第一个为原创 2014-07-27 15:29:37 · 5003 阅读 · 4 评论 -
使用selector去除默认GridView/ListView包含条目的默认点击效果
步骤:1.在drawable目录下新建一个*.xml的文件,根节点为selector,然后设定不同状态下的界面效果.2.为GridView/ListView设置一个选择器(xxx.setSelector(int id)),将id传进去。ok比如:原创 2013-11-03 15:05:09 · 6388 阅读 · 0 评论 -
【android】ListView+SimpleCursorAdapter+checkbox实现批量删除
最近项目有个需求。实现对笔记列表进行批量删除,功能本身实现比较容易。网上也有很多demo参考。但是这个项目不太一样,因为使用的是SimpleCursorAdapter绑定ListView,网上大多数都是ArrayAdapter、SimpleAdapter、BaseAdapter的例子。故而这里有必要记录一下解决的办法。先来看下别人怎么实现的:实现原创 2013-11-16 14:07:24 · 5850 阅读 · 1 评论 -
【安卓笔记】adb
一.ADB简介: adb是最常用的工具,全名叫Android调试桥(Android Debug Bridge)。它是用来管理模拟器和真机的工具,它是个cs程序,由三部分组成:1、一个客户端。在你的开发机上运行(pc机),通过adb命令用shell调用另一个客户端,比如其他工具ADT和DDMS也可以是客户端。2、一个服务端。作为后台服务在你的pc上运行。它是客户端和模拟器和真机上deam原创 2014-02-05 11:49:42 · 1791 阅读 · 0 评论 -
【安卓笔记】------logcat以及android junit的使用
一.logcat:logcat可以用来记录日志信息,为我们的调试工作提供了很大的便利。1.使用方式: (1)使用命令行:adb logcat命令。缺点,不直观。(2)使用adt插件提供的图形化工具logcat. 2.调试技巧(针对图形化工具logcat) 安卓将日志信息分为ERROR,WARN,I原创 2014-02-07 14:04:38 · 2241 阅读 · 0 评论 -
【安卓笔记】安卓下xml文件的解析
安卓下解析xml文件有多种方式:dom:通用性强,它会将XML文件的所有内容读取到内存中,然后允许您使用DOM API遍历XML树、检索所需的数据;简单直观,但需要将文档读取到内存,并不太适合移动设备;sax:SAX是一个解析速度快并且占用内存少的xml解析 器;采用事件驱动,它并不需要解析整个文档;实现:继承DefaultHandler,覆写startElement、原创 2014-02-08 15:44:24 · 2313 阅读 · 0 评论 -
【安卓笔记】android客户端向tomcat服务器发送请求中文乱码问题解决
android客户端请求服务端的url地址中含有中文时将会产生中文乱码问题。产生乱码的原因有主要以下几个方面:------------------------------------------------------------------------------------------------ 1.当以get方式请求服务端的资源时,没有对url中的中文进行编码。原创 2014-02-09 17:35:11 · 4868 阅读 · 0 评论 -
【安卓笔记】对json的解析
安卓下通常采用以下几种方式解析json数据:-----------------------------------------------1.org.json包(已经集成到android.jar中了)2.google提供的gson库3.阿里巴巴的fastjson库4.json-lib--------------------------------------------原创 2014-02-10 15:39:19 · 2259 阅读 · 0 评论 -
【安卓笔记】内容提供者
在Android应用中,我们可以使用显式消息(Explicit Intent)来直接访问其他应用的Activity,但是这仅限于Activity的范畴;如果需要使用其他应用的数据,还需要用到另外一种组件,这就是所谓的内容提供者(Content Provider)。1.什么是内容提供者(Content Porviders)?顾名思义,内容提供者就是Android应用框架提供的应用之间的数原创 2014-02-11 13:58:39 · 2649 阅读 · 2 评论 -
【安卓笔记】android客户端与服务端交互的三种方式
android客户端向服务器通信一般有以下选择:1.传统的java.net.HttpURLConnection类2.apache的httpClient框架(已纳入android.jar中,可直接使用)3.github上的开源框架async-http(基于httpClient)----------------------------------------------原创 2014-02-12 14:26:35 · 8639 阅读 · 0 评论 -
【安卓笔记】res/raw与assets区别
相同点:1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。2.assets目录下可以新建目录,而res/raw目录则不可以。不同点:1.由于raw是Resources (res)的子目录,Android会自动的为这目录中的所有资源文件生成一个ID,这个ID会被存储在R类当中,作为一个文件的引用。这意味着这个资源文件可以很容易的被Andro原创 2014-02-13 10:49:42 · 4562 阅读 · 2 评论 -
【安卓笔记】activity生命周期
类似文章网上数不胜数,这里我只是为了记录一下这个知识点,方便以后复习。------------------------------------------------------------------------------------------------------------------------下面梳理一下activity的生命周期。一.activity生命周期图:原创 2014-02-14 14:11:24 · 1893 阅读 · 0 评论 -
【安卓笔记】BroadcastReceiver
一.什么是BroadcastReceiver? BroadcastReceiver,中文叫广播接收者。它是android的四大组件之一。①广播接收者是一个专注于接收广播信息,并做出对应处理的组件。很原创 2014-02-15 22:25:39 · 2033 阅读 · 0 评论 -
【安卓笔记】进程优先级
安卓中将进程分为五种(优先级依次降低,参照图示):1.前台进程:优先级最高,一般是与用户正在交互的组件。比如调用onResume方法的Activity,当前用户交互的activity上绑定的服务等。2.可见进程:可见但是未被激活的进程,比如activity onPause(部分可见)状态下。可见进程虽然可见,但是它并不属于前台否则它会对用户的事件作出反应。在资源紧张的时候安卓也会为原创 2014-02-16 19:57:29 · 2115 阅读 · 0 评论 -
【安卓笔记】全面解析Service组件
service,android四大组件之一,是一个长期运行在应用后台的android组件,它没有与用户交互的界面。service的特点是:1.长期运行在后台;2.其他组件可以通过绑定操作与service进行交互;3.默认运行在UI线程上;4.无用户界面。下面总结了service常见的知识点,帮助大家理解和复习service。service分类简介:原创 2014-02-17 14:38:38 · 3486 阅读 · 5 评论 -
【安卓笔记】作为内部类的广播接收者
在【全面解析service组件】一文中我们提到了采用广播接收者(BroadcastReceiver)使service与activity进行通信。在该例子中我们在service子类中定义了一个自定义的广播接收者,该广播接收者监听activity发出的特定的广播,并从而触发onReceive方法,我们在此方法中间接调用service类的方法,从而实现了service与activity间的通信。例子中的原创 2014-02-19 17:33:27 · 9921 阅读 · 5 评论 -
【安卓笔记】Application类作用浅析
android.app.Application类和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息。Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。通常我们原创 2014-02-20 16:08:16 · 3887 阅读 · 3 评论 -
【安卓笔记】图片特效之底片效果
分享一个图片特效-------底片-------------------------------------------------------------------------------算法原理:将当前像素点的RGB值分别与255之差后的值作为当前点的RGB值,即R = 255 – R;G = 255 – G;B = 255 – B;-------------原创 2014-02-20 19:38:19 · 2563 阅读 · 3 评论 -
【安卓笔记】图片特效之黑白效果
分享一个图片特效-------黑白效果-------------------------------------------------------------------------------算法:求RGB平均值Avg = (R + G + B) / 3,如果Avg >= 100,则新的颜色值为R=G=B=255;如果Avg ----------------------原创 2014-02-20 20:08:29 · 2813 阅读 · 0 评论 -
【安卓笔记】图片特效之灰度效果
分享一个图片特效-------灰度效果-------------------------------------------------------------------------------算法:算法比较多,这里采用加权平均值法。即新的颜色值R=G=B=(R * Wr+G*Wg+B*Wb),一般由于人眼对不同颜色的敏感度不一样,所以三种颜色值的权重不一样,一般来说绿色最高,红原创 2014-02-20 20:37:31 · 1814 阅读 · 0 评论 -
【安卓笔记】图片特效之浮雕效果
分享一个图片特效-------浮雕-------------------------------------------------------------------------------算法原理:用当前点的RGB值减去相邻点的RGB值并加上128作为新的RGB值。由于图片中相邻点的颜色值是比较接近的,因此这样的算法处理之后,只有颜色的边沿区域,也就是相邻颜色差异较大的部分原创 2014-02-20 21:06:53 · 1993 阅读 · 0 评论 -
【安卓笔记】-----图片特效之怀旧风格
分享一个图片特效-------怀旧效果-------------------------------------------------------------------------------算法:经验公式如下:R = 0.393r+0.769g+0.189bG = 0.349r+0.686g+0.168bB = 0.272r+0.534g+0.原创 2014-02-20 22:14:36 · 1415 阅读 · 0 评论 -
【安卓笔记】PendingIntent
PendingIntent这个类封装了一个Intent(意图),它表示即将发送的动作的类型。这个类的方法主要有两类,一类是getXXX,表示要激活的意图的类型,如activity,service或者是BroadcastReceiver等。另一类是send,表示立即发送这个意图。下面是常用的API:public static PendingIntent原创 2014-02-21 15:08:27 · 2066 阅读 · 0 评论 -
【安卓笔记】notification使用
Notification能够使你的应用程序能够在不使用Activity的情况下通知用户。虽然Notification与Toast都可以起到通知、提醒的作用。但它们的实现原理和表现形式却完全不一样。Toast其实相当于一个组件 (Widget)。有些类似于没有按钮的对话框。而Notification是显示在屏幕上方状态栏中的信息。还有就是Notification需要用 NotificationM原创 2014-02-21 19:35:30 · 2308 阅读 · 0 评论 -
【安卓笔记】WebView控件使用
在Android中,可以使用Webview控件来浏览网页。下面我们就来介绍webView控件的使用方式:---------------------------------------------目录:1.webview加载url的方式2.webview的配置 (1)WebSettings (2)WebViewClient原创 2014-02-22 10:37:19 · 2424 阅读 · 0 评论 -
【安卓笔记】盘点android中的dialog
除了Toast和Notification之外,Dialog也可用于提示用户。创建dialog需要用到AlertDialog.Builder类,这可以理解为一个对话框的产生器,可以利用这个类创建各种种类的对话框。对话框创建好之后调用此类的create方法即可产生一个对话框,再调用show方法就可以将对话框显示到界面上。如果对话框用来展示一个进度,可以使用ProgressDialog类原创 2014-02-22 15:10:12 · 2717 阅读 · 4 评论 -
【安卓笔记】自定义toggleButton
默认的toggleButton简直丑到爆表,强烈建议自定义。个人非常喜欢天天动听的UI,这次就拿这个应用上的togglebutton作为模仿对象。步骤:1.准备好资源。解压天天动听apk包,找到togglebutton按钮:解压出来的toggleButton是普通png格式的,这里我们可以使用工具将其改为9.png的,使用9patch工具时有个小技巧,那就是将s原创 2014-02-23 13:18:18 · 6550 阅读 · 1 评论 -
【安卓笔记】progressbar使用技巧
当在加载数据到litView或者其他控件上时,用户会有一个等待的时间,为了给用户一个友好的提示,通常我们会显示一个ProgressBar,待数据加载完毕后,ProgressBar自动消失。通常的做法是在布局外面套一个FrameLayout,然后在FramLayout下有两个子节点,一个作为显示的内容(如listView)另一个是ProgressBar,但是这样做会导致activity布局嵌原创 2014-02-24 15:25:21 · 3191 阅读 · 2 评论 -
【安卓笔记】AsyncTask
简介:AsyncTask是android提供的一个处理异步任务的框架,相当于Handler+Thread。相比而言,AsyncTask的优点是封装良好,代码简洁。使用AsyncTask可以使你在后台执行耗时任务(doInBackground)并将结果反馈给UI线程(onPostExecute),方便UI线程更新界面,而不会阻塞UI线程。文档中说AsyncTask只适合执行短时任原创 2014-02-25 14:49:02 · 2125 阅读 · 0 评论 -
【安卓笔记】在Notification中显示下载进度
效果:代码直接在上一篇AsyncTask示例中做修改,布局跟上次一样,这里不贴了。MainActivity:package com.example.asynctaskdemo4;import java.io.ByteArrayOutputStream;import java.io.InputStream;import org.apache.http.HttpE原创 2014-02-25 16:35:48 · 2532 阅读 · 0 评论