- 博客(107)
- 资源 (8)
- 收藏
- 关注
原创 SQLite表‘外观’类生成器
SqlGeneratorAPP比较简单或者APP数据库操作比较少, 简单的几张表, 少量的数据存储。 这个时候其实没有必要去使用第三方的ORM库需要去学习第三方ORM库, 增加学习成本, 也会一定程度上增加APP的复杂度如果使用或者选择不当的话, 可能影响APP整体的性能, 好多ORM库其实是用运行时注解和反射来实现的, 对性能会有一定的影响SqlGenerator致力于在不使用ORM库的情况
2016-09-06 08:56:59
858
原创 fragmentargs 源码解析
fragmentargs主要解决Fragment属性的保存(Fragment.setArguments(Bundle bundle))和自动赋值(Fragment.getArguments()),以在编译时自动生成源代码的方式来减少一些重复代码的编写
2016-05-13 15:22:25
817
原创 Android日期显示和选择库
日期显示和日期选择库,可以用来选择一段连续的和多个不连续的日期,具体的显示UI完全抽象出来供自定义实现,灵活性比较高(GITHUB地址)
2016-04-20 16:42:00
2116
原创 Android library上传到jcenter
Android library上传到jcenter如何把我们开发好的Android library上传到中央仓库,供其他开发者方便使用,一行代码来进行依赖,而不必下载源码。compile 'com.tubb.picker.library:picker:3.0'如何才能做到这样呢,其实可以把我们的类库发布到中央仓库(下载中心)以供别人下使用。当然直接下载类库的jar或者aar也可以,但如果能提供像ma
2015-10-17 22:26:06
2839
1
转载 Android - Designtime Layout Attributes & Tools Attributes
Designtime Layout AttributesAs of Android Studio 0.2.11, the layout rendering (used in both the layout editor as well as the XML editor layout preview window), supports designtime layout
2015-06-29 14:41:07
1914
转载 A Look At Android Support Annotations
The Android tools team introduced some cool annotations you can use in your projects in version 19.1 of the Android support library. The support library itself uses these annotations and dogfooding is
2015-02-10 22:30:51
1232
原创 Android WebView 输入框键盘不弹出
在Android中使用内嵌的WebView加载HTML网页时,如果html页面中存在输入框。那么在有些手机设备中,当输入框获取焦点时,系统输入法键盘去无法正确弹出,从而无法完成正常的输入要求在做APP时,自己也遇到了这个问题,以下是自己解决的方法,有可能不适合大家所遇到的情况,但值得借鉴~有些时候我们设计的html页面并不能够很好的适应WebView,尤其我们的html页面
2014-12-08 21:56:26
11422
6
原创 使用Android Studio时可能会有的几个困惑
使用Android Studio也有近半年的时间了,期间数次想弃之,真是得其门而不得入!好在现在使用还算顺利,基本的问题都能解决。下面是我学习使用过程中遇到的几个困惑。Beta版也好使! 有些同学可能发现Android Studio目前还是Beta版,还未发布正式版本,Bug可能会比较多,网上能找到的资料相对来说没那么多,就不想切换了,等出正式版再用,不当第一个吃
2014-10-28 23:48:18
3115
11
原创 Android解惑 - 为什么要用Fragment.setArguments(Bundle bundle)来传递参数
为什么要用Fragment.setArguments(Bundle bundle)来传递参数
2014-04-19 23:05:55
72963
17
翻译 SQLite数据库并发访问
译自:https://github.com/dmytrodanylyk/dmytrodanylyk/blob/gh-pages/articles/Concurrent%20Database%20Access.md我曾经写过一篇很简短的文章,阐述了如何线程安全的来访问android sqlite数据库。样例程序可以在这里获取到。////////////////////////
2014-03-28 16:38:26
4322
1
原创 使用Loaders
接下来会介绍一下如何来使用Loader异步加载数据,看看手机配置项发生改变时(eg:横竖屏切换)Activity是否为我们保存了Loader的状态,从而不用重新去加载数据。下面是一个加载相册中所有相片的例子,为了兼容所有的Android版本,使用了兼容包中的FragmentActivity和LoaderCallbacks两个类。其实使用Loaders非常简单,LoaderManager
2014-03-03 17:47:43
1819
原创 LoaderManager介绍
前一篇简要的介绍了Loader,这一篇主要介绍下LoaderManager。 简介简要的来说,每一个Activity或Fragment都会有一个依赖的LoaderManager来管理一个或多个Loader。每一个Activity和Fragment都会有一个LoaderManager来自动管理和控制Loaders的starting、stoping、retaining、restarti
2013-12-19 21:41:54
3061
原创 Android Loaders简介
简介Android在3.0之后中引入了Loaders,使用Loader可以很方便的来在Activity中加载数据,并且Activity能够管理Loader的生命周期,使之与Activity的生命周期同步。并且当手机配置项发生改变Activity重新创建时Loader能够retain而不用重新创建。Android在3.0引入Loader来代替之前版本中managedQuery(Uri, St
2013-12-17 21:33:43
2179
原创 ListView分页显示
当ListView要显示的数据过多时,为了更快的响应用户,这个时候ListView进行分页显示再合适不过了。 ListView分页显示数据的原理其实很简单,当用户滑到ListView最后一项时,通知异步线程进行加载下一页的数据,下一页数据加载完成时,调用设置好的Adapter的notifyDataSetChange()方法,ListView显示下一页的数据。 现在有两个问题
2013-10-27 21:25:28
4646
原创 IntentService解析
IntentService使用一个工作队列来从Application的主线程中分担任务,这些任务往往做着比较耗时的工作。IntentService维护着一个工作线程消息处理对象(Handler),通过在工作线程中创建消息循环(Looper)和消息队列(MessageQueue)来以队列的方式处理任务,一次只能处理一个任务,上一个任务请求完成后才接着处理下一个任务请求。 Inte
2013-09-10 23:03:45
1556
原创 Activitys, Threads, & Memory Leaks
Activitys, Threads, & Memory Leaks在Android编程中,一个公认的难题是在Activity的生命周期如何协调长期运行的任务和避免有可能出现的内存泄漏问题。考虑下面一段代码,在Activity创建时启动了一个线程,在线程中无限循环。/** * Example illustrating how threads persist ac
2013-08-27 15:13:18
2033
原创 Context泄漏:Handlers & Inner Classes
先思考下面一个代码片段publicclass SampleActivity extends Activity { private final Handler mLeakyHandler = new Handler() { @Override publicvoid handleMessage(Message msg) { // ... }
2013-08-26 16:33:07
2050
原创 Service 隔离
最近开发了两个App,其中一个App为另一个App提供服务(Service),但要求不允许其他的App使用此服务,一开始的想法是能在API的设计上进行过滤,后来想想此方法不是很安全,被别人反编译后很危险!后来经过一番探索发现,可以用自定义permission来解决此问题。 首先得在AndroidManifest.xml中自定义一个permission,其中android:pro
2013-08-14 15:54:34
1593
原创 配置项发生改变时保持程序状态
在我们进行Android项目开发时,经常会遇到一个问题,如何保持程序的一些运行状态。比如当前的Activity正在下载一张图片,突然设备横竖屏切换(Activity会重新create),之前的下载线程可能并没有完成,这时如何来复用之前的下载线程呢,这是就需要把之前的下载线程保存起来 Android SDK对这种功能提供了支持,API 13之前可以通过getLastNonCo
2013-07-08 17:44:42
3008
3
原创 Android Application plugin
在网易云阅读App上看到了插件管理功能,刚好自己也需要以插件的模式来扩展已有的功能,于是研究了一下,下面是一张网易云阅读App提供的插件模式,只需下载相应的插件就扩展了相应的功能,非常方便。 在插件下载完成了之后还有一个安装过程,这一个安装过程误导了我很久,一开始以为Android SDK已提供了相应的插件功能,经过google一番发现压根就没有提供该功能。
2013-06-29 16:30:27
3893
原创 Ant编译打包Android项目
Ant编译打包Android项目在Eclipse中对Android项目进行编译和打包如果项目比较大的话会比较慢,所以改为Ant工具来进行编译和打包Ant环境配置ant 官网可下载http://ant.apache.org/ant 环境配置:1、解压ant的包到本地目录2、在环境变量中设置ANT_HOME,值为你的安装目录3
2013-06-22 17:38:37
5159
翻译 Application对象中存储的数据一直存在?
译自:http://www.developerphil.com/dont-store-data-in-the-application-object/千万不要把数据存储在Application对象中may 5, 2013在我们的应用程序中有些数据需要在多处使用。有可能是一个会话令牌,花费很大代价才得来的结果,等等。而且我们总是想避免在两个Activity之间传
2013-06-08 13:58:11
4539
1
翻译 内容提供者的基本知识
译自:http://www.grokkingandroid.com/android-tutorial-content-provider-basics/内容提供者的基本知识这是第一篇关于Android内容提供者教程系列文章,这个教程系列主要包含三篇文章。在这篇文章中将为你阐述内容提供者一些最基本的概念,这是你使用或者编写一个内容提供者所必须的知识储备什么是内容
2013-06-06 11:08:08
3386
翻译 检查网络连接状况
译自:http://www.grokkingandroid.com/android-checking-connectivity/不管在什么时候,当你的应用需要去访问网络时,你事先都应该知道设备当前已经连上了网络。为了更好的获取设备的网络连接状态,Android提供了两个class来做这件事,分别是ConnectivityManager和NetworkInfo。一般情况下
2013-06-04 22:17:16
2495
翻译 在运行时启用和禁用广播接收者
译自:http://www.grokkingandroid.com/enabling-and-disabling-broadcastreceivers/在运行时启用和禁用广播接收者BroadcastReceivers能让我们很好的知道一些系统当前发生的事件。但是有的时候我们只需要得知某个事件发生过就行了,或者在短期内期望知道某个事件是否发生动态注
2013-06-03 22:33:05
2784
翻译 Navigation Drawer(导航抽屉)
创建一个导航抽屉导航抽屉是一个位于屏幕左侧边缘用来显示应用程序导航项的一个面板。导航抽屉在大部分时间是不显示的,但两种情况下会进行显示:一是发生从屏幕左侧边缘向右滑的手势,二是点击了工具栏中应用图标。导航抽屉在Support Library 中提供支持,在使用导航抽屉时,需要符合导航抽屉设计原则(Navigation Drawer),看看你是否有必要创建导航抽屉 。创建抽
2013-06-02 22:21:06
13113
14
原创 Android进行设备管理(针对企业开发)
设备管理Android从2.2版本开始,提供了一套设备管理API来进行Android手机设备的管理工作,其中包含设备锁屏、禁用启用摄像头(4.0开始提供)、擦除用户数据(也可擦除sdcard中的数据,不过要到2.3)等一系列的设备管理策略,具体可参见DevicePolicyManager类中的定义(http://developer.android.com/reference/android/a
2013-05-23 19:53:09
3599
原创 Property Animation - 实解
属性动画实解Android动画系统为我们定义好了一些主要的Animator,Evaluator和Interpolator。在大部分的情况下我们只需要使用这些就足够了,大家可以在android.view.animation 包中进行了解使用ValueAnimator和ObjectAnimator来进行动画可以使用ValueAnimator类指定属性动画过程中要改变
2013-05-14 23:01:47
2740
原创 如何通过超链接打开Activity并传入参数
通常如果我们在程序中要打开一个url,一般是借助于浏览器来打开,但用户手机上会安装多个浏览器,Android做的比较智能,把选择权让给了用户,让用户选择用哪个浏览器来打开程序代码通常如下,指明了action、category和data uri Intent intent = new Intent(Intent.ACTION_VIEW, Uri.p
2013-05-10 16:09:06
16473
1
原创 Android在编译和反编译时出现error: Error: String types not allowed错误的解决办法
最近在编译和反编译apk包时出现了如标题所示的错误,经过google在stackoverflow http://stackoverflow.com/questions/7899767/admob-error-in-eclipse-for-androidconfigchanges上发现比较好的解决办法,可惜依然没有解决我的问题,按照上面的步骤,可能是由于以下几种情况导致 1、在
2013-05-02 16:38:45
11560
2
原创 Android中Styles、Themes、attrs介绍
Styles和Themes 在Android中,style被用来指定窗体或视图的样式,比如视图的宽高、补白(padding)、背景,字体颜色等。style不需我们在代码中进行设置,可以在xml文件中按照DTD格式进行配置。 Android中的style其实跟css的思想一样,允许我们把功能实现和外观设计分离开,View配置也提供了html中如id、name属
2013-04-22 17:19:48
3435
原创 Android中HorizontalScrollView的使用
由于移动设备物理显示空间一般有限,不可能一次性的把所有要显示的内容都显示在屏幕上。所以各大平台一般会提供一些可滚动的视图来向用户展示数据。Android平台框架中为我们提供了诸如ListView、GirdView、ScrollView等滚动视图控件,这几个视图控件也是我们平常使用最多的。我下面介绍一下HorizontalScrollView的使用和需要注意的点 Horizont
2013-04-20 13:20:01
27487
10
原创 Android中如何实现OEM
前几天接到个需求,如何根据一个基础的Android App来生成100个或更多的App,要求App icon和App name都不一样(可能还会有配置文件)。这个有点类似于为App贴上自己的标签,但具体功能由别人提供,有点类似于OEM,下面来分析下如何实现 仔细想一下其实这个就是apk的编译和反编译的应用,再加上个签名(不签名的话无法使用)。只不过是用代码实现罢了
2013-04-16 23:49:46
6277
翻译 Property Animation - 概述和工作原理
概述 在Android中,属性动画系统是一个强健的框架,几乎允许你让一切东西动起来。你可以定义一个动画,随着时间的改变来改变任何一个对象的属性的值,不用去管它是否绘制在屏幕上。一个属性动画可以在一个指定的时间长度内改变一个属性的值。为了让一些东西动起来,你需要指定好对象的属性(例如一个对象在屏幕上的位置),你想让它运动多久和你想让它在什么值区间运动。 在
2013-04-11 23:04:47
2398
翻译 Android进阶练习 - 高效显示Bitmap(管理Bitmap内存)
管理Bitmap内存 除了在前面几篇文章中提到的缓存图片的步骤外,还有一些事情需要做来促进垃圾回收和位图的重用。Android目标版本决定了我们将使用什么策略。 先来看看Android不同版本对Bitmap管理的进化 在Android2.2或更低的版本中,当出现垃圾回收时,你的应用会暂停执行。这会导致延迟,降低程序性能。A
2013-04-08 17:20:44
4382
1
翻译 Android进阶练习 - 高效显示Bitmap(缓存 Bitmaps)
缓存 Bitmaps 加载单独的一张图片用于显示是很简单的,但是如果一次性加载大量的图片时,事情就变得比较复杂了,在许多的情况下(像 ListView, GridView or ViewPager 之类的组件 ),在屏幕上显示的图片加上所有待显示的图片有可能马上就会在屏幕上无限制的进行滚动、切换。 像ListView, GridView 这类组件,它们
2013-04-07 17:25:19
4625
转载 8种排序
转载自:http://www.iteye.com/topic/11294548种排序之间的关系: 1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺
2013-04-07 10:21:46
1244
Android增量升级DEMO
2013-06-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人