心得笔记
文章平均质量分 68
追梦的奈特
爱生活,爱安卓
展开
-
AsyncHttpClient 开源框架學習研究
转载请注明出处:http://blog.csdn.net/krislight OverView:AsyncHttpClient庫 基於Apache的HttpClient框架,是一個異步的httpClient, 所有的http請求都在子線程中,但是callback執行的線程和創建這個callback的線程是同一個(也即主線程創建的callback那麼執行的時候也是在主線程中)基本用法原创 2014-02-23 15:04:37 · 4621 阅读 · 2 评论 -
如何测试 Android 中的定时事件
测试定时事件不太容易,比如要测试 AlarmManager 中定时明天4点的一个事件,你总不能等到明天4点再看看吧。Roman Nurik 提供了两个用来测试定时事件的命令:adb shell dumpsys alarm 和 adb shell dumpsys activity intents 通过这两个命令可以查看那些操作被放到定时队列中了。例如,要查看你的应用都定时执行那些任务转载 2014-03-02 15:29:03 · 1096 阅读 · 0 评论 -
ViewHolder VS HolderView ?
ViewHolder 模式在 Android 中大家应该都不陌生了,特别是在 ListView 中通过 ViewHolder 来减少 findViewById 的调用和 类型的转换。而 HolderView 模式是把 ViewHolder 给业务逻辑化,不再仅仅只是保存一些 View, 还要带有业务逻辑。 HolderView 的一个示例如下:123转载 2014-03-02 16:12:09 · 1077 阅读 · 0 评论 -
开发资源收藏
本文由 ImportNew - 汤米猫 翻译自 cogitolearning。如需转载本文,请先参见文章末尾处的转载要求。ImportNew注:如果你也对Android技术翻译分享感兴趣,欢迎加入我们的 Android开发 小组。参与方式请查看小组简介。暑假就要结束了(译注:本文发布在13年8月份),或许你已决定成为一个安卓程序员。假期中,我收集了42个帮助大家学习安卓的链接。有的转载 2014-03-08 16:18:54 · 1082 阅读 · 0 评论 -
MotionEvent中getX()和getRawX()的区别
首先我们通过一个button进行一下测试,可以知道: Java代码 public class Res extends Activity implements View.OnTouchListener { Button btn = null; int x = 0; int y = 0; int rawx转载 2014-03-15 17:36:25 · 1082 阅读 · 0 评论 -
PendingIntent的Flags
PendingIntent是一个Intent的描述、包装,给予了这个PendingIntent 的组件在指定的事件发生或指定的时间到达时启动Activty、Service或者Broadcast。根据是要启动Activity、Service还是Broadcast分别对应一个获取PendingIntent的方法public static PendingIntent getActivit转载 2014-03-29 13:47:15 · 1216 阅读 · 0 评论 -
设计模式学习--------8.抽象工厂模式学习
场景: 当需要构建一系列原创 2014-05-01 18:55:12 · 757 阅读 · 0 评论 -
设计模式学习--------5.适配器模式学习
场景: 系统升级后,定义了一套新的接口和逻辑,dans原创 2014-04-19 17:55:50 · 785 阅读 · 0 评论 -
设计模式学习--------9.生成器模式学习
场景: 考虑导出数据原创 2014-05-01 23:49:15 · 770 阅读 · 0 评论 -
性能优化实例
一、性能瓶颈点整个页面主要由6个Page的ViewPager,每个Page为一个GridView,GridView一屏大概显示4*4的item信息(本文最后有附图)。由于网络数据获取较多且随时需要保持页面内app下载进度及状态,所以出现以下性能问题a. ViewPager左右滑动明显卡顿b. GridView上下滚动明显卡顿c. 其他Activity返回ViewPager A转载 2014-03-02 15:23:55 · 1112 阅读 · 0 评论 -
性能优化之数据库优化
1、索引简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率。(1). 优点大大加快了数据库检索的速度,包括对单表查询、连表查询、分组查询、排序查询。经常是一到两个数量级的性能提升,且随着数据数量级增长。 (2). 缺点索引的创建和维护存在消耗,索引会占用物理空间,且随着数据转载 2014-03-02 15:21:26 · 906 阅读 · 0 评论 -
備份Sqlite DB到XML文件:
项目中遇到备份与还原App数据的需求,需要把DB数据备份到一个XML文件中,然后保存到SD卡上,还原的时候直接从XML文件解析数据进行insert DB动作。现总结下实现方法,定义一个工具类 /** * from sqlite to xml * * @author Kris */public class DatabaseLog { // back up dir pr原创 2014-02-23 15:09:49 · 2208 阅读 · 0 评论 -
图片和文件传输压缩总结
转载请注明出处:http://blog.csdn.net/krislight/article/1.壓縮圖片工具类public class CompressImage { private Bitmap bm; private String filePath; public CompressImage(String filePath) {原创 2014-02-16 21:40:10 · 1852 阅读 · 0 评论 -
带圆角的EditText
转载请注明出处:http://blog.csdn.net/krislight/article1.定义一个Drawable<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle" android:padding="10dp"> <corners原创 2014-02-16 22:36:21 · 1479 阅读 · 0 评论 -
四种必须知道的Android屏幕自适应解决方案
一、细说layout_weight 目前最为推荐的Android多屏幕自适应解决方案。 该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布局中。其值越小,则对应的layout_width或layout_height的优先级就越高,一般横向布局中,决定的是layout_width的优先级;纵向布局中,决定的是layout_height的优先级。 传统的layo转载 2014-02-16 20:51:51 · 1122 阅读 · 0 评论 -
同一個Loader對象傳入不同參數時,从数据库中查询的結果每次都一樣
發現問題:LoaderManager().initLoader()方法調用時會根據第一個參數ID去判斷是否已經存在一個Loader加載器,如果存在則複用,不存在則建一個新的加載器。由於我第一次已經建立了一個Loader,所以第二次再調用这个方法的時候系统会认为已经存在这样一个加载器,不會重新傳入新參數构造新的Loader而是直接用之前的Loader對象去加載,結果也就和第一次的结果原创 2014-02-16 21:08:51 · 1185 阅读 · 0 评论 -
SharedPreference.Editor的apply跟commit方法的異同
相同点:1.二者都可提交preference的修改数据2.二者都是原子操作区别:1.apply没有返回值而commit返回boolean表明修改是否提交成功2.apply是将修改数据原子提交到内存,而后异步真正提交到硬件磁盘;而commit是同步的提交到硬件磁盘,因此,在多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后在操作,从而降低了效率。而ap转载 2014-02-16 21:28:13 · 1350 阅读 · 0 评论 -
性能优化之布局优化
1、抽象布局标签 (1) 标签include标签常用于将布局中的公共部分提取出来供其他layout共用,以实现布局模块化,这在布局编写方便提供了大大的便利。下面以在一个布局main.xml中用include引入另一个布局foot.xml为例。main.mxl代码如下:Java1234567891011121314xml versi转载 2014-03-01 14:20:19 · 968 阅读 · 0 评论 -
性能优化之Java(Android)代码优化
1、降低执行时间这部分包括:缓存、数据存储优化、算法优化、JNI、逻辑优化、需求优化几种优化方式。(1). 缓存缓存主要包括对象缓存、IO缓存、网络缓存、DB缓存,对象缓存能减少内存的分配,IO缓存减少磁盘的读写次数,网络缓存减少网络传输,DB缓存较少Database的访问次数。在内存、文件、数据库、网络的读写速度中,内存都是最优的,且速度数量级差别,所以尽量将需要频繁访问或访问一转载 2014-03-02 15:19:27 · 1227 阅读 · 0 评论 -
读取手机联络人实例
项目中需要做一个关于联络人的模块,先搭建了一个demo.顺便总结查询手机联络人的名字和号码的知识例子很简单,直接贴代码: package com.kris.contacts;import java.util.ArrayList;import android.app.Activity;import android.database.Cursor;import android.原创 2014-03-21 20:59:04 · 1673 阅读 · 2 评论 -
设计模式学习--------6.单例模式学习
单例非常简单,只说下一些值得注意的地方。原创 2014-04-19 18:24:50 · 755 阅读 · 0 评论 -
修改EditText的光标位置
Android 的 EditText 控件默认获取焦点的时候, 插入光标是在第一个位置的,如果EditText中设置了文本, 这个时候光标是在文本的最前面, 而不是文本的最后. 为了方便用户使用, 需要把光标移动到文本最后, 但是EditText 没有提供 setCursor 函数. 经查看其文档 发现 setSelection 函数可以完成该功能. 如下: EditText et =转载 2014-05-05 15:18:34 · 995 阅读 · 0 评论 -
事件传递机制总结
事件系统组成元素:1. 每一个事件被包装为一个MotionEvent2. 描述一个事件的位置(location) --ACTION_DOWN --ACTION_UP --ACTION_MOVE --ACTION_POINTER_DOWN --ACTION_POINTER_UP --ACTION_CANCEL3.事件的元数原创 2014-05-17 09:20:43 · 1275 阅读 · 0 评论 -
显示 SQLite 日志
通过在 Logcat 查看 SQL 执行语句可以帮助你调试 SQLite 问题, 使用 ADB SHELL 执行如下命令即可在 Logcat 输出 SQL 执行日志:adb shell setprop log.tag.SQLiteLog Vadb shell setprop log.tag.SQLiteStatements Vadb shell stopadb shell转载 2014-05-10 16:54:50 · 6267 阅读 · 0 评论 -
Android 性能分析案例
Android 系统的一个工程师(Romain Guy)针对Falcon Pro 应用,撰写了一个Android性能分析的文章。该文章介绍了如何分析一个应用哪里出现了性能瓶颈,导致该应用使用起来不流畅。找到原因、并修复问题。即使没有应用源码也能分析出问题大概根源。需要的工具工具很简单,只需要Android 4.2 SDK即可聊聊性能Android 4.1 的Proje转载 2014-05-10 21:07:17 · 1674 阅读 · 0 评论 -
ListView中getChildAt(index)的使用注意事项
1.原理 在很多时候ListView列表数据不需要全部刷新,只需刷新有数据变化的那一条,这时可以用getChildAt(index)获取某个指定position的view,并对该view进行刷新。 注意:在ListView中,使用getChildAt(index)的取值,只能是当前可见区域(列表可滚动)的子项! 即取值范围在 >= ListView.getFirstVisibl转载 2014-05-17 20:45:29 · 933 阅读 · 0 评论 -
android 布局之滑动探究 scrollTo 和 scrollBy 方法使用说明
在Android View视图是没有边界的,Canvas是没有边界的,只不过我们通过绘制特定的View时对 Canvas对象进行了一定的操作,例如 : translate(平移)、clipRect(剪切)等,以便达到我们的对该Canvas对象绘制的要求 ,我们可以将这种无边界的视图称为“视图坐标”-----它不受物理屏幕限制。通常我们所理解的一个Layout布局文件只是该视图的显示区域,超过了这个转载 2014-05-18 14:26:29 · 1444 阅读 · 0 评论 -
设计模式学习--------12.代理模式学习
场景: 福尔摩斯一直想送礼物给花生,但是羞于直接赠送,于是想到让房东太太去帮忙送礼物.编程如何实现呢?定义: 为其他对象提供一种代理以控制对这个对象的访问。角色:Proxy:代理对象.有下列功能:实现与具体的目标对象一样的接口,这样就可以使用代理来代替具体的目标对象。持有一个具体目标对象的引用,可以在需要时调用具体的目标对象。可以控制对目标对象的访原创 2014-05-18 13:26:02 · 1340 阅读 · 0 评论 -
设计模式学习--------3.简单工厂模式学习
场景:需要将接口与实现分离,客户端不需要zhid原创 2014-04-12 13:58:23 · 933 阅读 · 0 评论 -
DragSortListView学习总结
drag-sort-listview是一个支持拖拽排序和左右滑动删除功能的自定义ListView,重写了 TouchInterceptor 类来提供更加优美的拖拽动画效果。包含如下特性完美的拖拽支持 (应该没有视觉问题)在拖动的时候提供更平滑的滚动列表滚动支持每个ListItem高度的多样性Public startDrag() and stopDrag() methods.有公开的原创 2014-05-17 20:44:32 · 2172 阅读 · 2 评论 -
注意android裁图的Intent action
现在很多开发者在裁图的时候还是使用com.android.camera.action.CROP 来调用 startActivity()。 这不是个好主意。任何不是依android开头的Action 名称都不是标准的。依 com.android 开头的只是Android 内部应用之间的私有Action。 比如这个裁图的是Android系统默认相机提供的功能,很多第三方Rom会替换系统的某一个转载 2014-05-10 20:46:03 · 1117 阅读 · 0 评论 -
添加Fragment注意事项
配置(Configuration )改变是Android应用生命周期的一部分,如果发生了该事件(屏幕从横屏换行为竖屏),就会导致Activity被销毁然后重新创建。就算您在配置文件中设定Activity为竖屏显示的 也无法避免,应为Android应用配置改变的情况有很多种。如果发生了这种情况,Fragment也会被销毁然后重新创建。如果您是在运行时(在Java代码中添加Fragment到A转载 2014-05-10 20:26:13 · 970 阅读 · 0 评论 -
算法学习---基本数据类型的数组二分查找实现
public class OrderArray { // array private long[] a; // size private int size; public OrderArray(int max) { a = new long[max]; size = 0; } public int getSize() { return size; } publi原创 2014-04-19 18:33:57 · 1000 阅读 · 0 评论 -
设计模式学习--------4.外观模式学习
场景: 当需要yi访问某一个原创 2014-04-12 16:44:47 · 1022 阅读 · 0 评论 -
算法学习---对象类型的数组二分查找实现
public class Person { private String firstName; private String lastName; private int age; public Person(String firstName, String lastName, int age) { super(); this.firstName = firstName; thi原创 2014-04-19 18:36:54 · 855 阅读 · 0 评论 -
监听APP升级广播处理
当旧版本的用户升级新版本的时候需要重新设定一些值处理,这时候需要监听升级版本的广播 当设备是在API12以上的版本可以直接使用MY_PACKAGE_REPLACED原创 2014-05-06 09:26:50 · 4681 阅读 · 2 评论 -
UI设计师的 Android 备忘录
Images and themesNine-patchColorsHolo themesNaming conventionsNaming conventions for drawablesNaming conventions for icon assetsNaming conventions for selector statesOrganizing drawables转载 2014-05-10 20:31:53 · 1266 阅读 · 0 评论 -
Android如何正确的保存文件
在Android 官方开发文档中有一篇文档来介绍如何保存应用的数据,但笔者用过很多程序(从知名的到不知名的)处理的都不是很完美,或者 没有按照Android 开发团队建议的方式去保存他们应用的数据。当一些试用过的软件卸载后,在SDCard中还保留了这些软件的文件目录,时间一长就有很多目录需要手工去清理,并且很难确认那些目录是仍然在使用的 那些目录已经没用了,给用户带来困扰。这里我们来讨论下该如何正转载 2014-05-10 20:59:33 · 1053 阅读 · 0 评论 -
Android开源项目发现---TextView,Button篇(持续更新)
android-flowtextview文字自动环绕其他View的Layout项目地址:https://code.google.com/p/android-flowtextview/效果图:http://i949.photobucket.com/albums/ad332/vostroman1500/1.pngAndroid Form EditText验证输入合法性的编辑框,原创 2014-05-10 21:33:09 · 2569 阅读 · 0 评论 -
在 ActionBar 添加刷新按钮
在以前版本的 Gmail 应用中,ActionBar 上有个刷新菜单,点击一下刷新菜单变成一个转圈的刷新标示动画图片。 之前实现该功能的时候都是使用一个类库 RefreshActionItem 来实现的。RefreshActionItem 还支持一些扩展功能,功能比较丰富。今天无意中又发现一个简单的实现方式。如果您只需要一个刷新的效果,则可以考虑这种方法, 实现方式如下:1.转载 2014-05-10 17:22:10 · 1387 阅读 · 0 评论