
Android开发技术专栏
文章平均质量分 63
围绕Android技术的各个层次:系统Kernel、框架、应用开发UI等进行学习、研究和探讨,形成以Android为中心的技术文章的积累。
xjanker2
now @alibaba b2b
展开
-
Android Trick 14: proguard导致签名后的apk报错:ClassNotFoundException 的问题解决
发布在Android Market上的apk应用需要经过签名,签名的时候如果存在proguard.cfg并且在default.properties里边启动了proguard:proguard.config=proguard.cfg,那么在签名打包时会使用proguard对代码进行压缩、优化和混淆。在使用时遇到了一些问题,首先,随Android SDK自带的默认的proguard4.4?,签名后的a原创 2011-10-19 17:25:07 · 8783 阅读 · 1 评论 -
Android Trick 13: 改变一个apk的packagename的简单流程,就2个步骤
由于某些原因,要把PackageName改成一个新的名称。以前找不到流程,嫌麻烦最后没改。你可能回想着很多步骤,首先:1. 在包名上点右键-->refactor-->rename2. 在AndroidManifest.xml里运行Android="http://schemas.android.com/apk/res/android" package="com.newpakageName"原创 2011-10-14 11:04:21 · 9647 阅读 · 3 评论 -
深入Android系统【2】:launchMode (Instance)深入理解
前文Android Trick 4中已经对launchMode做了简介,近来使用中发现了一些理解不够的地方,特写出来和大家交流。standard、singleTop、singleTask、singleInstance。看SDK文档后,发现也不是很好理解上面几个原创 2011-10-13 20:14:21 · 4974 阅读 · 1 评论 -
一个Android工程师的2011年中总结及Q4计划
我这一年的成长非常快速,和Android的发展速度有的一拼了,时间总觉得不够用,本来打算年中时写一些感受和计划的,也突然发现到了现在才有时间整理一下。在已经过去的2011年的大半年日子里:Android的学习和研究借助2010年底正式参与的公司Android项目的原创 2011-10-08 16:24:49 · 6083 阅读 · 6 评论 -
Android Trick 12: 简单实现ImageView的加边框颜色的方法
对于一个ImageView,如果我们要加上边框,比如宽为3dp的灰色框,我们怎么做呢?有种方法,是自己定义一个MyImageView类,继承自ImageView,在其onDraw方法中画canvas。还有设置一个带有边框的背景图片的方法。这里给出一种简单方法,原创 2011-08-02 12:48:32 · 19248 阅读 · 5 评论 -
Android文档及学习资料整理 【至2011年7月】
学习参考网站Android Developers 官方开发网站,有权威的 Dev Guide 和 ReffrenceAndroid Source 官方Android全部开源源码网站,提供下载源码至本地的步骤Xda-developers Android版原创 2011-07-05 12:13:50 · 8077 阅读 · 6 评论 -
Android Trick 11: 对Android中的AsyncTask进行函数化的封装,简洁调用
为了使UI在数据获取时不僵死,数据获取需要在新开Worker线程中进行,然后将返回结果在UI线程中进行读取并渲染页面。面对这种异步处理,到底如何写才简洁,先后面临过三种实现方式。首先是最原始的Java方式,new 一个Thread出来,将处理Runnable进去执行,执行完之后通过handler post到ui线程去更新界面。然后发现1.5后有了AsyncTask,非常好用,以后的项目中全部改原创 2011-06-16 17:46:00 · 9329 阅读 · 9 评论 -
Android应用开发笔记(13): Android移动应用界面的模板化设计
Android没有像苹果开发那样功能强大的界面开发工具,本身ADT插件提供的界面编辑能力有限,没办法刻画所有的界面情况;Android的界面xml代码可以进行人工修改,而Iphone的全部在图形界面上拖动完成,可没提供任何方式的代码级修改。Android的UI设计开发过程非常繁琐,容易出错,需要很长时间调节界面细节,开发过Android应用的人肯定深有同感。用几年前的网页设计来打个比方,开发Iph原创 2011-06-15 19:27:00 · 13540 阅读 · 24 评论 -
Android Trick 10: 一个Android应用的全局数据变量的访问..
在一个Android应用中,我们可以定义一个类,然后使用在类中定义静态成员的方式去创造全局能够访问的数据。如下代码所示:public class AERunTime { public static String text1 = "example";}在Activity中就可以使用 AERuntime.text1 访问。这是Java的通用方式,也可以稍微改变一下,使用单例模式g原创 2011-06-14 18:11:00 · 4538 阅读 · 1 评论 -
Android Trick 9: 关于Android程序中多余的“退出”功能...
已经有各种文章教你如何在Android程序的任何一个页面执行退出整个程序的功能,Android.os方法、restartPackage方法、system.exit方法,甚至有人为制造异常使程序退出的方法,令人害怕呀。其实,我们在Android model的基础上想一下,真得需要这个功能:让用户在任何时候,都能看到一个直接退出该应用的按钮吗?我认为不需要。Google官方人员在很早就表达了这个观点:Question: Does the user have a choice to kill the applic原创 2011-05-25 11:37:00 · 3990 阅读 · 3 评论 -
Android Trick 8: ProgressBar的圆形和长条形设置
默认的progresbar是圆形的旋转动画:长条型的style设置:style还有以下几个选项:style="?android:attr/progressBarStyleHorizontal"style="?android:attr/progressBarStyleLarge"style="?android:attr/progressBarStyleSmall"style="?android:attr/progressBarStyleSmallTitle"原创 2011-05-11 17:14:00 · 6869 阅读 · 0 评论 -
Android Trick 7: 把TextView中的文字添加阴影效果及Style的使用
android:shadowColor 阴影颜色android:shadowDx 阴影的水平偏移量android:shadowDy 阴影的垂直偏移量android:shadowRadius 阴影的范围大多数情况下,某一类的TextView控件需要统一的风格,如加阴影等,那么可以使用style。 然后在values文件夹下创建styles.xml文件,内容为:这样的最大优点是减低代码冗余度,在需要更改原创 2011-04-26 17:01:00 · 34610 阅读 · 7 评论 -
Android Trick 6: PendingIntent的重复问题,当新建的PendingIntent匹配上一个已经存在的PendingIntent时可能不会创建新的。
<br />Android中默认对PendingIntent的创建(如通过PendingIntent.getActivity方式)会进行优化检测,默认的情况下,新创建的PendingIntent如果和原先的基本一样,那么就会使用原先的PendingIntent。<br />这就导致在目前的项目中,一定间隔的重复给用户发送某类通知,其中带的Intent里的Extra内容不同,但是通知点击后传到一个Activity里的extra消息还是原来的。那么出现做这种问题可以这样解决,在创建PendingIntent时,原创 2011-04-19 13:48:00 · 8391 阅读 · 0 评论 -
Android应用开发笔记(12):Android应用的自动升级、更新模块的实现
我们看到很多Android应用都具有自动更新功能,用户一键就可以完成软件的升级更新。得益于Android系统的软件包管理和安装机制,这一功能实现起来相当简单,下面我们就来实践一下。首先给出界面效果:1. 准备知识在AndroidManifest.xml里定义了每个Android apk的版本标识:其中,android:versionCode和android:versionName两个字段分别表示版本代码,版本名称。versionCode是整型数字,versionName是字符串。由于原创 2011-04-06 09:59:00 · 58546 阅读 · 65 评论 -
Android应用开发笔记(11):Android上的蓝牙通信功能的开发:BluetoothChat例程分析
1. 概述Bluetooth是几乎现在每部手机标准配备的功能,多用于耳机mic等设备与手机的连接,除此之外,还可以多部手机之间建立bluetooth通信,本文就通过SDK中带的一个聊天室的例程,来介绍一下Android上的Bluetooth的开发。在Android1.x的时候,相关API非常不完善,还不能简单的使用Bluetooth开发,有一个开源项目可以帮助程序员使用、开发蓝牙,支持直接方法bluetooth协议栈。在Android2以后,框架提供了一些官方API来进行蓝牙的通信,原创 2011-04-06 09:52:00 · 18428 阅读 · 8 评论 -
Android Trick 5: 正则匹配任意字符,包括换行符的字符串
这是java正则的知识,最近开发android上也碰到了,匹配任意字符,包括换行符的字符串,发现使用 [.//n]* 就是不行,查了相关资料,以下可以:[//s//S]*[//w//W]*[//d//D]*在找到更好的方法前吗,暂时用之。原创 2011-03-25 17:44:00 · 4154 阅读 · 0 评论 -
Android Trick 4: Activity的android:launchMode (startard、singleTop、singleTask、singleInstance)
写在AndroidManifest.xml中,如:startard:标准方式,启动一个Activity就创建一个实例。singleTop:当Activity栈最顶层的A1启动另一个A1时,不会启动新实例。singleTask:在Task范围内只产生一个实例。singleInstance:在全局范围内只有一个,即使在不同apk中调用。onNewIntent:在singleTop下,不产生新实例直接再用某个Activity A1,需要得到来自哪个intent。public void onNewIntent(In原创 2011-03-22 13:52:00 · 6390 阅读 · 2 评论 -
Android Trick 3: GridView动态加载数据情况下,选中状态的实现
GridView使用AdapterView动态加载数据情况下,无论是在onCreate、Onstart、OnResume方法中调用getChildCount()均为0,这说明数据并没有在Activity最初启动后立即加载为GridView的子View,那如果要把GridView实现为Tab风格的菜单,是必须要调用它的状态选中的,如果在Activity中调用的话就会抛nullpointerexception了,那要怎么操作呢? /** * 构造菜单Adapter * @param menuName原创 2011-03-22 12:50:00 · 7662 阅读 · 0 评论 -
Android Trick 2: Android中的透明属性的设置
<br />ui设计时,需要指定某个元素的drawable时,有时候需要告诉Android我希望设置它为透明,偶然在源码中发现,就是以下这段代码:<br />android:background="@android:color/transparent"原创 2011-03-04 13:58:00 · 3925 阅读 · 0 评论 -
Android应用开发笔记(10):制作自定义背景Button按钮、自定义形状Button的全攻略
在Android开发应用中,默认的Button是由系统渲染和管理大小的。而我们看到的成功的移动应用,都是有着酷炫的外观和使用体验的。因此,我们在开发产品的时候,需要对默认按钮进行美化。在本篇里,笔者结合在应用开发中的经验,探讨一下自定义背景的按钮、自定义形状按钮的实现方法。 首先看实现效果截图:自定义背景的按钮目前有2种方式实现。1. 矢量图形绘制的方式矢量图形绘制的方式实现简单,适合对于按钮形状和图案要求不高的场合。步骤如下: (a) 使用x原创 2011-03-04 11:02:00 · 70415 阅读 · 47 评论 -
Android Trick 1: 使用View来制作专业的分隔线
如果更高效简单的实现界面中的分隔线呢? 这是从Google的某些应用的源代码中发现的。原创 2011-03-03 10:57:00 · 11148 阅读 · 3 评论 -
深入Android系统【1】 开机画面的修改
这一系列的文章将深入框架、系统底层,包含Framework/OS源码阅读、ROM修改。这一篇先从最简单的说起吧,准备写一下开机画面的修改。 一般地,Android开机画面分为两个:第一启动画面、第二阶段启动画面。第一启动画面需要在boot.img里修改原创 2011-03-02 13:38:00 · 5881 阅读 · 0 评论 -
Android应用开发笔记(9):应用中调用系统的搜索UI,Android Search Framework的初步了解
经过以下几个部分的实现和配置,Android内建的搜索框架就可以在你的应用中方便使用了。 1 在需要显示search ui界面的activity中调用search的代码 /** Handle "search" title-bar action. */ public void onSearchClick(View v) { onSearchRequested(); } /** do the search **/ @O原创 2011-02-16 22:39:00 · 6198 阅读 · 0 评论 -
Android应用开发笔记(8):在背景运行耗时任务,AsyncTask与ProgressDialog的使用
AsyncTask用在需要在ui线程中调用、在背景线程中执行耗时任务、并且在ui线程中返回结果的场合。下面就是一个在背景中运行的AsyncTask的实现DownloadDBTask, Android中实现了默认的进度提示对话框,即ProgressDialog,通过实例化和一些简单设置,就可以使用了。 private class DownloadDBTask extends AsyncTask { // 可变长的输入参数,与AsyncTask.exucute()对应原创 2011-02-11 18:38:00 · 8015 阅读 · 0 评论 -
Android应用开发笔记(7):构建自己的Android账户与内容同步机制,例程SampleSyncAdapter的分析
装过Android版的Facebook、lastfm的同学是否对于这些应用的功能感到惊喜,它们可以定期更新朋友的最新信息,将最新近况和心情短语集成入联系人中。这些应用全部是以Android2.0后的账户和同步机制为基础的。Google的例程中给出了名为SampleSyncAdpater的例子,通过分析该例子可以学会Android中的Account验证、同步Adapter的使用。详细例子代码可以看sdk samples中提供的源码,现在拿2.2中的版本来简要说明。首先是 class Authenticator原创 2011-01-17 10:57:00 · 24945 阅读 · 14 评论 -
Android应用开发笔记(6):Toast、Notification、Alarm, Android中的通知实现
启动AcStart,负责在创建时立即创建一个Notification在状态栏中,处理动作为后面的AcNotificationDealer。AcStart.javapackage jtapp.notifications;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;impor原创 2011-01-14 20:08:00 · 3947 阅读 · 0 评论 -
Android应用开发笔记(5):Android中的Service使用
三 Service的生命周期 Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDestroy我们有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。 1 通过startService Service会经历 onCreate -> onStart stopService的时候直接onDestroy 如果是调用者(TestServiceHolder)自己直接退出而没有调用stopService的 话,Servic原创 2010-12-22 10:58:00 · 2917 阅读 · 0 评论 -
Android应用开发笔记(4):再探Android多应用间数据共享机制,自定义ContentProvider
Android中的ContentProvider是一种多应用数据共享的机制,任何时候同一Provider只会创建一次,是由系统进行初始化和管理的。本文中将通过实现一个简单通讯录的插入、删除、查询操作来让你了解ContentProvider机制极其自定义过程。读过本系列第二篇(读取手机中通讯录)和第三篇(sqlite数据库操作)的读者可以发现,本文中实现的应用以这两篇内容为基础的。虽然,本文的MyContentProvider使用sqlite数据库进行持久化存储操作,包装后以ContentProvider机制原创 2010-12-18 13:42:00 · 3352 阅读 · 0 评论 -
Android应用开发笔记(3):SQLite数据库的插入删除查询操作
本文讲如何使用Android中内置的SQLite轻量数据库,Android SDK中已经对其进行了封装,使用起来相当简单。创建类继承SQLiteOpenHelper就可以将数据库的创建和应用版本更新后数据库的重建纳入自动管理中。本文实现一个简单的Sqlite数据库,存储人名和电话号码。效果如下截图:主Activity 类SqliteSample.java 代码:package jtapp.sqlitesamples;import android.app.Activity;import andro原创 2010-12-16 17:24:00 · 8772 阅读 · 4 评论 -
Android应用开发笔记(2):读取手机中的联系人信息(android.provider.ContactsContract)
上一篇中使用了打电话发短信的功能,但号码联系人信息我们还不知道。本篇开始讲如何从Android中得到本机联系人的信息。由于Android较快的版本升级,部分API已经发生了变化。本篇探究的通过ContentProvider机制获取联系人的API从Android2.0开始做了很大调整,原来的android.provider.Contacts类及其下相关类由android.provider.ContactsContract代替。原类体系标记为Deprecated(废弃),因为兼容的原因目前还存在,但不保证以原创 2010-12-14 19:52:00 · 11265 阅读 · 5 评论 -
Android应用开发笔记(1):调用打电话和发短信、收短信接口、发Email (Call, Dial, SMSManager, Broadcast, Email)
本文来自 http://blog.youkuaiyun.com/xjanker2,引用转载必须注明出处! 打电话和发短信可以说是最核心的应用了,本文就来阐述它的调用方法。可以分为直接调用--直接电话或短信发出,已经间接调用--进入拨号或短信撰写页面,等待用户确认内容后由用户发出. 先看代码效果截图: 先编写主界面Activaty,创建类CallAndSms作为为默认启动页 package jtapp.callandsms;import java.util.List;原创 2010-12-13 23:19:00 · 19997 阅读 · 7 评论 -
Linux c 及 内核优化 培训 第二天课程笔记
<br />2010-11-27 second day lecture by JohnBull<br />Signal:<br /> 先执行signal,再执行alarm<br /> signalaction, sigsuspend()<br />Thread:<br /> X86访问内存是以cache行为单位<br /> 推荐《深入理解计算机系统》,当代计算机组成原理<br /> 信号安全和线程安全是不一样的,信号安全更难(同一线程内)<br /> pthread_cl原创 2010-11-27 22:25:00 · 1424 阅读 · 0 评论 -
RHEL5 CENTOS5上编译Android内核的步骤
<br />RHEL5 CENTOS5上编译Android内核的步骤 <br /><br /># uname -a<br />Linux chitty 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 12:03:43 EST 2008 i686 i686 i386 GNU/Linux<br /># more /etc/*release<br />CentOS release 5.2 (Final)<br /># yum install zlib-devel<br /># wget原创 2010-11-23 17:37:00 · 1452 阅读 · 0 评论 -
yum常用命令及常用源
转自:http://viong.blog.51cto.com/844766/278402rpm包的更新<br />檢查可更新的rpm包<br />#yum check-update<br />更新所有的rpm包<br />#yum update<br />更新指定的rpm包,如更新kernel和kernel source<br />#yum update kernel kernel-source<br />大規模的版本升級,與yum update不同的是,連舊的淘汰的包也升級<br />#yum upgra转载 2010-11-23 14:07:00 · 1763 阅读 · 0 评论 -
RHEL5系统下配置YUM源的方法
1. 安装yum 2. 修改。repo文件 ccd /etc/yum.repos.d/ #vi CentOS-Base.repo 写入一下内容: [base] name=CentOS-5 - Base #mirrorlist=http://mirrorlist.centos.org/?release=$releasever5&arch=$basearch& repo=os #baseurl=http://mirror.centos.org/centos/$releasever/os/$basea转载 2010-11-23 11:12:00 · 1237 阅读 · 1 评论 -
Linux 学习笔记
1. 查看系统最大可打开文件数cat /proc/sys/fs/file-max2.原创 2010-08-26 21:17:00 · 715 阅读 · 0 评论 -
Vim 一款经典配置
<br />http://blog.youkuaiyun.com/redguardtoo/archive/2008/03/21/2204289.aspx<br /> <br /> <br /> <br />配置文件和所有插件下载:<br />http://www.mediafire.com/?kgjy0dbdsxn<br />目地:<br />当初之所以发布此史上最强vim配置文件的更新版,是因为我要在好多台电脑上,不同的开发环境(不同版本的vi,不同的操作系统)下工作,我希望这个vimrc文件能够在任何情况下都可以使转载 2010-08-23 19:21:00 · 2583 阅读 · 0 评论 -
Ubuntu 使用笔记
取得root身份方法: sudo su, 输入密码。增加新用户推荐命令: adduser mysql server安装: 见 Mysql安装指南 查看mysql是否启动: sudo netstat -tap | grep mysql重启mysqld: sudo /etc/init.d/mysql restartmysql允许远程: 创建%标记的用户;/etc/mysql/m原创 2010-01-22 19:59:00 · 1025 阅读 · 0 评论 -
Android 原始碼徹底研究系列 - 鬧鐘程式, Gallery & Adapter (3)
【ysl的程式设计天堂的blog一直有看,作者的深厚技术功底与娓娓道来的清楚表达给我留下了深刻印象,苦于此blog在国内无法访问,特地将一系列经典内容转贴过来,以供学习】本文转自: http://ysl-paradise.blogspot.com/2009/08/android-gallery-adapter-3.html Android Source Code I转载 2009-09-05 11:27:00 · 1765 阅读 · 0 评论 -
Android 技术分析研究 互联网资源索引
【本文系原创文章,版权属于:Justin Yang 联系方式:xjanker@gmail.com 可以转载,但必须署名并注明出处,保持文章的完整性。】文章地址:http://www.yangzhe.net我将android体系进行分层,大致分为应用级、框架级、系统级、内核级、驱动及硬件层等层级。我把互联网中非常有用的Android技术资料进行整理汇编,按层索引,方便查询,同时也原创 2009-08-31 18:06:00 · 1152 阅读 · 0 评论