
安卓开发
文章平均质量分 87
Jianhua09
这个作者很懒,什么都没留下…
展开
-
[Android] WebView中拍照或从相册上传图片
WebView 上传图片, 想必很多人都碰到过这样的场景. 而且 WebView 在4.4前后的区别非常大, 比如对URL跳转的格式, 对JS的注入声明等等, 4.4以后的WebView 已经是chromium内核, 有多强大就无需我赘述. 说这些, 其实也是为了说明也因为WebView的前后变化太大了, 所以在低版本和版本上, WebView上传文件的方式都略有不同, 而且在安卓4.4.4的一些设原创 2016-10-16 16:32:07 · 9683 阅读 · 6 评论 -
Java常用的几个正则方法(查找索引,匹配,替换)
正则表达式是一种为了方便操作字符串而约定的规则.在PHP,JAVA等很多主流语言都有正则的使用.最常见的用法莫过于查找,替换和匹配.下面作为简单的总结,通过用简单的例子,记录下常用的几个方法.关于正则如何使用,就不解释了,因为网上也能找到非常多的相关资料可以看.这里只将几个常用的方法总结:查找索引通过关键字符串,去在目标内容中去匹配查找它的位置,这应该是最常见的用法. Stri原创 2015-04-09 17:22:58 · 10162 阅读 · 0 评论 -
Android性能优化之谈谈SparseArray,SparseBooleanArray和SparseIntArray
相信大家都明白,手机软件的开发不同于PC软件的开发,因为手机性能相对有限,内存也有限,所谓“寸土寸金”,可能稍有不慎,就会导致性能的明显降低。Android为了方便开发者,特意在android.util这个包中提供了几个提高效率的工具类,比如之前用过的LruCache类,这次我们来谈谈其他工具类,SparseArray,SparseBooleanArray和 SparseIntArray。原创 2015-04-14 00:24:03 · 16509 阅读 · 2 评论 -
Android性能优化之提高应用响应速度(了解ViewStub和推迟视图的初始化)
为什么需要推迟视图初始化这里谈谈为什么要推迟视图的初始化. 假设这样一个情况, 如果手机的界面包含大量的视图组件,而且数据大多都来源于服务器. 这就意味着一进入这个界面,应用就会在onCreate()方法中去初始化为数不少的layout资源, 而初始化View是一个比较耗时耗资源的操作. 然后, 应用进行几个网络链接,去获取数据回来更新填充View中的各个组件. 这样算起来, 用户从进入某个A原创 2015-04-26 22:43:14 · 2857 阅读 · 2 评论 -
[Android]类似淘宝的数字自增自减文本
手机的支付宝每次打开都有一个数字从0到特定数字的增加或减少, 表示数值的更新. Android也提供了CountDownTimer去实现类似的效果. 要自己来实现, 原理也并不复杂,主要用Handler去定时刷新数字, 和CountDownTimer类似. 于是结合Handler和TextView即可实现. 效果图, GIF图看起来不连贯. 运行代码效果会好一些.例原创 2015-05-12 20:13:29 · 2101 阅读 · 0 评论 -
Android的ViewDragHelper源码解析
其实我想看的是DrawerLayout, 但发现DrawerLayout里面是使用了ViewDragHelper去实现.谷歌比较早就放出这个类了,但ViewDragHelper是开发中很少用到一个类.顾名思义这是一个和拖曳触摸有关的类.本着追根溯源的想法, 加上ViewDragHelper的源码也不算多,就决定将ViewDragHelper的源码看一遍.对实现原理了解下.代原创 2015-05-06 00:16:32 · 2225 阅读 · 2 评论 -
Android开发调试必备 - 使用DDMS
原文地址Android开发平台自带一个调试工具, 叫Dalvik Debug Monitor Server(简称DDMS). 这个工具提供了端口传输服务, 在当前连接的调试设备上截图, 设备的线程和堆(heap)信息, logcat信息, 进程状态信息 和 广播信息, 模拟目标机拨打电话和发送信息, 模拟位置数据等等.这篇文章将会适当的讨论DDMS的特点, 但不会详尽的介绍所有功能翻译 2015-06-19 00:11:50 · 10828 阅读 · 1 评论 -
[Android]浅析Http框架 - Android-Async-http
现在主流的网络框架越来越多, Volley, okHttp, Android-Async-http. Android-Async-http是出现比较久的网络框架,用的人相当多. 后来Google结合HttpClient和HttpUrlConnection的优点又推出同样优秀的框架Volley.这些都是优秀的框架,值得我们去阅读源码学习. Android-Async-http我用过很长事件,但都没去原创 2015-06-02 23:59:29 · 2078 阅读 · 2 评论 -
Android数据存储之操作SQLite
安卓手机的存储方式,主要有File,数据库,SharePreFerence和网络等等。这里我们讲讲android上数据库的使用。常见的数据库比如Oracle,SQL Server和MySQL,这些都是主流的数据库,但是放在手机上实在是太“重量化”了。所以Android提供了SQLiteDatebase。这是一种轻量化的数据库,用户不必过多关心表的存储关系,直接用就行了。而且为了方便,系统也提供了可原创 2015-04-08 23:44:02 · 750 阅读 · 0 评论 -
简析Handler、Looper和MessageQueue三者的关系
Android开发中,Handler用的非常多,因为它和AsyncTask一样是系统提供给我们的异步的通信机制。能够将一些更新和别的不适合放在UI主线程的操作放到它们中去。Handler的作用主要有两个:一是在线程中发送消息, 二是获取和处理消息。既可以发送消息sendEmptyMessage(int what) ,也可以发送指定的消息sendMessage(Message msg),还可以利原创 2015-04-02 22:59:40 · 974 阅读 · 0 评论 -
android的ShapeDrawable源码解析
相信很多人都用XML里面的shape标签,就能实现椭圆,矩形等图形.然后直接当做Drawable来使用.比如ImageView.setImageDrawable(Drawable). 没错,这个shape标签所实现的图形Drawable其实就是ShapeDrawable对象,而ShapeDrawable是 Drawable的子类.(按照这个规律,也许你还会发现Drawable的子类还有Gradie原创 2015-03-13 22:36:26 · 2228 阅读 · 0 评论 -
android四大组件之Service和子类IntentService
四大组件中, Service跟Activity的生命周期非常类似,它也是可执行的.甚至可看做是没有界面的"Activity", 因为它的运行,用户并不会像Activity那样能看到它能呈现出来具体的视图界面. 同样,就像Activity一样, 需要继承Service来使用它的子类. 并且同样需要在AndroidManifest.xml中配置所定义的Service.Service的生命周原创 2015-03-07 10:14:53 · 1468 阅读 · 0 评论 -
android之手机开机启动Service服务
之前,介绍了四大组件的BroadCastReceiver和Service,这次我们利用广播来启动Service服务. 这种实现在很多APP都有出现,比如很多应用安装后,只要使用过一次,后面重启手机它可能就会推送一些消息给用户的手机,在顶栏显示某个应用又有什么消息之类的.这只是Service的行为, 只要成功启动了Service服务,还可以根据需要自定义其他的行为.关于BroadCast原创 2015-03-08 18:07:54 · 1583 阅读 · 0 评论 -
Android性能优化之实现双缓存的图片异步加载工具(LruCache+SoftReference) - 拿来即用
之前在郭大神的博客看到使用LruCache算法实现图片缓存的.这里仿效他的思路,自己也写了一个. 并加入ConcurrentHashMap>去实现二级缓存,因为ConcurrentHashMap是多个锁的线程安全,支持高并发.很适合这种频繁访问读取内存的操作.下面整个思路是,使用了系统提供的LruCache类做一级缓存, 大小为运行内存的1/8,当LruCache容量要满的时候,会自动原创 2015-03-11 00:32:42 · 1678 阅读 · 0 评论 -
安卓动画系列之四, 属性动画PropertyAnimation(上)之初步印象
前面讲过补间动画和帧动画,属性动画(PropertyAnimation)是相对前面两种更为高级和灵活的一种动画.属性动画,顾名思义,属性是重要的特点.这里将属性动画的目标看成一个对象,就算不是一个可见的view,甚至只是一个类对象,只要具备必要的属性,也能设置属性动画.属性动画的基类Animator一般不会直接使用,而是会使用它的子类ValueAnimator 和 ObjectAnim原创 2015-02-07 09:38:59 · 929 阅读 · 0 评论 -
安卓动画系列之属性动画实现跳起落下圆圈运动
最近看了淘宝手机端的有些页面是类似下面这个小球的加载效果。后来了解了下,淘宝是直接一个gif图片实现效果的,这当然是最简单的方法。为了加深了解属性动画,这次就做个类似的效果。这依旧由几个简单的属性动画组合在一起,所有动画都在代码里实现了。看注释就好。上个效果图:实现代码:小球圆圈的XML文件 drawable_dot.xml:<shape xmlns:an原创 2015-03-22 23:14:23 · 1720 阅读 · 0 评论 -
Android基础视图组件之计时器( Chronometer )
安卓系统是内置了计时器(Chronometer)的,但是不很强大,只能显示以秒为单位的计时。如果要具体到毫秒级,就要自己写方法实现了。因为Chronometer这个组件灰常简单,提供的api方法也少,可直接通过例子了解。计时器(Chronometer)的核心方法有:start() //开始计时stop() //结束计时setBase() //设置开始时间,一般使用S原创 2015-03-23 22:23:16 · 1806 阅读 · 0 评论 -
Fragment的通信问题, 新建Fragment为何不要在构造方法中传递参数?
最近有个新进来的同事做Android开发,因为之前都是做Java的,所以新建对象习惯在构造方法里面去传递参数回调方法什么的.于是当他在Activity中创建Fragment的时候,也使用了类似new TestFragment( "content" ) 这样的方式去将Activity中的参数传递到TestFragment中. 第一次用的时候没报错,然后进出几次TestFragment就报androi原创 2015-03-31 00:56:00 · 6351 阅读 · 4 评论 -
Android性能优化之解密ZAKER,网易云阅读等新闻应用的内容缓存加载方式
我是比较关注时事的, 每天都会花一点事件去看看新闻什么的. 因此类似ZAKER, 网易云阅读等这类的资讯聚合类应用是我的钟爱, 并且这些应用也确实做得很好,值得学习! 前面一篇文章, 讲了缓存的一些构思. 之前也写过LRUCache类的一些缓存实践, 但那只是放在应用的缓存中,并不适合做长期的缓存. 这次我们来实践完整的例子, 模仿ZAKER那类应用是如何加载一条新闻的,并且如何缓存这条新闻的.原创 2015-05-22 02:49:28 · 4552 阅读 · 10 评论 -
[Android] 快速实现一个通用EmptyView
好的APP应当具备良好的交互, 最好能贴心的满足用户的需求. 而人性化的提醒就是其中之一. 某些APP中经常会看到这样的场景, 当加载内容失败, 或者获取内容失败时, 界面会变成一个可与用后交互的场景. 允许用户点击屏幕或者界面中某个按钮, 尝试重新获取内容或者检测网络连接等等. Android的ListView中有类似setEmptyView(...) 的方法, 当列表中没有数据, 就会显示该原创 2015-08-18 22:14:18 · 2333 阅读 · 0 评论 -
[Android] 快速实现一个可切换Tab标签页的组件
在移动应用上, 可水平切换Tab或者点击标签里上的某个标签直接跳到某个对应标签页, 这种交互很常见. 的确, 在开源上也有相当多不错的这类开源可用, 比如ViewPageIndicator, MaterialTab等等. 开源给予我们很多帮助, 提高我们的开发效率, 而研究别人优秀的代码也能提高自己的水平.但另一方面, 我们去使用开源的时候, 往往会遇到一个问题, 而这个问题相信也是原创 2015-10-14 23:15:20 · 6916 阅读 · 0 评论 -
[Android] 更好的解决 "返回键或取消时自动回调DatePickerDialog的方法onDateSet()" 的问题
自从忙完工作变动的事情后好久没写博了, 内心愧疚啊.... 说好的坚持学习呢... TAT好吧, 回归正题. 用过 Android自带的DatePickerDialog的默认样式是这样的:只有一个 "完成" 按钮...如果将完成选择日期的触发事件放在方法onDateSet(), 那么无论是点击返回键或屏幕outSide的地方, 或者点击 "完成"按钮, 都会原创 2016-01-21 16:03:51 · 2856 阅读 · 0 评论 -
[Android] Webview利用CookieSyncManager获取或设置Cookies的策略
应用场景或许, 你也有碰到过这样的应用场景:APP应用的某些功能, 需要调用内嵌的WebView去加载某个URL使用. 但用户在手机APP已经成功登录过了. 这时, 如果在内置浏览器去打开网页还需要用户再输入登录一次, 似乎显得不够人性化. 又或者, 用户在内置浏览器(WebView) 访问过一些页面, 想把这些有用的 Cookies 信息保存在本地. 因此, 我们会想, 要是能管理原创 2016-01-26 15:23:46 · 15916 阅读 · 8 评论 -
[Android] 解决Volley中JsonObjectRequest的Post请求添加参数的问题
由于一开始官方介绍 Volley 适合轻量高并发的网络请求场景, 并不推荐用于上传下载, 因此以前只是粗略了解下就浅尝辄止, 并没有在项目中正式使用. 直到最近用到Volley. 于是碰到了一个问题.使用 JsonObjectRequest 发POST请求时, Volley官方说在getParams(xxx) 方法中传递POST参数是无效的, 需要在构造方法中通过 JsonObje原创 2016-06-07 16:21:08 · 13957 阅读 · 1 评论 -
[Gradle] Android Studio批量打包完全自定义APK包名
Gradle 本身是基于 Groovy 语法, 支持批量打包, 非常方便, 大家都知道的. 但在批量打包时, 肯定有个包名重命名的需求, 比如当前项目的 versionName 是 1.2.0, 用户在设备安装APK后所看到的版本号就是 v1.2.0. 当然, APK 应用还有个名称, 比如叫 AppName (当然, 这个名字随意啦, 一般都是英文单词组成), 然后有 3 个渠道, 比如是原创 2016-07-31 22:44:32 · 5413 阅读 · 1 评论 -
Android Studio升级到最新v1.3版后配置GitHub提示Gradle版本不支持的问题
基于ADT(基于Eclipse)开发Android的IDE已经被谷歌官方放弃, 首页推荐使用Android Studio. 于是使用AS的人也开始多起来了. 从0.8到现在, AS更新很频繁, 最近更新了1.3版本后, 计划将部分项目连接到Github上面管理. 在setting配置地址和登录信息, 测试连接时成功了. 然后检出Git项目到本地时却提示 the project is using原创 2015-08-04 23:10:38 · 2208 阅读 · 0 评论 -
Android性能优化 - 避免内存泄露
以前在网上也看过类似的译文,但也忘得差不多了. 直至最近在官网再次看到原文, 虽是09年的文章, 略显久远, 但再看一次还是觉得总结很好. 于是决定翻译下来, 顺便巩固自己的相关知识.原文链接安卓应用在大多数机型( 针对以前的比较旧的机型, 现在的手机配置越来越高, 可分配的运行内存也相应会比以前提高) 会得到16MB的应用内存. 即使你不打算真的使用这全部的内存, 你也应翻译 2015-06-22 22:41:11 · 825 阅读 · 0 评论 -
Android性能优化之关于缓存的构思
为了提升用户体验, 对应用显示的数据进行缓存是非常好的方案.用过ListView,GridView,ViewPager等这些组件的童鞋都知道 , 应用都有预加载的行为, 比如当前看的是ViewPager第一页数据, 第二页甚至第三页还没显示出来, 但数据已经准备就绪, 用户只要一滑动到下一页, 数据马上就显示, 而不是等到滑动第二页才去加载(当然有时候为了优化,也可能这么做吧,具体情况具体分析.)原创 2015-05-18 23:08:25 · 1777 阅读 · 0 评论 -
Android自定义View之快速实现下拉刷新, 点击加载更多ListView
介绍ListView是最常用UI组件之一. 由于手机的屏幕大小很有限, 如何在如此有限的空间简化交互操作, 将省下的空间用于显示更多的数据就显得相当有意义. 比如"刷新数据" 和 "加载下一页数据"等功能, 原来可能在视图的菜单栏上设计了固定的按钮, 但这些按钮无疑使界面看起来稍微"复杂"了一些. 于是大牛们将这种交互简化成列表下拉刷新, 上拉加载更多, 滑动到底部点击加载更多, 滑动到底部自原创 2015-06-12 16:26:20 · 2140 阅读 · 2 评论 -
Android本地化存储Cookie(针对HttpClient)
因为最近有人问我怎么保存HttpClient的Cookie, 所以这里写下, 顺便记录总结吧. 当然, 有Android网络编程经历的童鞋一看就懂喇~ 就不多说了, 直接上代码:/** * 本地存储Cookie * @param response */ private void saveCookies(HttpResponse response原创 2015-07-08 17:54:45 · 3491 阅读 · 0 评论 -
Android实现夜间模式小结
随着APP实现的功能越来越丰富, 看小说看视频上网等等, 现在不少人花在手机平板等移动终端上的时间越来越长了. 但手机和平板的屏幕并不像Kindle那类电纸书的水墨屏那么耐看, 由于自发光的屏幕特性, 我们长期盯着屏幕看容易眼睛酸痛疲倦, 因此各种护目模式, 夜间模式在移动APP上得到广泛应用, 这的确也是一个贴心的小功能. 所以这次我们探讨下几种实现方式, 一起学习总结下:1, 利用原创 2015-07-15 14:22:52 · 3571 阅读 · 2 评论 -
ViewDragHelper实践之仿Android官方侧滑菜单NavigationDrawer效果
相信经常使用移动应用的用户都很熟悉侧滑菜单栏, 下拉, 下弹, 上弹等应用场景, 几乎主流的移动应用无论IOS 还是Android都能看到. 2.3以前的时候, 很多第三方比如SlidingMenu, MenuDrawer, ActionbarSherlock等等都很大程度的丰富和深化了这种交互理念.能让小小的屏幕, 容纳更多的交互接口. 也是这种趋势, Android官方在v4终于推出了Draw原创 2015-05-09 00:55:47 · 2030 阅读 · 1 评论 -
[Android]仿京东手机端类别页
[Android]仿京东手机端类别页京东手机端的类别标签页, 是一个左侧滑动可选择类别, 右侧一个类别明细的列表联动页面. 当用户选择左侧选项, 可在右侧显示更多选项来选择. 实现方式也不少. 最常见的当然是左侧和右侧各一个Fragment, 左侧Fragment放置ListView, 右侧放显示类别明细的Fragment. 如果觉得页面包含的Fragment太多, 左侧直接给一个ListView就原创 2015-08-24 21:51:42 · 4265 阅读 · 2 评论 -
[Android]实现简单的任务管理器(非root)
由于不是系统级的应用, 也没有获得ROOT权限, 所以自己实现任务管理器其实意义并不是很大, 就像没有root的手机安装了LBE这类的手机助手, 虽然也带一键清理内存清理后台进程的功能, 但由于手机助手没有ROOT的最高权限, 因此面对开启了守护进程或者其他自启动的应用进程也是手无举措. 而随着谷歌的推动, 即将推送面世的新系统Android M, 也对权限的管理越来越严格, 这也看出一个趋势,原创 2015-07-30 01:23:15 · 5311 阅读 · 2 评论 -
关于Activity使用startActivityForResult()跳转后,onActivityResult()无法响应RESULT_OK的原因
最近碰到这个问题, 然后Google一番. 于是记录下来. 去翻Android Developers网站的Reference, 在Activity的介绍中有段文字如下:意思是当Activity的启动模式是singleTask时,这个Activity不会运行在该task任务栈中.并且会马上收到一个cancel result的信号.这就是原因了.比如Activity A原创 2015-03-26 11:57:31 · 3133 阅读 · 0 评论 -
android四大组件之广播接收器BroadcastReceiver
Android有一个非常重要的特性,就是广播.也可以将广播看做是通信机制. Android四大组件: Activity, service, broadcastReceiver 和contentProvider, 只有Activity和service有完整的生命周期, 其他 broadcastReceiver 和contentProvider 都没有. broadcastReceiver 本质上原创 2015-03-05 23:16:45 · 1057 阅读 · 0 评论 -
android四大组件之Activity - (2)onNewIntent()的作用
要说onNewIntent(), 就不得不提到Activity的四种启动模式.分别是:1, standard, 标准模式 (也是系统默认的模式) 每次都会新建Activity放置任务栈中.2, singleTop 模式这个模式能够确保每次使用的Activity都处于任务栈的栈顶.如果Activity已经处于栈顶则不再创建,否则会创建新的Activity实例并放置在栈顶.原创 2015-03-05 19:42:33 · 1710 阅读 · 0 评论 -
图片轮播_支持显示网络图片及下载图片至SD后再显示
现在的移动应用, 很常见的一个交互效果就是在首页顶部添加图片轮播的控件, 焦点图可以放入广告, 也可以放入文章的内容图片, 它们不断自动切换, 点击焦点图即跳至对应的界面. 交互效果很棒. 做图片轮播的效果, 方法并不少. 本文使用了常见的viewpager 去实现. 支持显示网络图片下载在缓存显示, 如果有SD卡则默认将图片下载至SD卡中再显示本地的图片.其实网上这类代码已经很多, 应该也原创 2014-08-22 16:17:02 · 1386 阅读 · 0 评论 -
Android时间转换_获取系统时间
其实大家都懂的,原创 2014-09-09 00:16:56 · 695 阅读 · 0 评论 -
Android TextView 属性详解
android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web /email/phone/map/all)android:autoText如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。android:bufferType指定getText()方式取得的文本类别。选项editab转载 2014-09-10 17:43:20 · 657 阅读 · 0 评论