Android
文章平均质量分 58
华软软
这个作者很懒,什么都没留下…
展开
-
android事件传递机制
Android Touch事件 dispatchTouchEvent分发TouchEvent onInterceptTouchEvent拦截TouchEvent onTouchEvent处理TouchEvent 当TouchEvent发生时,首先Activity将TouchEvent传递给最顶层的View, TouchEvent最先到达最顶层 view 的 dispatchTouc转载 2015-09-16 12:24:06 · 254 阅读 · 0 评论 -
Activity生命周期详解
首次启动 onCreate –> onStart –> onResume 按下返回按键 onPause –> onStop –> onDestroy 按Home键 onPause –> onSaveInstanceState –> onStop 再次打开 onRestart –> onStart –> onResume 屏幕旋转 如果你不做任何转载 2015-10-13 09:45:25 · 287 阅读 · 0 评论 -
Android Studio系列教程三--快捷键
Android Studio 1.0正式版发布啦 今天是个大日子,Android Studio 1.0 终于发布了正式版, 这对于Android开发者来说简直是喜大普奔的大消息啊,那么就果断来下载使用。 官方下载地址: http://developer.android.com/sdk/index.html 如果你之前已经使用其他版本的Studio,那么直接覆盖就好了,如果转载 2015-10-12 16:24:40 · 247 阅读 · 0 评论 -
MVC,MVP 和 MVVM 的图示区别
MVC,MVP 和 MVVM 的图示 作者: 阮一峰 日期: 2015年2月 1日 复杂的软件必须有清晰合理的架构,否则无法开发和维护。 MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了。 昨天转载 2015-10-12 16:19:05 · 300 阅读 · 0 评论 -
Android Studio系列教程五--Gradle命令详解与导入第三方包
Android Studio + Gradle的组合用起来非常方便,很多第三方开源项目也早都迁移到了Studio,为此今天就来介绍下查看、编译并导入第三方开源项目的方法。 Sublime + Terminal编译并查看源码 首先来给大家介绍一种简便并且个人最喜欢的一种办法。很多时候我们在GitHub上看到一个不错的开源项目,一般有两种需求,阅读源码和查看运行效果,如果是单纯的查看源码我转载 2015-10-12 16:26:07 · 256 阅读 · 0 评论 -
Android Studio Tips -- 提取方法
今天来给大家介绍一个非常有用的Studio Tips,有些时候我们在一个方法内部写了过多的代码,然后想要把一些代码提取出来再放在一个单独的方法里,通常我们的做法是复制粘贴,现在我来教给大家一个非常简洁的方法,先看下gif演示吧: 怎么样很方便吧?操作方法很简单,只需要选中一些代码,然后操作快捷键 Cmd + Option + M 就ok了,Windows是 Ctrl + Alt +转载 2015-10-12 16:28:40 · 268 阅读 · 0 评论 -
推荐几个非常有用的工具
一晃好久没更新博客了,最近一个月真的很忙,因为公司在准备C轮融资,公司的发展到了一个关键的阶段,自己全部精力投入在公司产品上,这个状态可能还会持续一段时间,今天忙中抽闲来给大家分享下我们最近在项目中采用到的一些能帮助团队提升工作效率的几个Android Studio插件和工具。(可直接点击标题跳转到GitHub主页) 1、ButterKnife Zelezny ButterKnife转载 2015-10-12 16:45:30 · 307 阅读 · 0 评论 -
Android轻量缓存框架--ASimpleCache
做Android应用开发的同学们相信对“缓存”这个词不陌生,缓存可能有多方面的概念,这里大概列举下程序开发的缓存大概有哪些: 1.服务端控制缓存 如volley请求库,便是通过服务端的“Cache-Control”和“max-age”来告诉客户端有没有缓存以及缓存的时间,也是推荐的使用方式,但是需要服务端配合,比较灵活。 2.客户端直接控制缓存 有些时候不需要服务端来支持的转载 2015-10-13 09:29:28 · 293 阅读 · 0 评论 -
Android 屏幕适配
众所周知,Android机型尺寸各种各样,于是屏幕适配就成了Android开发中很重要的一环。Android屏幕适配可能一些开发者都会遇到这样的问题,今天就来分享下屏幕适配,你会发现其实Android屏幕适配也可以很简单。 基本概念 Android屏幕适配必须要理解的一些概念,这部分可能比较枯燥,但是俗话说的好“工欲善其事,必先利器”,翻译过来就是“有什么样的枪,决定你打什么样的鸟”,转载 2015-10-13 10:18:09 · 229 阅读 · 0 评论 -
onSaveInstanceState & onRestoreInstanceState
前面两节主要详细讲解了Activity的生命周期方法以及一些特定的场景,其中涉及到onSaveInstanceState和onRestoreInstanceState这两个方法没有讲解,这篇博客就来分析下这两个方法的作用。 onSaveInstanceState onSaveInstanceState字面理解就是保存实例的状态,当某个activity变得“容易”被系统销毁时,该acti转载 2015-10-13 09:41:25 · 257 阅读 · 0 评论 -
Android Studio Tips -- 自定义Logcat
我们都知道Logcat是我们Android开发调试最常用的一个工具,但是Android Studio默认的Logcat调试的颜色是一样的,我们不好区分verbose、debug、error等分类信息,今天就来教大家自定义Logcat的提示信息。 打开Preference->Editor->Colors & Fonts->Android Logcat(或者搜索logcat),如果我们默认选择的转载 2015-10-12 16:27:25 · 298 阅读 · 0 评论 -
Android Studio系列教程六--Gradle多渠道打包
由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了。 友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: meta-data android:name="UMENG_CHANNEL" a转载 2015-10-12 16:28:12 · 252 阅读 · 0 评论 -
Handler引起的内存泄露
如果你在Activity中定义了一个内部Handler类,如下代码: public class MainActivity extends Activity { private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) {转载 2015-10-13 14:40:42 · 303 阅读 · 0 评论 -
Android高效加载图片,有效避免程序OOM
我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状、不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小。比如说系统图片库里展示的图片大都是用手机摄像头拍出来的,这些图片的分辨率会比我们手机屏幕的分辨率高得多。大家应该知道,我们编写的应用程序都是有一定内存限制的,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常。我们可以通过下面的代码看转载 2015-10-13 14:47:48 · 297 阅读 · 0 评论 -
Android编程规范与常用技巧
一、Android编码规范 1.java代码中不出现中文,最多注释中可以出现中文 2.局部变量命名、静态成员变量命名 只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写 3.常量命名 只能包含字母和_,字母全部大写,单词之间用_隔开 4.layout中的id命名 命名模式为:view缩写_模块名称_view的逻辑名称 view的缩写详情如转载 2015-10-13 14:51:05 · 358 阅读 · 0 评论 -
Android Studio系列教程二--基本设置与运行
上面一篇博客,介绍了Studio的优点与1.0 RC的安装与上手体验,没想到google的更新速度这么快,已经出了RC 2版本,主要是修复一些bug。那么今天就带大家预览下Stduio的界面与基本功能。 项目结构 当我们新建一个项目的目录结构默认是这样的 可以看到和Eclipse的目录结构有很大区别,Studio一个窗口只能有一个项目,而Eclipse则可以同时存在很多项转载 2015-10-12 16:24:01 · 246 阅读 · 0 评论 -
Android Studio系列教程一--下载与安装
背景 相信大家对Android Studio已经不陌生了,Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Google的更新速度也很快,明显能感觉到这是Android开发的未来,那么我们还有什么理由不去拥抱未来呢? 虽然推出了很久,但是国内貌似普及的程度并不高,鉴于很多朋友求studio的详细教程,那么今天转载 2015-10-12 16:23:12 · 293 阅读 · 0 评论 -
Android Studio系列教程四--Gradle基础
其实很早之前也写了一篇Gradle的基础博客,但是时间很久了,现在Gradle已经更新了很多,所以暂且结合Stduio 1.0正式版与最新的Gradle语法来详细讲解下,小伙伴们直接跟我一步步来学习吧。 什么是Gradle? Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DS转载 2015-10-12 16:21:38 · 252 阅读 · 0 评论 -
android 布局性能优化
1.当我们在画布局时,为了实现某个功能,优先考虑相对布局,然后再考虑别的布局,不要用绝对布局。因为相对布局会比其他布局少很多对象。如果对象过多,会发生堆栈溢出错误。 2.Merge标签,优化ui结构。删减多余或者额外的层级,从而优化整个Android Layout的结构。核心功能就是减少冗余的层次从而达到优化UI的目的! 3.ViewStub 是一个隐藏的,不占用内存空间的视原创 2015-09-16 14:34:36 · 288 阅读 · 0 评论 -
activity的启动模式
standard:当startActivity(),每次都会创建一个activity的实例放入任务stack中。 singleTop:当这个activity处于任务stack的最顶端,就会直接复用。不会去创建activity实例。 onNewIntent()方法被调用。 singleTask:这个activity的实例在一个任务stack中只会存在一个这样的实例。如果他发现任务原创 2015-09-16 12:17:29 · 240 阅读 · 0 评论 -
开发神器-Android Studio插件
1、android-butterknife-zelezny android-butterknife-zelezny 是根据butterknife定制的一款插件,能够方便快速初始化,对于我来说是开发必备,本人也对此插件进行了一些优化,个人感觉用起来更爽 ,博客地址: ButterknifePlugin 回到顶部 2、Gsonformat 可根据json数据快速生成ja原创 2015-11-05 14:17:19 · 490 阅读 · 0 评论 -
android OOM(out of memory)异常的处理
一、Android系统对图片进行加载处理时,内存的申请情况是根据图片的宽高来决定。 要解决OOM异常,需要对加载的大尺寸的图片进行缩放。 Bitmap bitmap = BitmapFactory.decodeFile("/mnt/sdcard/a.jpg"); iv.setImageBitmap(bitmap); 当通过此方法加载大图片的时候,容易出现OOM(out of mem转载 2015-09-16 16:37:13 · 711 阅读 · 0 评论 -
android ANR异常
ANR异常的原因和处理 原因:在主线程中做耗时操作 处理逻辑: 1. new出一个新的线程,进行数据请求 2. 获取数据后, 调用handler.sendMessage方法 3. 在handler的handle()方法中更新UI 如何避免ANR? 1.Activity的onCreate()和onResume()里尽可能少的去做创建操作(可以采用重新开启子线程的方式,然后使用Han原创 2015-09-16 16:41:24 · 653 阅读 · 0 评论 -
android 内存优化
内存泄露:某对象不再使用了(有引用指向他),GC无法回收,该对象占用的内存就无法被使用 java的,内存泄漏和C/C++是不一样 java程序完全结束后,它所有的对象就不可达,就会被GC回收,内存泄漏仅限于它本身,不会影响整个系统 C/C++的内存泄漏是系统级的,即使该C/C++程序退出,它的泄露的内存也无法被系统回收,永远不可用了,除非重启机器 Android的每个应用程原创 2015-09-16 13:05:33 · 278 阅读 · 0 评论 -
Asynctask原理
AsyncTask 异步任务, 主要包含两个关键类: InternalHandler: 消息处理器, 用于处理线程之间消息. ThreadPoolExecutor: 线程池, 用于处理耗时任务原创 2015-09-16 13:14:10 · 282 阅读 · 0 评论 -
android ListView的优化
网络图片异地加载,分批加载,分页查询,图片缓存等优化方式 复用convertView,减少findViewById的次数 ① convertView ② ViewHolder ListView中数据的分批及分页加载 1、准备数据: 在dao中添加分批加载数据的方法:findPartDatas () 在适配数据的时候,先加载第一批的数据,需要加载第二批的时候,设置监听检测何原创 2015-09-16 16:56:31 · 199 阅读 · 0 评论 -
android 屏幕适配
1. 低密度向上找,高密度向下找 一般需要480*800。但只要涉及到填充屏幕的就必须要切一套1280*720(直接用苹果手机的1136*640的也行)的。将这大图放入xhdpi目录下。 小图无需切第二套图,因为小图进行拉升也没有多大的区别,而全屏幕大图拉升的话就会模糊。 ldpi 120dpi mdpi 320*480转载 2015-09-16 14:19:33 · 281 阅读 · 0 评论 -
ButterKnife--View注入框架
俗话说:“不会偷懒的程序员不是好的程序员!”。作为一名Android开发,是不是经常厌烦了大量的findViewById以及setOnClickListener代码,而ButterKnife是一个专注于Android系统的View注入框架,让你从此从这些烦人臃肿的代码中解脱出来。先来看一段代码示例说明下ButterKnife是如何简化代码的: 注意:如果你是使用的Eclipse引用该libr转载 2015-10-12 16:46:12 · 236 阅读 · 0 评论 -
我心中的Android REST Client--9gag
What is a good app 作为一名Android Developer,一直都想Make A Good App。很多次的我都在反问自己,我心中的Good App应该是什么样的呢?为了寻找答案,自己一直在产品、设计以及技术上都花了不少时间探索与研究。如今可能有点雏形,我心中的Good App可能需要满足以下几个方面: 产品上要追求功能简洁至上,坚持认为Simple is b转载 2015-10-12 16:56:51 · 337 阅读 · 0 评论 -
Android简便通用的SimpleBaseAdapter
在Android开发中经常用到ListView、GridView等列表,于是Adapter也就比较常用的了, 而实际项目中稍微复杂点的基本都会用到BaseAdapter, 大家都知道继承自BaseAdapter必须要重写getCount(), getItem(), getItemId(), getView()这几个方法, 而且可能为了优化列表的加载还还会经常采用ViewHoder模式, 试想列表多转载 2015-10-12 17:03:17 · 299 阅读 · 0 评论 -
Android SwipeRefreshLayout
今天在Google+上看到了SwipeRefreshLayout这个名词,遂搜索了下,发现竟然是刚刚google更新sdk新增加的一个widget,于是赶紧抢先体验学习下。 SwipeRefreshLayout SwipeRefreshLayout字面意思就是下拉刷新的布局,继承自ViewGroup,在support v4兼容包下,但必须把你的support library的版本升级到转载 2015-10-13 09:37:51 · 269 阅读 · 0 评论 -
Android Studio Tips -- 布局预览
我们都知道Android Studio用起来很棒,其中布局预览更棒。我们在调UI的时候基本是需要实时预览来看效果的,在Android Studio中只需要切换到Design就可以看到,而且我们需要在布局上填充数据预览效果更好,比如我们在TextView中设定text属性来看下字体大小与布局是否正确,但是呢正式环境我们又需要移除这些额外的数据,不然看着很不舒服,这个时候就用到了本篇博客介绍的一个技巧转载 2015-10-12 16:26:49 · 273 阅读 · 0 评论 -
handler消息处理机制
三个核心类:Looper,Handler和Message, MessageQueue(消息队列)在Looper内部 Looper.prepare();//将当前线程初始化为Looper线程 Looper.loop();// 开始循环处理消息队列 handler机制: 1.在创建Activity之前,在系统启动的时候先加载ActivityThread类,在这个类的main函数中,调原创 2015-09-16 13:12:32 · 268 阅读 · 0 评论