Android那些事儿
文章平均质量分 75
zhiwei
追随卓越的脚本,迈向成功的殿堂!
展开
-
【翻译】 Android上实现文字围绕图片的布局
在这边文章中,我将会介绍如何去实现一个在Android系统中不常见的布局:文字围绕图片布局。 这个布局并不属于Android模式,但在处理相同的情景下,它是一样的实用。 在你正式使用它到实践项目前,你需对其进行一定的修改,毕竟它只是一个例子代码 以下是例子的布局: <ScrollView andro...2014-04-09 16:31:20 · 353 阅读 · 0 评论 -
搞定个性化输入提示--自定义AutoCompleteTextView
在设计app的输入界面时,假如假如智能提示,给用户带来的不只是方便,有时候还会是惊喜。通过实践研究,发现要实现android的个性化智能提示,实在非难事。 在Android中提供了两种智能输入框控件分是:MultiAutoCompleteTextView 和 AutoCompleteTextView 。 MultiAutoCompleteTextView 继承自AutoCompl...2012-09-04 14:44:42 · 171 阅读 · 0 评论 -
Android NDK开发之Jni调用Java对象
本地代码中使用Java对象通过使用合适的JNI函数,你可以创建Java对象,get、set 静态(static)和 实例(instance)的域,调用静态(static)和实例(instance)函数。JNI通过ID识别域和方法,一个域或方法的ID是任何处理域和方法的函数的必须参数。 下表列出了用以得到静态(static)和实例(instance)的域与方法的JNI函数。每个函数接受(作为...2013-03-16 00:11:31 · 210 阅读 · 0 评论 -
Android NDK开发之数组类型的操作
Jni 可以通过JNIEnv提供的方法,对传过来的Java数组进行相应的操作。它提供了两种函数:一种是操作Java的简单型数组的,另一种是操作对象类型数组的。 操作Java的简单型数组因为速度的原因,简单类型的Java数组,会作为指向本地类型的指针暴露给本地代码调用。因此,它们能作为常规的数组存取。这个指针是指向实际的Java数组或者Java数组的拷贝的指针。另外,数组的布置保证匹...2013-03-16 00:05:38 · 165 阅读 · 0 评论 -
Android NDK开发之Jni的数据类型
在前面的一篇博客《Android NDK开发简介》,我简单地说明了Android NDK开发的流程,以及其重要的一环:JNI层得开发。今天我再详细说明一下自己的学习经验。JNI是Java代码和C/C++代码通信的桥梁,其角色在某种意义上就是一个翻译员,从设计模式来看叫适配器。两者的沟通,首要的一定要对嘴型,对channel,沟通才能到位。计算机程序的基本组成,从狭义来讲,就是数据结构...2013-03-16 00:03:38 · 194 阅读 · 0 评论 -
基于简单工厂思想的SharePreference组件设计
在app的开发中,让用户设置自己的偏好,能给用户很友好的体验。在android系统中,google很贴心的提供了SharePreference组件,方便开发者存储app的数据。SharePreference提供的API,对简单的基本类型数据,以键值对(key-value)的方式进行的存储,使用极其简单。具体使用教程可以留意google的官方文档,这篇blog主要是介绍使用简单工厂模式开发基于Sha...原创 2012-03-23 11:10:23 · 126 阅读 · 0 评论 -
Android NDK开发简介
最近由于项目的需要,使用到了Android的NDK技术,对项目核心算法跨平台的移植。简答而言,就是使用C对原来的算法进行了改进,并集成到原来的app项目里。 从前的项目一直没有使用NDK进行开发的机会,因而一直仰慕那些技术大牛们关于NDK以及C/C++开发而写的文章,觉得很深奥,因而一直蠢蠢欲动。 其实NDK的开发并不复杂,就入门而言甚至可以说是easy job...2013-03-07 15:12:59 · 148 阅读 · 0 评论 -
关于PopupWindow的讨论
说到android的PopupWindow弹出窗,与对话框Dialog的区别就是,PopupWindow可以灵活定制弹出窗的界面以及弹出的位置! 对,控制弹出窗的弹出位置,这个是我在这里主要想讨论,分享的地方。 弹出前,先创建一个popupWindow的实例: private PopupWindow createPopupWindow(){ ...2012-02-25 17:16:42 · 109 阅读 · 0 评论 -
也简单说说Button背景的Selector配置
android的Button控件在应用里是十分常见的,功能也十分强大!但是想把它做得漂亮一点,交互效果好一点,就需要一点技巧----使用selector,进行便利的UX效果配置,selector使用的方法也很简单,网上一大堆教程,这里就不多说了。 这篇文章,主要是想分享一下自己遇到的问题:Button的背景使用selector配置问题。 以下是一段能正常使用的selector xm...2012-02-25 15:13:18 · 279 阅读 · 0 评论 -
关于系统软键盘弹出隐藏监听的讨论
最近项目有一个比较苦B的需求,需要在用户输入内容之前,弹出推赞窗口,以让用户可以从中选择一些系统推荐的内容。这个需求通过拦截焦点,可以搞掂软键盘和推荐弹窗的冲突。但是更苦B的是,输入控件设计在屏幕的最下面(Bottom),这个导致了一个十分怪异的现象: 默认下输入控件是没有焦点的,当用户点击时,系统软键盘会自动优先弹出。因为有推荐功能,我们要先让用户看到推荐弹出窗。那就要把原来弹出的软件人...原创 2012-06-18 18:22:51 · 119 阅读 · 0 评论 -
GridView的特殊派生应用
一、ScrollView + GridView 在ScrollView中放置GridView,无论GridView的高度是设置 wrap_content,还是 match_parent,最终渲染时GridView都会发生形变,原因是 ScrollView 不能正确算出 GridView 的实际显示高度。 解决方法有两个: 设定GridView 高度的dp值,同时也可...2013-11-06 17:07:43 · 106 阅读 · 0 评论 -
Android开发陷阱:利用PendingIntent传递唯一的Intent
PendingIntent 是对真实Intent的一种封装载体,可以用来在出发时,根据Intent 唤起目标组件,如 Activity,Service,BroadcastReceiver 等。 例如,一般的推广行为:接收后台推送消息,并展示在通知栏上,当用户点击消息通知后,唤起指定的目标:Intent intent = new Intent(action);Pendin...2013-11-07 11:36:03 · 705 阅读 · 0 评论 -
【翻译】Android多线程下安全访问数据库
为了记录如何线程安全地访问你的Android数据库实例,我写下了这篇小小札记。文章中引用的项目代码请点击这里 假设你已编写了自己的 SQLiteOpenHelper。public class DatabaseHelper extends SQLiteOpenHelper { ... } 现在你想在不同的线程中对数据库进行写数据操作:// T...2014-04-08 11:21:09 · 321 阅读 · 0 评论 -
Android Robotium小结
Robotium 是一款基于Android instrumentation framework 的自动化测试工具库,功能十分强悍,而且上手简单,只要求有Junit基础即可。 先关注instrumentation 提供的三个基类: 1. SingleLaunchActivityTestCase 单activity测试实例,只调用setup和tearDown方法 2. Activi...2014-03-17 15:41:56 · 129 阅读 · 0 评论 -
Monkeyrunner小结
Monkeyrunner----Android tools中的测试工具 ,主要通过脚本,实现模拟用户对appUI界面的操作,完成对app的黑盒测试。 利弊:1、可以完成一定复杂程度的测试用例,避免重复的人工工作量;2、结合heap、strict mode等工具,可以实现压力测试,性能优化等任务;3、某些API对机型兼容不好,例如4.0以下的机型,对viewnode serv...2014-03-15 23:49:20 · 120 阅读 · 0 评论 -
Android的NDK开发~Hellow world!
1、到Google官网下载adt-bundle----开发Android App的工具打包下载,下载后解压即可,免去开发环境的配置。 然后下载NDK,建议下载最新版本的,(ps:之前下载过r8a的,有bug,导致编译很慢,r8b就没有),配置ADT中的NDK Path。 ~~这样子就完成了NDK开发的全部准备了。 2、新建Android项目,step by st...原创 2013-02-05 13:52:07 · 129 阅读 · 0 评论 -
Android的ps命令介绍和技巧
在Linux下,ps是非常普通的命令:ps -aux 查看所有正在运行的进程ps | grep xxx 显示过滤指定名称的进程可是以上的命令在Android上,都不起作用! What?!!!Android不是基于Linux系统的吗?对,准确来说,Android是Google基于Linux的内核改造出来的。那也意味着,Android是一个Linux的修改版,这样子也解析了同样的命令...2013-07-05 18:37:30 · 553 阅读 · 0 评论 -
在Android上实现Java和Js交互
其实webview加载资源的速度并不慢,但是如果资源多了,当然就很慢。图片、 css 、 js 、 html 这些资源每个大概需要 10-200ms ,一般都是 30ms 就 ok 了。不过webview是必须等到全部资源都完成加载,才会进行渲染的,所以加载的速度很重要!从Google上我们了解到,webview 加载页面的顺序是:先加载 html ,然后从里面解析出 css 、 js 文...2013-07-05 18:34:26 · 165 阅读 · 0 评论 -
TextView的日常使用技巧
Textview在日常开发工作中使用非常频繁,在这里简单总结一下其比较重要的用法。目标是设置textview的中一段文字的显示属性,例如指定文字要下划线显示(@XXX、#XXX#),文字替换成图片,文字加重、变色、变大等。实现的基本思路都是将指定的文字找出来,然后用实现Spananble接口的子类覆盖,即可。 Spananble只是一个接口,它的继承关系是:Spananbl...2013-07-05 18:29:15 · 131 阅读 · 0 评论 -
关于SD卡管理的注意事项
问题:本人一直有使用金蝶公司的随手记APP作为个人的理财工具,最新版提供多种渠道对数据进行备份和导出,这种功能十分讨好我这种用户,可是最近一次刷机的数据恢复,使我遇上了大麻烦,无论是从网盘下载的,还是本地本分的,均不能恢复!幸好,随手记作为一款成熟的APP,日志系统必然是有的,可是却没有错误反馈功能。作为开发者,阅览log后,发现是由于一文件不能正常读取而导致数据不能恢复!具体的日志...原创 2013-01-18 11:24:05 · 228 阅读 · 0 评论 -
Json解析之Gson库
Json(JavaScript Object Notation)是一种轻量级的数据交换格式,类似XML,但比XML更小更快更容易解析。当前各种流行的web应用框架都对Json提供良好的支持,各种流行开发语言也支持Json解析。 Java中解析Json的方式也很多,根据官方的JSONObject库,自己设计的一个抽象工具类: import java.io.Serializable;...2012-09-24 11:46:06 · 142 阅读 · 0 评论 -
ubuntu12.04配置Java和NDK环境
最近由于项目需要,要用到NDK去编译实现一些功能。刚开始,尝试在windows7下进行NDK开发环境的开发,可是繁琐的不得了,每次编译还要配置参数,或修改mk文件,而且在64位的系统下还会有bug。实在是忍受不了,就有了在linux下进行编译的想法,因此做了这样一次记录: 在ubuntu下配置NDK非常简单: 从google上下载最新版的NDK包,http://developer...原创 2012-06-08 10:25:55 · 113 阅读 · 0 评论 -
WebView学习小记
最近有个项目需要用到第三方身份验证,进行用户登录,考虑到同时兼容多个第三方平台(如网易,新浪,腾讯等)的验证,而且要达到最大可能的跨平台(同时支持网页端和手机端),最终确定采取使用网页方式进行第三方的身份验证,以便于在线维护升级。 既然是在线系统,手机端就是访问该网点就是了。Android上提供了强大的WebView控件,利用这一工具,我们可以拦截各种由后台发起的页面跳转,也可以响应页面的...原创 2012-06-06 19:41:17 · 81 阅读 · 0 评论 -
实现Activity上的控件双击事件
重写dispatchTouchEvent 方法 就好了 Java代码 //处理双击事件 @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { ...原创 2011-02-12 23:38:51 · 175 阅读 · 0 评论 -
Android的图片叠加
android.graphics.Bitmap.Config是一个枚举类型,里面定义了位图的四种格式.ALPHA_8,ARGB_4444,ARGB_8888都是透明的位图,也就是所字母A代表透明.从名字中可以看出: ALPHA_8: 一种透明度为8位的位图. ARGB_4444: A,R,G,B,每一个参数由4bit表示,是一种16位的位图....原创 2011-02-12 23:36:38 · 129 阅读 · 0 评论 -
有效解决Android加载大图片时内存溢出的问题
首先解析一下基本的知识:位图模式,bitmap颜色位数是1位灰度模式,bitmap颜色位数是8位,和256色一样 RGB模式,bitmap颜色位数是24位 在RGB模式下,一个像素对应的是红、绿、蓝三个字节CMYK模式,bitmap颜色位数是32位 在CMYK模式下,一个像素对应的是青、品、黄、黑四个字节图像文件的字节数(Byte) = 图像分辨率*颜色深度/8(bit...原创 2011-02-12 23:30:37 · 266 阅读 · 0 评论 -
Android布局的layout_weight属性
layout_weight是LinearLayouts的view布局里一个很重要的值。所有的view的layout_weight缺省值都是为0,意味着他们只在屏幕上占据它们需要显示的空间大小。activity根据这个View的比0大的layout_weight值来划分剩余的空间和其它Views定义的layout_weight也按比例进行空间的划分。例如:假设我们在水平行上有一...原创 2011-02-12 22:52:23 · 98 阅读 · 0 评论 -
Android TabHost布局
Android中使用TabHost 可以在一个屏幕间进行不同版面的切换: 在Android中要实现Tab切换页面的效果,大致有两种方法:一是利用layout下的xml配置来实现tab的布局,二是动态加载tabHost进行布局。 1、利用xml文件配置,引用xml的activity不用继承于TabActivity,通过findViewById方法获取TabHost...原创 2010-12-29 18:34:09 · 105 阅读 · 0 评论 -
Android自动提示--AutoCompleteTextView、MultiAutoCompleteTextView
在Android中提供了俩种智能输入框--是MultiAutoCompleteTextView和AutoCompleteTextView。它们的功能大致一样。 AutoCompleteTextView使用方法如下: ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, ...原创 2010-12-29 16:15:47 · 83 阅读 · 0 评论 -
解决Android加载大图片内存溢出的问题(OutofMemoryException)
首先解析一下基本的知识:位图模式,bitmap颜色位数是1位灰度模式,bitmap颜色位数是8位,和256色一样RGB模式,bitmap颜色位数是24位 在RGB模式下,一个像素对应的是红、绿、蓝三个字节CMYK模式,bitmap颜色位数是32位 在CMYK模式下,一个像素对应的是青、品、黄、黑四个字节图像文件的字节数(Byte) = 图像分辨率*颜色深度/8(bit原创 2012-08-16 09:48:40 · 1575 阅读 · 0 评论 -
Android TabHost布局
Android中使用TabHost 可以在一个屏幕间进行不同版面的切换:在Android中要实现Tab切换页面的效果,大致有两种方法:一是利用layout下的xml配置来实现tab的布局,二是动态加载tabHost进行布局。 1、利用xml文件配置,引用xml的activity不用继承于TabActivity,通过findViewById方法获取TabHost,具体的xml见下原创 2012-03-26 09:14:30 · 1153 阅读 · 0 评论 -
在activity间传递对象的方法
在两个activity间传递数据,我们通常的方法都是用Intent或者Bundle,捎上数据,但是里面似乎只有一些放置一些Java中已经有的数据类型,像String,int,double等,但如果要传递一个对象,就需要一些小技巧了:Bundle中有一个方法putSerializable,利用该对象就可以传递对象了,不过传递的对象要实现Serializable接口。例如要传递一...原创 2011-02-12 23:43:33 · 280 阅读 · 0 评论 -
Android Timer类的使用
Android的计时器与Java的有点不同,需要配套TimerTask使用,基本的用法如下:Handler handler = new Handler() { // 定义处理信息的方法 public void handleMessage(Message msg) { switch (msg.what) { case...原创 2011-02-23 17:37:42 · 296 阅读 · 0 评论 -
探秘ListView的ConvertView以及ViewHolder原理
最近在使用android的组件ExpandableListView,实现需求时,遇到不少奇怪的问题。我的需求就是在ExpandableListView的父一级的view上添加两个按钮,实现添加子一级view的添加一级删除自己的功能。 自定义的layout如下: <?xml version="1.0" encoding="utf-8"?><RelativeL...2011-11-22 00:19:06 · 176 阅读 · 0 评论 -
android异常:Can not perform this action after onSaveInstanc
本人某个android项目开发阶段一直运行良好,直到上线前夕,在某款跑着android 4.03系统的手机运行却报出一下异常,导致force close:java.lang.IllegalStateException: Can not perform this action after onSaveInstance!首先得了解一下我那项目的一些基本情况,UI结构是TabActivity包含...2012-05-24 10:47:53 · 235 阅读 · 0 评论 -
Notification探险
多任务机制下,程序跑在后台,用户使用服务,形成了一个良好的使用结构。程序运行的状态或结果,在不干扰用户当前使用的状态下,以通知的方式通知用户,能大大提升地用户的使用感。 在android下,与通知功能相关的组件大致有以下三大部分: android.app.PendingIntent;android.app.NotificationManager; android.app.N...2011-03-31 10:43:04 · 85 阅读 · 0 评论 -
获得两点间的GPS距离
现在LBS越来越流行,计算地理位置的距离的需求十分普及,以下我就分享一下自己平时用来获得两点间的GPS距离的实用方法:在android中可采用如下代码获取距离:Java代码public double getDistance(double lat1, double lon1, double lat2, double lon2) { f...2011-07-07 09:14:11 · 140 阅读 · 0 评论 -
android UI设计的小技巧
<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGri原创 2011-03-11 16:52:51 · 94 阅读 · 0 评论 -
(转)android中Manifest.xml文件的介绍
每一个Android应用程序包含一个manifest文件——AndroidManifest.xml,保存在工程的根目录中。该文件定义了应用程序的结构和元数据以及它们的组件。它包含组件(Activity,Service,Content Provider和Broadcast Receiver)的节点,这些组件构成了整个应用程序。并且使用Intent Filter和Permission,来决定如...原创 2011-03-11 09:16:48 · 136 阅读 · 0 评论 -
关于android的9path图片处理
传统UI开发中,如果背景的大小不一样,一般需要为每种大小都制作一张图片,这在button中尤为明显。当然我们也可以一小块一小块水平重复的画,也可以垂直的话。在android中专门有一种叫nine patch图片(以 9.png结尾)来解决背景大小不一样时,只用一张背景图片。 在android sdk的目录下,tools文件夹里头draw9patch.bat的专门处理9patch...原创 2011-03-08 17:02:17 · 158 阅读 · 0 评论