Android
文章平均质量分 80
AngelDevil
这个作者很懒,什么都没留下…
展开
-
Android点击列表后弹出输入框,所点击项自动滚动到输入框上方
使用微信的朋友圈会发现,点击某一条评论后输入框会弹出来,然后所点击的那一项会自动地滚动到输入框上方的位置,这样如果开始所点击的评论在屏幕很下方的话,就不会被输入框遮住,虽然微信这一点在我的MX2频繁点几次后滚动的位置就完全错误了,但据说在有些机型上效果还不错,还有其他地方可能会有类似的需求,比如登录时软键盘可能会把登录按钮遮住。要实现这个功能需要注意的地方主要有两点:什么时候进行滚动操原创 2014-06-03 16:51:38 · 2255 阅读 · 0 评论 -
Android指针管理:RefBase,SP,WP
Android中通过引用计数来实现智能指针,并且实现有强指针与弱指针。由对象本身来提供引用计数器,但是对象不会去维护引用计数器的值,而是由智能指针来管理。 要达到所有对象都可用引用计数器实现智能指针管理的目标,可以定义一个公共类,提供引用计数的方法,所有对象都去继承这个公共类,这样就可以实现所有对象都可以用引用计数来管理的目标,在Android中,这个公共类就是RefBase,同原创 2014-06-03 16:50:48 · 546 阅读 · 0 评论 -
Android中自定义样式与View的构造函数中的第三个参数defStyle的意义
零、序一、自定义Style二、在XML中为属性声明属性值 1. 在layout中定义属性 2. 设置Style 3. 通过Theme指定三、在运行时获取属性值 1. View的第三个构造函数的第三个参数defStyle 2. obtailStyledAttributes 3. Example四、结论与代码下载零、序 系统自带的View可原创 2014-06-03 16:51:26 · 1748 阅读 · 2 评论 -
Android Low Memory Killer
Low Memory Killer的原理 在Android中,即使当用户退出应用程序之后,应用程序的进程也还是存在于系统中,这样是为了方便程序的再次启动,但是这样的话,随着打开的程序数量的增加,系统的内存会变得不足,就需要杀掉一部分进程以释放内存空间。至于是否需要杀死一些进程和哪些进程需要被杀死,是通过Low Memory Killer机制来进行判定的。 Android的Low Mem原创 2014-06-03 16:50:56 · 517 阅读 · 0 评论 -
系统中没有邮件客户端设置autoLink=email会挂掉的问题
TextView的autoLink属性为我们提供了很大的便利性,当文本中有网址,邮箱或电话的时候可以让我们方便地执行打电话发邮件等动作,不过也有一些问题,比如说设置autoLink包含email属性,当文本中有邮件地址时只要点击就可以调用邮件客户端来发邮件,但是如果当前系统中没有邮件客户端可供调用,程序会直接挂掉。 通过看Log可以发现,系统抛出了ActivityNotFoundExcept原创 2014-06-03 16:51:30 · 1356 阅读 · 0 评论 -
android startService流程梳理笔记
1、ContextWrapper.startService startService是Context的方法,Activity、Service都继承自ContextWrapper,而ContextWrapper又继承自Context,BroadcastReceiver的onReceive方法中有个参数是Context类型的,所以我们在Activity、Service、BroadcastRece原创 2014-06-03 16:51:00 · 511 阅读 · 0 评论 -
Android自定义对话框(Dialog)位置,大小
代码:package angel.devil;import android.app.Activity;import android.app.Dialog;import android.os.Bundle;import android.view.Gravity;import android.view.Window;import android.view.WindowManager;publi原创 2014-06-03 16:50:31 · 750 阅读 · 0 评论 -
Android编译系统
一、Android编译步骤: 二、初始化编译环境--source build/envsetup.sh 在build/envsetup.sh中主要完成了三件事。 添加编译目标的代码如下:for f in `/bin/ls vendor/*/vendorsetup.sh vendor/*/*/vendorsetup.sh device/*/*/vendorsetu原创 2014-06-03 16:50:52 · 519 阅读 · 0 评论 -
Android Binder设计与实现 - 设计篇
摘要Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC做对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Binder的设计细节做一个全面的阐述,首先通过介绍Binder通信模型和Bin转载 2014-06-03 16:51:04 · 443 阅读 · 0 评论 -
快速Android开发系列网络篇之Volley
Volley是Google推出的一个网络请求库,已经被放到了Android源码中,地址在这里,先看使用方法RequestQueue mRequestQueue = Volley.newRequestQueue(context);JsonObjectRequest req = new JsonObjectRequest(URL, null, new Response.Li原创 2014-06-03 16:51:55 · 708 阅读 · 0 评论 -
自定义ActionBar标题与菜单中的文字样式
自定义标题文字样式标题样式是ActionBar样式的一部分,所以要先定义ActionBar的样式 name="AppTheme" parent="AppBaseTheme"> name="android:actionBarStyle">@style/CustomActionBar然后在ActionBar的样式中通过android:titleTextStyle定义标题的样原创 2014-07-10 21:04:55 · 1533 阅读 · 0 评论 -
Android Starting Window(Preview Window)
当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要时间,在这个动作完成之前系统要做什么呢?如果没有任何反应的话,如果程序初始化的时间很长,用户可能还以为没有点到相应的位置。但此时所启动的程序还没初始化完,既无法显示程序,又不能停在原处不做任何动作,怎么办?这就有了Starting Window原创 2014-06-21 17:34:06 · 1852 阅读 · 0 评论 -
Android Secret Code
Android secret code的使用,在拨号键盘输入*#*#[any number]#*#*后执行指定的功能原创 2014-09-23 16:53:46 · 1587 阅读 · 0 评论 -
快速Android开发系列网络篇之Android-Async-Http
先来看一下最基本的用法AsyncHttpClient client = new AsyncHttpClient();client.get("http://www.google.com", new AsyncHttpResponseHandler() { @Override public void onSuccess(String response) {原创 2014-06-03 16:51:51 · 646 阅读 · 0 评论 -
android中layout_weight的理解
SDK中的解释:Indicates how much of the extra space in the LinearLayout will be allocated to the view associated with these LayoutParams. Specify 0 if the view should not be stretched. Otherwise the ext原创 2014-06-03 16:50:39 · 554 阅读 · 0 评论 -
Android图片异步加载
开发Android程序,一般情况下都会有两个操作,图片的异步加载与缓存,而图片的异步加载大都是从网络读取图片(还有生成本地图片缩略图等操作),为了减少网络操作,加快图片加载速度就需要对图片进行缓存,所以网上的好多图片异步加载方法都是与图片的缓存紧密关联的。但也有可能用户已经有了缓存的相关类库,这样使用起来就会有点麻烦。 最近一段处理跟图片相关的问题,本来是自己写的图片加载,不过有些状态的控制原创 2014-06-03 16:50:43 · 484 阅读 · 0 评论 -
Adapter的继承结构
Adapter的作用Adapter是AdapterView视图与数据之间的桥梁,Adapter提供对数据的访问,也负责为每一项数据产生一个对应的View。其作用如下图所示:Adapter的继承结构各个类的作用AdapterAdapter做为这个继承结构的最顶层的基接口,定义了Adapter要实现的基本方法:public interface Adapter {原创 2014-06-03 16:50:14 · 641 阅读 · 0 评论 -
Android 2.0以后的Contacts API--ContactsContract
联系人信息的存储结构:从Android 2.0(API Level 5)开始,Android平台提供了一个改进的Contacts API,以适应一个联系人可以有多个帐户的需求,比如说手机通讯录和GMAIL通讯录,两个通讯录中的两条记录可以是同一个人。新的Contacts API主要是由ContactsContract及其相关的类来管理,旧的API(android.provider.Contac原创 2014-06-03 16:50:18 · 844 阅读 · 0 评论 -
快速Android开发系列网络篇之Retrofit
Retrofit是一个不错的网络请求库,用官方自己的介绍就是:A type-safe REST client for Android and Java看官网的介绍用起来很省事,不过如果不了解它是怎么实现的也不太敢用,不然出问题了就不知道怎么办了。这几天比较闲就下下来看了一下,了解一下大概实现方法,细节就不追究了。先来看一个官网的例子,详细说明去网官看简单示例首先定义原创 2014-06-03 16:51:59 · 1068 阅读 · 0 评论 -
自定义SimpleAdapter
SimpleAdapter,跟名字一样,一个简单的适配器,既为简单,就只是被设计来做简单的应用的,比如静态数据的绑定,不过仍然有自定义的空间,比如说在每一个ListItem中加一个按钮并添加响应事件.首先还是先看一下SimpleAdapter的定义吧,直接翻译下SDK doc 吧: 这是一个简单的适配器,可以将静态数据映射到XML文件中定义好的视图。你可以指定由Map组成的List(比如原创 2014-06-03 16:50:35 · 453 阅读 · 0 评论 -
清除Android工程中没用到的资源
项目需求一改再改,UI一调再调,结果就是项目中一堆已经用不到但却没有清理的垃圾资源,不说工程大小问题,对新进入项目的人或看其他模块的代码的人来说,这些没清理的资源可能也可能会带来困扰,所以最好还是清理掉这些垃圾,对于一个稍微大一点的工程来说,手工清理明显是不现实的,这就需要一个方法做这些事情。清理资源文件要清理没用的资源,首要的工作当然是找到他们,我们知道Anroid SDK中有一个工具叫原创 2014-06-03 16:51:46 · 2295 阅读 · 0 评论 -
Binder in Java
Android在Native层实现了进程间的Binder通信,但是上层应用程序的开发及Framework的实现都是Java,用Java层再实现一次肯定是不合理的,Java可以通过JNI调用Native Code,所以通过JNI复用Binder在Native层的实现就是一个顺理成章的事情。注册Service 在Init进程的init2阶段,系统启动了ServerThread,在Server原创 2014-06-03 16:51:13 · 541 阅读 · 0 评论 -
Android Touch事件
Android中跟Touch事件有关的事件有三个: public boolean dispatchTouchEvent(MotionEvent ev):传递Touch事件至target view(可以是自己)。 public boolean onInterceptTouchEvent(MotionEvent ev):在ViewGroup中定义,用于拦截Touch事件的传递。 pu原创 2014-06-03 16:50:27 · 479 阅读 · 0 评论 -
Android消息处理机制(Handler、Looper、MessageQueue与Message)
Android是消息驱动的,实现消息驱动有几个要素:消息的表示:Message消息队列:MessageQueue消息循环,用于循环取出消息进行处理:Looper消息处理,消息循环从消息队列中取出消息后要对消息进行处理:Handler 平时我们最常使用的就是Message与Handler了,如果使用过HandlerThread或者自己实现类似HandlerThr原创 2014-06-03 16:51:17 · 818 阅读 · 0 评论 -
Binder In Native
关于Binder的设计思想与Driver层实现细节可以看这个:Android Binder设计与实现 - 设计篇,这里首先简要概括一下。 Service的每个Binder实体位于Service所属的进程种中,Binder实体在驱动中被表示为binder_node,并通过成员refs指向了驱动中所有对这个Binder实体的引用,Binder引用在驱动被表示为binder_ref,并通过成员no原创 2014-06-03 16:51:09 · 618 阅读 · 0 评论 -
快速Android开发系列通信篇之EventBus
先吐槽一下博客园的MarkDown编辑器,推出的时候还很高兴博客园支持MarkDown了,试用了下发现支持不完善就没用了,这次这篇是在其他编辑器下写的,复制过来后发现。。太烂了。怎么着作为一个技术博客社区,对代码的支持应该完善一下吧,`行内代码块`不支持就算了,代码段内还不能有空行,一有空行就识别不了了。而且试着用MarkDown发了篇草稿,右边的侧边栏竟然被挤到屏幕下方了,还影响到了博客布局。。原创 2014-06-03 16:51:42 · 1038 阅读 · 3 评论 -
Android动画学习笔记-Android Animation
Android动画的使用,包含View Animatin,Drawable Animatin及Property Animation,主要讲了属性动画Property Animation原创 2014-06-03 16:50:22 · 1047 阅读 · 1 评论 -
Android动态改变布局
通过RelativeLayout用代码动态改变布局原创 2014-07-11 09:22:33 · 2383 阅读 · 0 评论