- 博客(165)
- 资源 (3)
- 收藏
- 关注
原创 关于在非UI线程中更新UI控件不会crash的问题
昨天同事问我一个问题,在Thread中去更新一个Button的状态可行吗?我说当然不行。他告诉我说,那为什么他的程序不会奔溃,我过去一看果然没有奔溃,甚是奇怪。难道是我记错了?于是我Google了一下。发现Android的开发文档中确实说这样是不行的啊。http://developer.android.com/guide/components/processes-and-threads.h...
2013-08-11 14:40:12 296
原创 如何导出jar包
右键工程->Export->Java->JAR file->Next-> Next 选中工程和工程中你要打包的内容,如果是Android的项目,需要把Manifest文件去掉。指定打包出的jar文件的名字。点击Finish即可。 ...
2013-03-21 14:30:52 256
原创 为新建的类设置默认的注解
Window->Preferences->Java->Code Style->Code Templates->选中右边Code->New Java files->点击Edit按钮 在编辑框中进行编辑: 在你新建一个类的时候,就会自动帮你生成注释: ...
2013-03-19 17:52:28 331
原创 从SVN上检出项目时候出现Cannot map the project with svn provider
将当前的svn项目从eclipse中删除后,想重新迁入的时候,出现了下面的问题: 解决方法:到之前项目所在的工程中找到这个项目,将这个项目残留的文件夹删除,重新迁入即可 ...
2013-02-19 15:52:14 285
Dialog的使用
在Android中经常会使用到对话框Dialog。下面是实现一个基本的Dialog的代码:private void showDialog(){ LayoutInflater layoutInflater = this.getLayoutInflater(); View customDialog = layoutInflater.inflate(R.layout.dial...
2013-01-27 20:54:01 221
原创 从源码中浅析Android中如何利用attrs和styles定义控件
一直有个问题就是,Android中是如何通过布局文件,就能实现控件效果的不同呢?比如在布局文件中,我设置了一个TextView,给它设置了textColor,它就能够改变这个TextView的文本的颜色。这是如何做到的呢?我们分3个部分来看这个问题1.attrs.xml 2.styles.xml 3.看组件的源码。1.attrs.xml: 我们知道Android的源码中有attrs...
2013-01-24 21:39:06 303
Toast的使用
Toast是Android特有的一种提醒机制,本人认为这是一种很优秀的设计。但是通常我们在使用的时候会对其稍微地进行定制。比如设置Toast的背景(默认是黑色,略透明的),让整个应用程序有同样风格的Toast,个人认为是一个不错的选择,而且这样调用Toast比Toast默认的使用方式略显简单,所以记录起来方便以后使用。public class ToastUtil { public s...
2013-01-24 19:58:14 189
监听Android键盘上的按钮
在项目中有时候想实现直接按下键盘的回车按钮来实现某个操作有两种方法来实现这个效果。 方法1:监听OnEditorActionListener接口etTaskDesc.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(T...
2013-01-24 15:28:55 339
ProgressBar
做过Android开发的同学应该都不会对这个控件陌生。主要是用来实现处理或加载进度的显示或者提示用户正在处理或加载数据。基本来说就两种情况,一种是转圈的小菊花,一种是水平的进度条。默认情况下ProgressBar是圆形的那种,如果你要设置成水平状的,需要加入stylestyle="?android:attr/progressBarStyleHorizontal"这两种形式的默认...
2013-01-21 17:21:14 233
原创 ImageView
使用ImageView旋转图片或缩放图像: Bitmap bm = ((BitmapDrawable)getResources().getDrawable(R.drawable.ic_launcher)).getBitmap(); Matrix matrix = new Matrix(); //matrix.setScale((float)1.5, (float)1.5);...
2013-01-20 17:02:42 185
制作一个透明的Activity
项目中遇到了这个需求,记录下来以便以后查询。顺便写出来供大家参考。 一般如果你要实现一个透明的Activity,通常你会想到在Manifest文件中对该Activity使用Dialog主题:android:theme="@android:style/Theme.Dialog" 但是这样做有一个问题,就是这个样式被定死了,不容易修改,比如,我的需求是,该Dialog的宽要填充整...
2013-01-19 17:02:11 261
ListView在应用开发中较为常用的做法
首先声明下,这是本人自己使用的做法,可能并不适合每个人,但是具有参考意义,分享给大家,不足的地方希望有人能提出来。 ListView在做应用的时候是经常被使用到的。一般开发应用程序的时候,我们会先做界面。这个时候,遇到ListView,我们会先模拟一些数据,而且,每个ListView通常都有类型的行为,比如,ListView的每个Item的点击效果,Item之间的横线,等等,而通常我们...
2013-01-14 19:25:04 134
Popupwindow的使用
项目中经常会使用到popupwindow做菜单选项,这个类在使用中有一些经常被遗忘的细节,今天用一个实例来总结一个popupwindow较常用的用法。 效果图: MainActivity.java:public class MainActivity extends Activity { private ImageButton ibOperationM...
2013-01-09 10:21:05 139
Android中使用styles
在项目开发中经常遇到这样的问题,在很多的Activity中都会有标题栏,而这个标题栏通常拥有类似的效果,比如下面的截图所示。那么你需要统一控制标题栏中的文字的大小,字体的颜色等等。方便修改和维护。 1.在res/values/styles.xml中为每个控件编写style:<resources xmlns:android="http://schemas.androi...
2013-01-08 10:15:30 154
原创 Permissions
这篇文档描述了应用程序开发者如何使用Android提供的安全特性。Android Open Source Project提供了一个更全面的Android SecurityOverview。 Android是一个privilege-separated(权力分开的)操作系统,每个应用程序都有一个明确的系统标识(Linux用户ID和组ID)。部分的系统也分离成不同的身份。Linux因此将每个...
2013-01-03 21:20:16 202
原创 Processes and Threads
当一个应用程序组件启动,并且应用程序没有任何其它组件在运行,Android系统为应用程序启动一个新的Linux process单线程。默认情况下,同一个应用程序中的所有组件运行在相同的process和thread中(叫做“main”thread)。如果一个应用程序组件启动并且这个应用程序已经存在一个process(因为这个应用程序中有其他的组件存在着),于是这个组件在相同的process中被启动并...
2013-01-03 15:45:08 234
原创 Content Provider
Content Provider管理着对一个有结构的数据集的访问。他们包装数据,并为定义数据安全提供机制。Content Provider是将一个process中的数据和运行在另一个process中的代码相连接的标准的接口。 当时想要访问一个content provider中的数据,你可以使用你的应用程序的Context的ContentResolver对象作为一个client来与provi...
2013-01-02 18:33:52 274
原创 Intents and Intent Filters
一个应用程序的3种核心组件--activities,services,和broadcast receivers--都是通过一种叫做intents的消息来激活的。Intent消息是一种用来在相同或不同应用程序的组件之间提供后期运行绑定的一种工具。intent本身是一个Intent对象,是一种消极的数据结构,包含了要被执行的操作的抽象描述--或者,经常以broadcasts(描述的是一种已经发生的并且...
2013-01-02 16:51:35 181
原创 Services
Service是这样一个组件,它能够在后台执行一个长时间的操作,并且不提供一个用户接口。其他的组件可以启动一个service并且它会一直运行咋后台background,即时用户切换到其他的应用程序。另外,一个组件可以绑定到一个serveice来与它交互,甚至执行进程内部交流interprocess communication(IPC)。例如,一个service可能处理网络事物,播放音乐,执...
2012-12-31 16:25:44 193
原创 Activities
一个Activity是一个应用程序的组件,它提供了一个用户可以进行交互的屏幕,例如拨打电话,拍照,发送邮件,或者查看地图。每个activity都提供了一个window用来绘制用户接口。这个window通常填充屏幕,但是可能比屏幕小并且悬浮在其他的window上面。 一个应用程序通常由多个松弛结合的activity构成,通常,一个应用程序会指定一个activity作为“main”activi...
2012-12-30 17:18:23 223
原创 Application Fundamentals
Android应用程序使用的是Java语言编写。Android SDK工具将代码,数据和资源文件编译进一个Android包,一个以.apk结尾的文件。一个.apk文件被认为是一个应用程序。 一旦被安装到设备上,每个Android应用程序运行在它自己的安全沙箱内。 Android操作系统是一个多用户Linux系统,所以每个应用程序都属于不用的用户。默认的情况下,系统分配给每...
2012-12-27 19:21:01 375
类似微信的聊天界面ListView
微信中的ListView有一个特点就是存在许多不同的Item,即并不是平常的ListView,所有的Item布局都是一样的。针对这种情况,Google的Adapter提供了两个方法getItemViewType和getViewTypeCount。通过覆盖这两个方法就可以实现一个ListView中存在多种不同的Layout。实现了更加个性化的ListView效果。我归纳了下微信中的Item可以分为7...
2012-12-25 15:10:15 290
原创 利用Intent,打开word,pdf等文件
本例演示如何通过Intent来打开手机sd卡中的word,pdf文件,这里实际上是通过Intent打开手机中能够阅读word,或pdf的应用,让那个应用来打开文件。而不是我们这个例子本身能够打开文件。 直接上代码: activity_main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/...
2012-12-25 14:52:54 381
如何在自己的项目中使用NDK
这篇博客实现的是在项目中调用C文件来实现两个数的相加。本文仅供参考,如果有不足的地方,欢迎指出。 主要有这么几个步骤: 步骤一:在你的工程中新建一个类,这个类有两个作用,1.通过这个类,和本地C/C++代码打交道,实现代码结构上的耦合。2.javah通过这个类生成.h文件,你可以根据这个.h文件来编写.c文件。 步骤二:在.c文件编写好了以后,我们就开始编写An...
2012-12-11 16:01:42 146
原创 Check for Updates出错
昨天发现自己的Lint Warning工具不能检测出Manifest.xml中的错误。而同事的可以(他的sdk和Eclipse都是最新版本),以为是Android sdk的版本不够高,打开SDK Manager,更新了,但是还是没有起效果。决定更新Eclipse,选择Help->Check for Updates.出现错误: http://eclipsecolorthemes...
2012-12-04 09:46:35 2109
windows上ndk开发环境搭建,编译运行NDK自带的代码示例
在网络上查找的环境搭建的步骤以及命令很多都过时了,今天自己安装了以后,将步骤记录在这里供大家参考。本教程中的NDK版本为android-ndk-r8c 需要准备的东西:NDKCygwin NDK需要一个C/C++编译环境才能使用。因此在Windows上不仅需要安装NDK,还需要安装相应的C/C++环境,这就是Cygwin。 NDK下载地址(直接在sdk中...
2012-12-03 16:49:25 211
原创 利用Eclipse搜索
平时在开发的时候,最常用的是在本页面中进行搜索,直接ctrl+F如果要看某个方法或变量在哪里被调用的时候,通常是右键点击这个方法名或变量名,选择 open Call Hierarchy 那么当你想要查找某个类在哪里被调用到的话,该如何做呢?这时候就要使用Eclipse选项卡上面的Search页了,快捷键是ctrl+H打开界面如下: 你可以在这个界面...
2012-11-30 16:03:51 178
原创 android Lint
在检查程序是否符合规范(各种警告)的时候,Android为我们提供了一个很好的工具Lint 使用方法:右键你的项目->Android Tools->Run Lint:Check For Common Errors 运行后会弹出一个窗口 Lint Warnings 在这里面就显示了很多你的程序中隐藏的问题。接下去就按照里面的提示进行修改吧。 ...
2012-11-30 15:51:23 137
原创 获取标题栏和状态栏的高度
/** * 状态栏和标题栏的高度 * * * */ private void print(){ LinearLayout lySpin = new LinearLayout(this); lySpin.setOrientation(LinearLayout.VERTICAL); ...
2012-11-26 11:10:14 180
原创 键盘相关
虽然很简单,而且没有什么价值,但还是记录一下方便自己查找使用: InputMethodManager inputMethodManager=(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.toggleSoftInput(0, InputMet...
2012-11-21 16:13:48 113
WebView的使用(打开网页,下载文件)
在开发中经常在更多页面中用到WebView来显示一个网页,这个网页里面放有下载地址或者链接到别的网页等等。效果如下: 这个示例很简单,代码中都有注释。下面直接上代码: public class MainActivity extends Activity { private static final String URL = "http://demo.91...
2012-11-13 18:52:10 623
SharedPreferences的基本使用
SharedPreferences是Android提供的很方便的一种保存小数据的方式。它能够保存一些基本类型的数据,包括int,boolean,等等,当然也包括String,这个对象类型。 我们通常可以用这个类来保存用户的基本信息,比如软件中常用的用户名密码,标记用户是否第一次打开软件等等。下面是一个很简单的例子:实现保存用户输入的内容 /** * 通...
2012-11-10 18:32:07 155
模板方法模式
什么是模板方法模式: 在一个方法中定义一个算法的骨架,将一些步骤延迟到子类中去实现,模板方法可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模板方法把不变的行为搬到了父类中,去除了子类中重复的代码,实现了代码的复用。有的时候我们会遇到一系列步骤构成的过程需要执行,这个过程从高层次上看是相同的,但是有些步骤的实现可能不同,这个时候就应该考虑模板方法模式了。 比...
2012-11-10 13:54:32 120
命令模式--(1)基本认识
什么是命令模式: 将请求(命令)封装为对象,实现将“发出请求的对象”与“接收和执行这些请求的对象”分隔开来 命令模式中有几个关键的概念: 客户:发起请求的对象,开关,或者你(因为开关是由你来控制的)命令:具体的一个命令,比如开灯命令,关灯命令执行者:接收和执行请求的对象,比如电灯,是开灯关灯命令的接收者和执行者调用者:通过这个对象来实现客户(开关或你)和执...
2012-11-09 01:41:17 174
观察者模式
什么是观察者模式:定义了对象之间的一对多依赖,这样一来,当主题对象改变状态时,它的所有依赖者都会收到通知并自动更新。这就好比订阅报纸,我们知道出版社每天都要出版报纸(主题Subject),如果你(观察者Observer)订阅了报纸,那么出版社一旦出版了报纸,就会给每个订阅过报纸的用户派发一份报纸。如果你不想要了,随时可以取消订阅,那么下次出版社就不会派发报纸给你了,就这么简单。...
2012-11-06 12:01:26 141
Log调试
在开发中我们一定不能避免使用Log类,但是这个类存在一个问题就是,当你在程序中使用了大量的Log,那么在程序开发完毕的时候,这将是一个问题,因为,你需要将所有的Log记录注释掉(当然,你不注释也是可以的)。那么有没有方便的方法来处理呢?我们可以写一个类,将Log类包装起来,使用一个boolean来控制所有的Log记录的显示。 比如这样:MyLog.java:public cla...
2012-11-06 09:38:51 185
原创 Java中的异常
关键字:Throwable,Exception,Error,Runtime Exception,unChecked Exception,Checked Exception,throw,throws,try, catch,finally 我们先看看类图: 首先你需要明白,这些都是类,是对象,就和其它的对象没有两样,你可以为它定义方...
2012-11-06 00:56:13 121
单例模式--只有一个实例
什么是单例模式: 确保一个类只有一个实例,并提供一个全局访问点。注意:使用起来类似静态方法,但是它不是静态方法,而是类。需要new关键字来实例化。 单例模式的基本使用方式可以概括为3个步骤:1.创建一个private静态变量;2.创建一个private空构造器;3.创建一个public静态访问点,用来将唯一实例返回给外部调用者。 基本使用方式:...
2012-11-03 12:43:57 299
装饰者模式--除继承外的另一种扩展方式
什么是装饰者模式: 在java中,如果你希望扩展现有类的功能,那么你一定首先想到的是继承现有类(至少我是这样),那么装饰者模式可以让你不使用继承,一样扩展现有类的功能,且不需要对现有类进行修改,让你多了一种扩展现有类的功能的选择。 设计原则 对扩展开发,对修改关闭。 java.io包内的大量的类都是装饰者,下面这张图就一目了然了 ...
2012-10-31 23:54:17 139
策略模式--从源码TabHost中看策略模式
什么是策略模式: 针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。 应当由客户端自己决定在什么情况下使用什么具体策略模式。 策略模式不适合于处理同时嵌套多于一个算法的情形。 针对的设计原则: 封装变化的。多用组合,少用继承。针对接口编程,不针对实现编程。 优缺点: 优点:...
2012-10-31 00:42:23 155
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人