自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (1)
  • 收藏
  • 关注

转载 解决Android Studio编译后安装apk报错:The APK file does not exist on

1、错误描述今天用Android Studio编译应用后安装APK的时候,报错了,错误如下所示:The APK file build\outputs\apk\OYP_2.3.4_I2Base_6476_official_debug.apk does not exist on disk.Error while Installing APK如下图所示 2、解决方法

2016-09-08 16:56:32 784 1

原创 Android技术之ListView分割线显示和隐藏

1、设置和取消每个item分隔线解决方案:ListView.setDivider(null);android:Divider="@null";android:divider="@drawable/listview_horizon_line"2、隐藏头部分隔线listview分割线会在头部、数据item、及根部的底部打印,如果要取消头部分割线必须

2015-12-07 17:10:00 656

原创 Error:Execution failed for task ':myapp:dexDebug'. com.android.ide.common.process.ProcessException

Error:Execution failed for task ':myapp:dexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:Process 'command '/usr/lib/jvm/java-7-openjdk-amd64/bin/ja

2015-11-18 14:59:06 397

原创 ScrollView嵌套ListView冲突问题的解决方案

问题一 : 嵌套在 ScrollView的 ListVew数据显示不全解决办法:重写 ListVew或者 GridView,网上还有很多若干解决办法,但是都不好用或者很复杂。@Override/**   只重写该方法,达到使ListView适应ScrollView的效果   */ protected void onMeasure(int widthMeasureSp

2015-11-16 13:31:42 429

原创 Attempt to invoke virtual method 'boolean RecyclerView$LayoutManager.canScrollVertically()

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v7.widget.RecyclerView$LayoutManager.canScrollVertically()' on a null object reference解决办法:删除布局文件中

2015-11-15 15:13:46 3522

原创 RecyclerView android:layout_width="match_parent"无效

使用RecyclerView 时,在xml文件中设置宽度match_parent无效,发现在Adapter中要如下填充view(注释掉的填充方式会导致match_parent无效)/**     * 创建新View,被LayoutManager所调用     */    @Override    publicViewHolder onCrea

2015-11-10 15:23:51 613

原创 开发神器-Android Studio插件

1、android-butterknife-zeleznyandroid-butterknife-zelezny 是根据butterknife定制的一款插件,能够方便快速初始化,对于我来说是开发必备,本人也对此插件进行了一些优化,个人感觉用起来更爽 ,博客地址: ButterknifePlugin回到顶部2、Gsonformat可根据json数据快速生成ja

2015-11-05 14:17:19 482

转载 Android编程规范与常用技巧

一、Android编码规范1.java代码中不出现中文,最多注释中可以出现中文2.局部变量命名、静态成员变量命名只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写3.常量命名只能包含字母和_,字母全部大写,单词之间用_隔开4.layout中的id命名命名模式为:view缩写_模块名称_view的逻辑名称view的缩写详情如

2015-10-13 14:51:05 345

转载 Android高效加载图片,有效避免程序OOM

我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状、不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小。比如说系统图片库里展示的图片大都是用手机摄像头拍出来的,这些图片的分辨率会比我们手机屏幕的分辨率高得多。大家应该知道,我们编写的应用程序都是有一定内存限制的,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常。我们可以通过下面的代码看

2015-10-13 14:47:48 290

转载 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 294

转载 Android 屏幕适配

众所周知,Android机型尺寸各种各样,于是屏幕适配就成了Android开发中很重要的一环。Android屏幕适配可能一些开发者都会遇到这样的问题,今天就来分享下屏幕适配,你会发现其实Android屏幕适配也可以很简单。基本概念Android屏幕适配必须要理解的一些概念,这部分可能比较枯燥,但是俗话说的好“工欲善其事,必先利器”,翻译过来就是“有什么样的枪,决定你打什么样的鸟”,

2015-10-13 10:18:09 221

转载 Activity生命周期详解

首次启动onCreate –> onStart –> onResume按下返回按键onPause –> onStop –> onDestroy按Home键onPause –> onSaveInstanceState –> onStop再次打开onRestart –> onStart –> onResume屏幕旋转如果你不做任何

2015-10-13 09:45:25 274

转载 onSaveInstanceState & onRestoreInstanceState

前面两节主要详细讲解了Activity的生命周期方法以及一些特定的场景,其中涉及到onSaveInstanceState和onRestoreInstanceState这两个方法没有讲解,这篇博客就来分析下这两个方法的作用。onSaveInstanceStateonSaveInstanceState字面理解就是保存实例的状态,当某个activity变得“容易”被系统销毁时,该acti

2015-10-13 09:41:25 248

转载 Android SwipeRefreshLayout

今天在Google+上看到了SwipeRefreshLayout这个名词,遂搜索了下,发现竟然是刚刚google更新sdk新增加的一个widget,于是赶紧抢先体验学习下。SwipeRefreshLayoutSwipeRefreshLayout字面意思就是下拉刷新的布局,继承自ViewGroup,在support v4兼容包下,但必须把你的support library的版本升级到

2015-10-13 09:37:51 259

转载 Android轻量缓存框架--ASimpleCache

做Android应用开发的同学们相信对“缓存”这个词不陌生,缓存可能有多方面的概念,这里大概列举下程序开发的缓存大概有哪些:1.服务端控制缓存如volley请求库,便是通过服务端的“Cache-Control”和“max-age”来告诉客户端有没有缓存以及缓存的时间,也是推荐的使用方式,但是需要服务端配合,比较灵活。2.客户端直接控制缓存有些时候不需要服务端来支持的

2015-10-13 09:29:28 281

转载 Android简便通用的SimpleBaseAdapter

在Android开发中经常用到ListView、GridView等列表,于是Adapter也就比较常用的了, 而实际项目中稍微复杂点的基本都会用到BaseAdapter, 大家都知道继承自BaseAdapter必须要重写getCount(), getItem(), getItemId(), getView()这几个方法, 而且可能为了优化列表的加载还还会经常采用ViewHoder模式, 试想列表多

2015-10-12 17:03:17 291

转载 我心中的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 323

转载 ButterKnife--View注入框架

俗话说:“不会偷懒的程序员不是好的程序员!”。作为一名Android开发,是不是经常厌烦了大量的findViewById以及setOnClickListener代码,而ButterKnife是一个专注于Android系统的View注入框架,让你从此从这些烦人臃肿的代码中解脱出来。先来看一段代码示例说明下ButterKnife是如何简化代码的:注意:如果你是使用的Eclipse引用该libr

2015-10-12 16:46:12 226

转载 推荐几个非常有用的工具

一晃好久没更新博客了,最近一个月真的很忙,因为公司在准备C轮融资,公司的发展到了一个关键的阶段,自己全部精力投入在公司产品上,这个状态可能还会持续一段时间,今天忙中抽闲来给大家分享下我们最近在项目中采用到的一些能帮助团队提升工作效率的几个Android Studio插件和工具。(可直接点击标题跳转到GitHub主页)1、ButterKnife ZeleznyButterKnife

2015-10-12 16:45:30 298

转载 Android Studio Tips -- 提取方法

今天来给大家介绍一个非常有用的Studio Tips,有些时候我们在一个方法内部写了过多的代码,然后想要把一些代码提取出来再放在一个单独的方法里,通常我们的做法是复制粘贴,现在我来教给大家一个非常简洁的方法,先看下gif演示吧:怎么样很方便吧?操作方法很简单,只需要选中一些代码,然后操作快捷键 Cmd + Option + M 就ok了,Windows是 Ctrl + Alt +

2015-10-12 16:28:40 258

转载 Android Studio系列教程六--Gradle多渠道打包

由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了。友盟多渠道打包废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段:meta-data android:name="UMENG_CHANNEL" a

2015-10-12 16:28:12 242

转载 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 289

转载 Android Studio Tips -- 布局预览

我们都知道Android Studio用起来很棒,其中布局预览更棒。我们在调UI的时候基本是需要实时预览来看效果的,在Android Studio中只需要切换到Design就可以看到,而且我们需要在布局上填充数据预览效果更好,比如我们在TextView中设定text属性来看下字体大小与布局是否正确,但是呢正式环境我们又需要移除这些额外的数据,不然看着很不舒服,这个时候就用到了本篇博客介绍的一个技巧

2015-10-12 16:26:49 261

转载 Android Studio系列教程五--Gradle命令详解与导入第三方包

Android Studio + Gradle的组合用起来非常方便,很多第三方开源项目也早都迁移到了Studio,为此今天就来介绍下查看、编译并导入第三方开源项目的方法。Sublime + Terminal编译并查看源码首先来给大家介绍一种简便并且个人最喜欢的一种办法。很多时候我们在GitHub上看到一个不错的开源项目,一般有两种需求,阅读源码和查看运行效果,如果是单纯的查看源码我

2015-10-12 16:26:07 243

转载 Android Studio系列教程四--Gradle基础

其实很早之前也写了一篇Gradle的基础博客,但是时间很久了,现在Gradle已经更新了很多,所以暂且结合Stduio 1.0正式版与最新的Gradle语法来详细讲解下,小伙伴们直接跟我一步步来学习吧。什么是Gradle?Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DS

2015-10-12 16:25:21 240

转载 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 236

转载 Android Studio系列教程二--基本设置与运行

上面一篇博客,介绍了Studio的优点与1.0 RC的安装与上手体验,没想到google的更新速度这么快,已经出了RC 2版本,主要是修复一些bug。那么今天就带大家预览下Stduio的界面与基本功能。项目结构当我们新建一个项目的目录结构默认是这样的可以看到和Eclipse的目录结构有很大区别,Studio一个窗口只能有一个项目,而Eclipse则可以同时存在很多项

2015-10-12 16:24:01 238

转载 Android Studio系列教程一--下载与安装

背景相信大家对Android Studio已经不陌生了,Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Google的更新速度也很快,明显能感觉到这是Android开发的未来,那么我们还有什么理由不去拥抱未来呢?虽然推出了很久,但是国内貌似普及的程度并不高,鉴于很多朋友求studio的详细教程,那么今天

2015-10-12 16:23:12 287

转载 Android Studio系列教程四--Gradle基础

其实很早之前也写了一篇Gradle的基础博客,但是时间很久了,现在Gradle已经更新了很多,所以暂且结合Stduio 1.0正式版与最新的Gradle语法来详细讲解下,小伙伴们直接跟我一步步来学习吧。什么是Gradle?Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DS

2015-10-12 16:21:38 239

转载 MVC,MVP 和 MVVM 的图示区别

MVC,MVP 和 MVVM 的图示作者: 阮一峰日期: 2015年2月 1日复杂的软件必须有清晰合理的架构,否则无法开发和维护。MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了。昨天

2015-10-12 16:19:05 289

原创 android ListView的优化

网络图片异地加载,分批加载,分页查询,图片缓存等优化方式复用convertView,减少findViewById的次数  ① convertView② ViewHolderListView中数据的分批及分页加载1、准备数据:在dao中添加分批加载数据的方法:findPartDatas ()在适配数据的时候,先加载第一批的数据,需要加载第二批的时候,设置监听检测何

2015-09-16 16:56:31 187

原创 android ANR异常

ANR异常的原因和处理原因:在主线程中做耗时操作处理逻辑:1. new出一个新的线程,进行数据请求2. 获取数据后, 调用handler.sendMessage方法3. 在handler的handle()方法中更新UI如何避免ANR?1.Activity的onCreate()和onResume()里尽可能少的去做创建操作(可以采用重新开启子线程的方式,然后使用Han

2015-09-16 16:41:24 635

转载 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 690

原创 android 布局性能优化

1.当我们在画布局时,为了实现某个功能,优先考虑相对布局,然后再考虑别的布局,不要用绝对布局。因为相对布局会比其他布局少很多对象。如果对象过多,会发生堆栈溢出错误。2.Merge标签,优化ui结构。删减多余或者额外的层级,从而优化整个Android Layout的结构。核心功能就是减少冗余的层次从而达到优化UI的目的!3.ViewStub是一个隐藏的,不占用内存空间的视

2015-09-16 14:34:36 280

转载 android 屏幕适配

1.低密度向上找,高密度向下找一般需要480*800。但只要涉及到填充屏幕的就必须要切一套1280*720(直接用苹果手机的1136*640的也行)的。将这大图放入xhdpi目录下。小图无需切第二套图,因为小图进行拉升也没有多大的区别,而全屏幕大图拉升的话就会模糊。ldpi                           120dpimdpi     320*480

2015-09-16 14:19:33 269

原创 Asynctask原理

AsyncTask 异步任务,主要包含两个关键类:InternalHandler:消息处理器, 用于处理线程之间消息.ThreadPoolExecutor:线程池, 用于处理耗时任务

2015-09-16 13:14:10 272

原创 handler消息处理机制

三个核心类:Looper,Handler和Message,MessageQueue(消息队列)在Looper内部Looper.prepare();//将当前线程初始化为Looper线程Looper.loop();// 开始循环处理消息队列handler机制:1.在创建Activity之前,在系统启动的时候先加载ActivityThread类,在这个类的main函数中,调

2015-09-16 13:12:32 254

原创 android 内存优化

内存泄露:某对象不再使用了(有引用指向他),GC无法回收,该对象占用的内存就无法被使用java的,内存泄漏和C/C++是不一样java程序完全结束后,它所有的对象就不可达,就会被GC回收,内存泄漏仅限于它本身,不会影响整个系统C/C++的内存泄漏是系统级的,即使该C/C++程序退出,它的泄露的内存也无法被系统回收,永远不可用了,除非重启机器Android的每个应用程

2015-09-16 13:05:33 266

转载 android事件传递机制

Android Touch事件dispatchTouchEvent分发TouchEventonInterceptTouchEvent拦截TouchEventonTouchEvent处理TouchEvent当TouchEvent发生时,首先Activity将TouchEvent传递给最顶层的View, TouchEvent最先到达最顶层 view 的 dispatchTouc

2015-09-16 12:24:06 245

原创 activity的启动模式

standard:当startActivity(),每次都会创建一个activity的实例放入任务stack中。singleTop:当这个activity处于任务stack的最顶端,就会直接复用。不会去创建activity实例。 onNewIntent()方法被调用。singleTask:这个activity的实例在一个任务stack中只会存在一个这样的实例。如果他发现任务

2015-09-16 12:17:29 231

数据结构考试大纲

总结了复习内容,可以帮助你更有条理地复习

2012-01-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除