Android
文章平均质量分 83
pobi
发粪涂墙
展开
-
SQLite表‘外观’类生成器
SqlGeneratorAPP比较简单或者APP数据库操作比较少, 简单的几张表, 少量的数据存储。 这个时候其实没有必要去使用第三方的ORM库需要去学习第三方ORM库, 增加学习成本, 也会一定程度上增加APP的复杂度如果使用或者选择不当的话, 可能影响APP整体的性能, 好多ORM库其实是用运行时注解和反射来实现的, 对性能会有一定的影响SqlGenerator致力于在不使用ORM库的情况原创 2016-09-06 08:56:59 · 863 阅读 · 0 评论 -
Property Animation - 概述和工作原理
概述 在Android中,属性动画系统是一个强健的框架,几乎允许你让一切东西动起来。你可以定义一个动画,随着时间的改变来改变任何一个对象的属性的值,不用去管它是否绘制在屏幕上。一个属性动画可以在一个指定的时间长度内改变一个属性的值。为了让一些东西动起来,你需要指定好对象的属性(例如一个对象在屏幕上的位置),你想让它运动多久和你想让它在什么值区间运动。 在翻译 2013-04-11 23:04:47 · 2403 阅读 · 0 评论 -
IntentService解析
IntentService使用一个工作队列来从Application的主线程中分担任务,这些任务往往做着比较耗时的工作。IntentService维护着一个工作线程消息处理对象(Handler),通过在工作线程中创建消息循环(Looper)和消息队列(MessageQueue)来以队列的方式处理任务,一次只能处理一个任务,上一个任务请求完成后才接着处理下一个任务请求。 Inte原创 2013-09-10 23:03:45 · 1571 阅读 · 0 评论 -
Activitys, Threads, & Memory Leaks
Activitys, Threads, & Memory Leaks在Android编程中,一个公认的难题是在Activity的生命周期如何协调长期运行的任务和避免有可能出现的内存泄漏问题。考虑下面一段代码,在Activity创建时启动了一个线程,在线程中无限循环。/** * Example illustrating how threads persist ac原创 2013-08-27 15:13:18 · 2039 阅读 · 0 评论 -
Service 隔离
最近开发了两个App,其中一个App为另一个App提供服务(Service),但要求不允许其他的App使用此服务,一开始的想法是能在API的设计上进行过滤,后来想想此方法不是很安全,被别人反编译后很危险!后来经过一番探索发现,可以用自定义permission来解决此问题。 首先得在AndroidManifest.xml中自定义一个permission,其中android:pro原创 2013-08-14 15:54:34 · 1601 阅读 · 0 评论 -
Android进阶练习 - 高效显示Bitmap(管理Bitmap内存)
管理Bitmap内存 除了在前面几篇文章中提到的缓存图片的步骤外,还有一些事情需要做来促进垃圾回收和位图的重用。Android目标版本决定了我们将使用什么策略。 先来看看Android不同版本对Bitmap管理的进化 在Android2.2或更低的版本中,当出现垃圾回收时,你的应用会暂停执行。这会导致延迟,降低程序性能。A翻译 2013-04-08 17:20:44 · 4401 阅读 · 1 评论 -
Android Application plugin
在网易云阅读App上看到了插件管理功能,刚好自己也需要以插件的模式来扩展已有的功能,于是研究了一下,下面是一张网易云阅读App提供的插件模式,只需下载相应的插件就扩展了相应的功能,非常方便。 在插件下载完成了之后还有一个安装过程,这一个安装过程误导了我很久,一开始以为Android SDK已提供了相应的插件功能,经过google一番发现压根就没有提供该功能。原创 2013-06-29 16:30:27 · 3904 阅读 · 0 评论 -
配置项发生改变时保持程序状态
在我们进行Android项目开发时,经常会遇到一个问题,如何保持程序的一些运行状态。比如当前的Activity正在下载一张图片,突然设备横竖屏切换(Activity会重新create),之前的下载线程可能并没有完成,这时如何来复用之前的下载线程呢,这是就需要把之前的下载线程保存起来 Android SDK对这种功能提供了支持,API 13之前可以通过getLastNonCo原创 2013-07-08 17:44:42 · 3020 阅读 · 3 评论 -
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 · 5168 阅读 · 0 评论 -
Navigation Drawer(导航抽屉)
创建一个导航抽屉导航抽屉是一个位于屏幕左侧边缘用来显示应用程序导航项的一个面板。导航抽屉在大部分时间是不显示的,但两种情况下会进行显示:一是发生从屏幕左侧边缘向右滑的手势,二是点击了工具栏中应用图标。导航抽屉在Support Library 中提供支持,在使用导航抽屉时,需要符合导航抽屉设计原则(Navigation Drawer),看看你是否有必要创建导航抽屉 。创建抽翻译 2013-06-02 22:21:06 · 13210 阅读 · 14 评论 -
Property Animation - 实解
属性动画实解Android动画系统为我们定义好了一些主要的Animator,Evaluator和Interpolator。在大部分的情况下我们只需要使用这些就足够了,大家可以在android.view.animation 包中进行了解使用ValueAnimator和ObjectAnimator来进行动画可以使用ValueAnimator类指定属性动画过程中要改变原创 2013-05-14 23:01:47 · 2755 阅读 · 0 评论 -
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 · 3627 阅读 · 0 评论 -
如何通过超链接打开Activity并传入参数
通常如果我们在程序中要打开一个url,一般是借助于浏览器来打开,但用户手机上会安装多个浏览器,Android做的比较智能,把选择权让给了用户,让用户选择用哪个浏览器来打开程序代码通常如下,指明了action、category和data uri Intent intent = new Intent(Intent.ACTION_VIEW, Uri.p原创 2013-05-10 16:09:06 · 16521 阅读 · 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 · 11573 阅读 · 2 评论 -
Android中HorizontalScrollView的使用
由于移动设备物理显示空间一般有限,不可能一次性的把所有要显示的内容都显示在屏幕上。所以各大平台一般会提供一些可滚动的视图来向用户展示数据。Android平台框架中为我们提供了诸如ListView、GirdView、ScrollView等滚动视图控件,这几个视图控件也是我们平常使用最多的。我下面介绍一下HorizontalScrollView的使用和需要注意的点 Horizont原创 2013-04-20 13:20:01 · 27512 阅读 · 10 评论 -
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 · 2183 阅读 · 0 评论 -
LoaderManager介绍
前一篇简要的介绍了Loader,这一篇主要介绍下LoaderManager。 简介简要的来说,每一个Activity或Fragment都会有一个依赖的LoaderManager来管理一个或多个Loader。每一个Activity和Fragment都会有一个LoaderManager来自动管理和控制Loaders的starting、stoping、retaining、restarti原创 2013-12-19 21:41:54 · 3074 阅读 · 0 评论 -
ListView分页显示
当ListView要显示的数据过多时,为了更快的响应用户,这个时候ListView进行分页显示再合适不过了。 ListView分页显示数据的原理其实很简单,当用户滑到ListView最后一项时,通知异步线程进行加载下一页的数据,下一页数据加载完成时,调用设置好的Adapter的notifyDataSetChange()方法,ListView显示下一页的数据。 现在有两个问题原创 2013-10-27 21:25:28 · 4657 阅读 · 0 评论 -
Android日期显示和选择库
日期显示和日期选择库,可以用来选择一段连续的和多个不连续的日期,具体的显示UI完全抽象出来供自定义实现,灵活性比较高(GITHUB地址)原创 2016-04-20 16:42:00 · 2119 阅读 · 0 评论 -
fragmentargs 源码解析
fragmentargs主要解决Fragment属性的保存(Fragment.setArguments(Bundle bundle))和自动赋值(Fragment.getArguments()),以在编译时自动生成源代码的方式来减少一些重复代码的编写原创 2016-05-13 15:22:25 · 822 阅读 · 0 评论 -
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 · 2841 阅读 · 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 · 1923 阅读 · 0 评论 -
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 · 1240 阅读 · 0 评论 -
Android Studio Gradle 多渠道打包
Android Studio Gradle 多渠道打包原创 2015-01-03 15:22:06 · 6788 阅读 · 17 评论 -
Android 快速索引(城市列表和联系人)
Android 快速索引(城市列表和联系人)原创 2014-12-25 20:16:10 · 5508 阅读 · 3 评论 -
Android WebView 输入框键盘不弹出
在Android中使用内嵌的WebView加载HTML网页时,如果html页面中存在输入框。那么在有些手机设备中,当输入框获取焦点时,系统输入法键盘去无法正确弹出,从而无法完成正常的输入要求在做APP时,自己也遇到了这个问题,以下是自己解决的方法,有可能不适合大家所遇到的情况,但值得借鉴~有些时候我们设计的html页面并不能够很好的适应WebView,尤其我们的html页面原创 2014-12-08 21:56:26 · 11444 阅读 · 6 评论 -
使用Android Studio时可能会有的几个困惑
使用Android Studio也有近半年的时间了,期间数次想弃之,真是得其门而不得入!好在现在使用还算顺利,基本的问题都能解决。下面是我学习使用过程中遇到的几个困惑。Beta版也好使! 有些同学可能发现Android Studio目前还是Beta版,还未发布正式版本,Bug可能会比较多,网上能找到的资料相对来说没那么多,就不想切换了,等出正式版再用,不当第一个吃原创 2014-10-28 23:48:18 · 3121 阅读 · 11 评论 -
让Android App启动更协调
让Android App启动更协调,更美观原创 2013-08-15 16:11:41 · 2413 阅读 · 0 评论 -
Android解惑 - 为什么要用Fragment.setArguments(Bundle bundle)来传递参数
为什么要用Fragment.setArguments(Bundle bundle)来传递参数原创 2014-04-19 23:05:55 · 73018 阅读 · 17 评论 -
SQLite数据库并发访问
译自:https://github.com/dmytrodanylyk/dmytrodanylyk/blob/gh-pages/articles/Concurrent%20Database%20Access.md我曾经写过一篇很简短的文章,阐述了如何线程安全的来访问android sqlite数据库。样例程序可以在这里获取到。////////////////////////翻译 2014-03-28 16:38:26 · 4326 阅读 · 1 评论 -
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 · 2055 阅读 · 0 评论 -
使用Loaders
接下来会介绍一下如何来使用Loader异步加载数据,看看手机配置项发生改变时(eg:横竖屏切换)Activity是否为我们保存了Loader的状态,从而不用重新去加载数据。下面是一个加载相册中所有相片的例子,为了兼容所有的Android版本,使用了兼容包中的FragmentActivity和LoaderCallbacks两个类。其实使用Loaders非常简单,LoaderManager原创 2014-03-03 17:47:43 · 1823 阅读 · 0 评论 -
Android中如何实现OEM
前几天接到个需求,如何根据一个基础的Android App来生成100个或更多的App,要求App icon和App name都不一样(可能还会有配置文件)。这个有点类似于为App贴上自己的标签,但具体功能由别人提供,有点类似于OEM,下面来分析下如何实现 仔细想一下其实这个就是apk的编译和反编译的应用,再加上个签名(不签名的话无法使用)。只不过是用代码实现罢了原创 2013-04-16 23:49:46 · 6301 阅读 · 0 评论 -
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 · 3440 阅读 · 0 评论 -
Android短信收发
短信发送,有些机型可以在后台向指定的手机发送短信而不会有提示,有些机型可能会提醒用户让用户决定到底发不发送,我想这应该是出于安全的考虑实现短信的发送,我们可以通过注册receiver得知短信发送是否成功,对方是否接受到了 /** * 发送短信 * @param friend_num * @param smsMsg */ private void sendSMS(S原创 2013-02-21 10:15:28 · 1596 阅读 · 0 评论 -
根据资源名来获得资源id
在做开发的时需要一次性的加载同类型的图片,如果每次都去BitmapFactory.decodeResource(res, id) 有点繁琐可以通过资源名来获得资源id下面以加载52张扑克牌为例: /** * 加载52张牌 */ public void loadAllCard() { String[] type = { "clubs", "diamonds",原创 2012-03-05 23:53:28 · 1325 阅读 · 0 评论 -
Log的管理
如果没有对Log进行管理,就有可能被别人读取日志信息,而产生安全问题开发时可以使用下面的工具类Logger.i("","");/** * 日志管理 * @author Tibib * */public class Logger { public static final int LEVEL = 0; //应原创 2012-12-25 00:03:32 · 922 阅读 · 0 评论 -
Android小功能集
收集的一些Android小功能集避免我们的应用出现在最近任务栏(注:不是任务管理器)中出现android:excludeFromRecents="true"获取手机上的安装的所有Home类别应用// private List getHomes() { // List packages = new ArrayList(); // P原创 2013-01-20 21:15:38 · 1772 阅读 · 0 评论 -
Content Providers--怎样去访问一个基本的content provider
一个content provider 管理着怎样去访问存储在应用仓库中的数据。一个content provider是一个应用程序的一部分,它常常用来使应用程序的界面工作在它提供的数据基础上。然而,content providers 主要是用来给其它的应用程序使用的,使用一个provider客户端对象来访问使用它。总之,providers和provider 客户端对象为应用中的数据提供一个一致的原创 2013-01-29 17:20:12 · 998 阅读 · 0 评论 -
Android网络开启、关闭整理
近段时间由于要对手机网络状况进行判断、开启和关闭,从网上找了些资料,现整理如下包含了对WiFi、GPRS、飞行模式的开启、关闭以及一些状态的检测,在小米和三星平板上测试均通过package com.my.device_admin.business;import java.lang.reflect.Method;import android.content.Context原创 2013-01-05 17:25:59 · 11568 阅读 · 7 评论