Android开发实践:由new Handler()说开去

在Activity里new Handler()和在自己创建的Thread中new Handler()有什么区别?本文主要回答和解析了该问题。

原创 推荐 点赞2 阅读6602 收藏0 评论0 2014-10-15

Android开发实践:多线程编程小结

我们知道,Android系统为了提高程序的实时响应能力,不允许在UI线程中进行耗时的操作,否则会出现ANR异常,因此必须将耗时的任务放到非UI线程中执行。Android/Java提供了很多类来帮助大家完成异步操作,比如:Thread类,Timer类,AsyncTask类,HandlerThread类,以及Executor类。这些类都分别在什么场合下使用呢?本文简单地总结一下Android开发中常见的多线程类型和解决方案,并比较和分析了各个方案的区别,以便更好地理解和应用这些API接口。

原创 推荐 点赞1 阅读3087 收藏0 评论0 2014-10-14

Android开发实践:使用Service还是Thread

Service是Android的四大组件之一,被用来执行长时间的后台任务,同样,线程也可以实现在后台执行任务,它们的区别在哪呢?何时使用Service何时使用Thread呢?今天我也来说说我的理解和总结。

原创 推荐 点赞1 阅读9761 收藏2 评论1 2014-08-31

Android开发实践:自定义带动画的View

前面两篇文章介绍了自定义View和ViewGroup的onMeasure和onLayout的原理和示例,本文准备介绍自定义View的第三个关键部分,即onDraw()函数的重载。本文实现了一个柱状图动画,View的动画启动后,会显示一排柱状图增长的画面,这种动画多用于财务类或者统计类的APP中。

原创 推荐 点赞2 阅读5420 收藏1 评论1 2014-08-27

Android开发实践:自定义ViewGroup的onLayout()分析

Android开发中,对于自定义View,分为两种,一种是自定义控件(继承View类),另一种是自定义布局容器(继承ViewGroup)。如果是自定义控件,则一般需要重载两个方法,一个是onMeasure(),用来测量控件尺寸,另一个是onDraw(),用来绘制控件的UI。而自定义布局容器,则一般需要实现/重载三个方法,一个是onMeasure(),也是用来测量尺寸;一个是onLayout(),用来布局子控件;还有一个是dispatchDraw(),用来绘制UI。 本文主要分析自定义ViewGroup的onLayout()方法的实现。

原创 推荐 点赞3 阅读10000+ 收藏0 评论2 2014-08-19

Android开发实践:为什么要继承onMeasure()

Android开发中偶尔会用到自定义View,一般情况下,自定义View都需要继承View类的onMeasure方法,那么,为什么要继承onMeasure()函数呢?什么情况下要继承onMeasure()?系统默认的onMeasure() 行为是怎样的 ?本文就探究探究这些问题。

原创 推荐 点赞3 阅读10000+ 收藏0 评论2 2014-08-14

写给新入职的毕业生们(一)

今天,我作为“前辈”给公司新入职的应届毕业生们做了一次经验分享,简单整理了一下演讲的内容,希望对其他人也能有所帮助。

原创 推荐 点赞46 阅读10000+ 收藏1 评论34 2014-07-23

Android开发实践:Android交叉编译工具链的使用

Andriod.mk和ndk-build是Android官方提供了一套封装过的Android交叉编译环境,其实,你可以不用它,而直接通过传统的Makefile文件来编译你的c/c++代码的,本文即介绍如何使用Android的交叉编译工具链来编译可用于Android平台的库文件。

原创 推荐 点赞0 阅读5944 收藏0 评论0 2014-06-29

Android开发实践:在任意目录执行NDK编译

前面一篇文章简单地介绍了Android ndk编译的一些命令行参数,一般情况下,我们都是在Android工程的jni目录下编译本地代码,或许用不到那些参数,但是如果你需要将一些第三方C/C++库,如ffmpeg、libjpeg等,编译为Android可使用的静态库/动态库,那么,你就得尝试在这些第三方库的源码目录中,配置Android的编译环境,使用NDK提供的交叉编译该工具来编译了。

原创 点赞2 阅读5607 收藏0 评论1 2014-06-19

Android开发实践:常用NDK命令行参数

Android提供了NDK工具,用来编译native代码(c/c++),该工具配置好了相关的交叉编译环境和工具链,只需要你简单地编写几个mk文件即可将你的c/c++代码编译为Android的java工程/Android手机可以识别、加载和运行的库或者应用程序。

原创 点赞0 阅读10000+ 收藏0 评论0 2014-06-13

Android开发实践:拷贝assets到sdcard

本文详细介绍了Android系统的assets和res/raw目录的用法和区别,并给出了将assets目录下的文件拷贝到系统sdcard目录的封装类,供初学者学习和使用。

原创 点赞0 阅读7741 收藏0 评论0 2014-05-20

Android开发实践:利用ProGuard进行代码混淆

由于Android的代码大都是Java代码,所以挺容易被反编译的,好在Android ADT为我们集成了混淆代码的工具,一来可以混淆我们的代码,让程序被反编译后基本看不懂,另外还能起到代码优化的作用。本文主要介绍和总结Android提供的ProGuard工具。

原创 推荐 点赞1 阅读10000+ 收藏0 评论1 2014-05-18

Android开发实践:以“专业”的态度处理多线程

很多时候,我们可以照着教材实现一些基本的功能,比如用Socket发送/接收几个字符,写一个线程完成某个异步任务,但是在实际的项目中,往往不那么简单,比如需要设计Socket通信协议,需要处理Socket的连接异常断开,需要考虑在线程阻塞的情况下如何正常退出和释放资源等等,关于这些“实战经验”,前面的文章也有所涉及,以后有空准备再开个专题跟大家分享探讨一下,今天先简单地说说怎样更“专业”地在Android程序中处理多线程。

原创 点赞1 阅读1643 收藏0 评论3 2014-05-13

Android开发实践:WIFI连接功能的封装

本文则重点讲述一下如何利用Android的API连接WIFI,并给出了一个封装的WIFI连接类,提供简单的接口以供在各个代码工程中复用。

原创 推荐 点赞0 阅读10000+ 收藏0 评论0 2014-05-12

Android开发实践:WIFI扫描功能的封装

网上关于Android WIFI模块开发的博文已经很多,这里我也想给出我对WIFI模块编程的一些消化结果,将Android的一些API封装类,方便在各个Android APP中复用,简化程序开发的复杂度。

原创 推荐 点赞0 阅读9705 收藏0 评论0 2014-04-13

Android开发实践:用脚本编译Android工程

本文简单介绍了如何使用脚本来编译Android工程,并给出了一份通用编译脚本的示例。

原创 推荐 点赞1 阅读4440 收藏0 评论0 2014-03-02

Android开发实践:Java层与Jni层的数组传递

Android开发中,经常会在Java代码与Jni层之间传递数组(byte[]),一个典型的应用是Java层把需要发送给客户端的数据流传递到Jni层,由Jni层的Socket代码发送出去,当然,Jni层也需要把从Socket接收到的数据流返回给Java层。我简单地总结了一下,从Java层到Jni层,从Jni层到JAVA层,各有3种传递方式,下面用代码示例简单地介绍一下。

原创 推荐 点赞1 阅读10000+ 收藏0 评论0 2014-02-18

Android开发实践:JNI层线程回调Java函数示例

JNI是Java Native Interface的缩写,是Java平台的重要特性,使得Java代码可以方便地与C/C++代码编译生成的动态链接库进行交互。本文主要给出一份示例代码,描述如何在Android的JNI层如何开启一个线程,并在线程中回调Java层的函数。

原创 推荐 点赞2 阅读10000+ 收藏0 评论3 2014-02-12

Android开发实践:检测App的内存占用和泄漏

别以为Android程序是基于Java语言,有强大的垃圾回收机制,就完全不用担心内存问题,其实Android程序也要特别小心你的内存,因为毕竟手机不比PC机,内存是极其有限的,在内存不够的时候,系统随时会Kill掉你的程序。本文主要介绍如何检测应用占用的内存以及如何检测app是否有内存泄漏。

原创 推荐 点赞1 阅读10000+ 收藏0 评论1 2013-12-30

Android开发实践:屏幕旋转的处理2

在Android开发中,涉及到屏幕旋转的地方很多,而且各个函数给出的角度值都不一样,比如 Activity的getRotate,Camera的setDisplayOrientation,Sensor的onOrientationChanged,这些API都会给出一个角度值,这些角度值是如何跟手机当前的旋转方向对应的呢?   在《Android开发实践:屏幕旋转的处理》这篇文章中,我简单地总结了关于Android屏幕旋转的处理,这里我再针对上面提出的问题,再次深入总结一下。

原创 点赞0 阅读5466 收藏0 评论0 2013-12-30

Android开发实践:基于命令模式的异步任务线程

本文设计了一个基于命令模式的异步任务线程,在该线程启动后,在你没有发送命令的情况下,休眠等待;你可以连续向该线程发送一系列的命令,该线程会唤醒,并依次执行你所发送的命令,并在需要的情况下回调通知命令的发生者。

原创 点赞0 阅读1550 收藏0 评论0 2013-12-02

Android开发实践:玩转EditText控件

Android的EditText控件是一个非常常用的控件,用得最多的地方就是做登录、注册页面了,它能为用户提供一个直观便捷的输入框。本文简单总结下EditText控件中比较常用的一些设置,并为每一种设置提供两种方式的实现,一种是在布局文件中实现,另一种是在程序中通过代码动态的设置。

原创 推荐 点赞1 阅读9931 收藏0 评论1 2013-11-28

Android开发实践:用PopupWindow实现自定义Dailog

Android的PopupWindow是个很有用的widget,利用它可以实现悬浮窗体的效果,比如实现一个悬浮的菜单,最常见的应用就是在视频播放界面里,做一个工具栏,用来控制播放进度。本文利用PopupWindow来实现一个通用的Dailog,类似Android系统的AlertDailog,从中学习和掌握有关PopupWindow和Dailog的使用和实现细节。

原创 推荐 点赞0 阅读10000+ 收藏0 评论0 2013-11-26

Android开发实践:线程与异步任务

基于移动客户端的软件特别强调实时性,Android程序更是如此,任何一个程序超过5s没有响应,都会被系统强制杀掉。而且Android也不允许在UI线程中进行任何网络操作,否则就会产生NetworkOnMainThreadException 异常。因此,凡是耗时的操作,都不应该直接出现在UI线程中。今天,我通过最简单直观地示例总结下Android开发中最常用的两种处理耗时操作的方法:一个是线程,另一个是异步任务。

原创 推荐 点赞0 阅读3845 收藏0 评论0 2013-11-21

Android开发实践:布局的平分

本文主要描述了Android开发中有关布局平分的相关技术和实现。从一个简单的任务入手,“如何在水平方向上一左一右均匀地放置两个Button”,有很多种方式可以实现这个功能,在此做一个简单的总结,顺便深入理解下有关 layout_gravity, gravity, layout_weight 等相关概念的原理和应用。

原创 点赞0 阅读7627 收藏0 评论0 2013-11-06

Android开发实践:屏幕旋转的处理

最近开发Android Camera相关的程序,被屏幕旋转搞得头大,一方面得考虑屏幕旋转后布局的变化,另一方面得搞清楚屏幕的旋转方向、角度与Camera的Preview角度的关系。本来通过重载Activity的onConfigurationChanged方法,可以检测到屏幕旋转,但发现有一个问题,它只能检测水平方向与垂直方向的切换,无法检测180度的跳转(例如:水平方向突然转180度到水平方向),所以最后不得不换成OrientationEventListener方法来解决问题。在这里分享下经验,并就此顺便总结下Android开发中屏幕旋转的处理吧。

原创 推荐 点赞3 阅读10000+ 收藏1 评论1 2013-09-24

Android开发实践:多级列表的封装与应用

Android中多级列表可以使用ExpandableListView和SimpleExpandableListAdapter配合来实现,其中,SimpleExpandableListAdapter用起来挺麻烦的,不易理解,而且扩展性也不好,因此,自定义BaseExpandableListAdapter类的子类以及封装相关的操作,用起来会更加直观和方便,我把我设计的封装贴出来供新手参考吧。

原创 推荐 点赞2 阅读4436 收藏0 评论0 2013-09-05

Android开发笔记:图标尺寸的约定

本文主要描述了Android开发中,图标(icon)大小尺寸如何确定,并简单地描述了px,dp,dpi以及它们与不同尺寸的Android手机的关系。

原创 点赞1 阅读10000+ 收藏0 评论0 2013-08-03

Android开发技巧:给Button的点击上色

UI设计中,按钮一般都会有多个状态,比如:聚焦、点击等,不同的状态必须显示不同的呈现形式(比如颜色、形状的改变),这样用户才能感觉到按钮被成功选中、点击了,否则用户体验就会非常差了。 本篇文章就简单地描述一下Android开发中,如何动态改变Button状态切换时的背景。

原创 点赞2 阅读10000+ 收藏1 评论0 2013-07-30

Android开发技巧:动态创建UI界面

Android的基本UI界面一般都是在xml文件中定义好,然后通过activity的setContentView来显示在界面上,这是Android UI的最简单的构建方式。其实,为了实现更加复杂和更加灵活的UI界面,往往需要动态生成UI界面,甚至根据用户的点击或者配置,动态地改变UI,本文即介绍该技巧。

原创 推荐 点赞3 阅读10000+ 收藏0 评论1 2013-07-24
写文章