欢迎访问小程序员!

写在前面的话: 这篇文章是前Firefox Android工程师(现在跳槽去Facebook了) Lucas Rocha所写,文中对Android中常用的四种自定义布局方案进行了很好地分析,并结合这四种Android自定义布局方案所写的示例项目讲解了它们各自的优劣以及四种方案之间的比较。看完这篇文章,也让我对Android 自定义布局有了进一步的了解,于是趁着兴头,我把它翻译成中文,原文链接在此。 只要你写过Android程序,你肯定使用过Android平台内建的几个布局——RelativeLayout,  ....

RoboBinding简介 RoboBinding是一款基于Android的数据绑定组件,它可以帮助你编写可读性强、容易测试以及性能优越的Android UI应用。RoboBinding有以下几个特点: 为了精简框架,RoboBinding移除了大量不必要的代码,比如addXXListener(),findViewById()等。 可以将难以测试的Android代码转换为普通的JUnit测试。 提供对象类型Cursor来替换 - 关系类型Cursor,因为我们已经习惯于操作对象 。 可以很容易的为任何自定义 ....

在讲正题之前我们讲一段有关任务传递的小故事,抛砖迎玉下: 话说一家软件公司,来一个任务,分派给了开发经理去完成: 开发经理拿到,看了一下,感觉好简单,于是 开发经理:分派给了开发组长 开发组长:分派给了自己组员(程序员) 程序员:分派给了自己带的实习生。 实习生:好苦逼,无法分派,怎么办啊?只能自己干了 但是实习生能不能做好,有两种情况了。 情况一: 实习生:经过一段时间的研究,琢磨,熬夜,奋斗,死敲,皇天不负有心人啊,完成了。 后来又来一个类似的任务,也按着这样传递下去了(开发经理->开发组长-&g ....

      一开始接触android应用项目时,在项目快上线时策划要求加个高亮,每次都是直接从网上百度一下,现在做游戏了,却还是这个需求,这里备份一下方便后续的查找,毕竟是自己写好且验证没问题的 :)   首先,在Activity里添加一下代码: 成员变量: private PowerManager.WakeLock wakeLock = null; 重写父类Activity的两个方法并添加一下逻辑: @Override public void onResume() { ....

TextView中的setHighlightColor(int color)用于设置选中文字背景色高亮显示。  比如以下: public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FrameLayout f ....

问题:  多activity中退出整个程序,例如从A->B->C->D>E,这时我需要从E直接退出程序。  finish()和system(0)都只能退出单个activity。杀进程等的等方式都不行~~~  解决问题:  我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在D窗口打开A窗口时在Intent中直接加入标志Intent.FLAG_ACTIVITY_CLEAR_TOP,再次开启A时将会清除该进程空间的所有Activity。  在D ....

Android中全屏 及 去掉标题栏 《去掉标题栏的方法》 第一种:入门的时候经常使用的一种方法 requestWindowFeature(Window.FEATURE_NO_TITLE); // 去掉标题栏 注意这句一定要写在setContentView()方法的前面,不然会报错的 第二种:在AndroidManifest.xml文件中定义 < application android:icon ....

现在做的项目中,有用到一个开源的2D地图框架osmdroid,但是在项目中,使用还是有一些问题,例如,多个地图实例,会有独自的图片缓存,Activity onPause时,并不会释放图片缓存,如果多级界面都有地图的话,可能会造成很多手机内存溢出(按照每个瓦片256*256,屏幕1280*720来算,显示一个屏幕的地图,至少要在内存保存15张图片,占用内存256*256*4*15=3.75M),所以还是得针对项目做一定的修改调整。今天将项目中使用到的图片缓存做一个整理。 首先说下整体的图片加载流程: 1、内存 ....

接上篇Android-WebView集成iScroll4之input框无法获取焦点,发现开始点击列表的标题,下载附件特别好使,直接可以调本地的工具打开附件。   附件下载的做法是服务端的web页面提供a标签,将要下载附件的ftp地址给href,当在android访问这个页面,点击标题对应的链接时,android端会触发webview的DownloadListener事件,去ftp下载附件,并调用本机的软件将其打开。 //设置WebView的DownloadListener: webView.setDow ....

最近给公司做一个企业App,Android客户端+Java服务端,总共有十几个模块,其中有几个模块就是从服务端查询数据,手机上的功能有列表展示及下载附件。   我是做Java服务端开发的,不会Android,另外有android开发人员,经过讨论决定这块手机直接访问Java服务端(Java web系统)的页面,源自于开始给公司一个pad应用,也是光查询数据用,采用的是Android的webview访问web的一个url。   其实webview这种做法,最简单,省事,省成本,不用纯Android开发,web ....

ListView绝对可以称得上是 Android 中最常用的控件之一,几乎所有的应用程序都会用到它。由于手机屏幕空间都比较有限,能够一次性在屏幕上显示的内容并不多,当我们的程序中有大量的数据需要展示的时候,就可以借助 ListView来实现。ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕。相信你其实每天都在使用这个控件,比如查看手机联系人列表,翻阅微博的最新消息等等。不过比起前面介绍的几种控件,ListView的用法也相对复杂了很多。 ListV ....

两个单独的Fragment之间是不应该进行通信的。应该使用他们所存在的Activity作为沟通的纽带。  Activity中可以获得Fragment的管理器 //获得Fragment的管理器 FragmentManager manager = this.getFragmentManager(); //使用findFragmentById获得Fragment的id SecondFragment second = (SecondFragment) manager .findFragmentByI ....

1、整型,比如“我今年23岁了”,这个23是整型的。在string.xml中可以这样写,<string name="old">我今年%1$d岁了</string>  在程序中,使用  [java]  view plain copy String sAgeFormat = getResources().getString(R.string.old);   String sFinalAge = String.format(sAgeFormat, 23);   将%1$ ....

概述 虽然现在5.0后Google推出了RecycleView,但在5.0 Lollipop普及前Listview仍会被广泛使用,所以打算再次探究一下Listview的源码,了解一下Listview 的构成及加载机制。 探究 上图简单梳理了Listview的构成及与其相关类之间的关系,并简要地列出了些重要的方法和内部类。 AdapterView 从上图可以清晰的看出Listview归根究底是继承自AdapterView。AdaterView是一个抽象类,一些最基本和通用方法或接口都是在此定义或声明的,其中一 ....

近日,Android Developers在Google+上宣布了新的Multidex支持库,为方法总数超过65K的Android应用提供了官方支持。 如果你是一名幸运的Android应用开发者,正在开发一个前景广阔的应用,不断地加入新功能、添加新的类库,那么终有一天,你会不幸遇到这个错误: Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 这个错误是Android应用 ....

循环录像,听起来是不是很高大上,其实原理就是检测内存卡容量,少于一定值就自动删除指定的文件夹,这个做监控或者行车记录仪会用得着。 /** * 循环录像,当内存卡容量少于300M时,自动删除视频列表里面的第一个文件 */ private void xunhuanluxiang() { if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { File path = En ....

昨晚整合apache和php是实在找不到解决办法,Google 百度都转一圈了,总算在百度找回来解决方法,记录一下,这个问题是在apache启动时出现的: ./apachectl start 提示下面的错误: httpd: Syntax error on line 57 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache ....

Fragment是Android中的重要组件,在Android 3.0的时候添加进来。 关于Fragment的生命周期,我相信了解过的开发人员都应该把以下方法脱口而出:onAttach, onCreate, onCreateView, onViewCreated, onActivityCreated, onStart, onResume, onPause, onStop, onDestroyView, onDestroy, onDetach. 当Fragment以静态的方式,即通过在布局文件中以其它控件的方 ....

Fragment是Android中的重要组件,在Android 3.0的时候添加进来。 关于Fragment的生命周期,我相信了解过的开发人员都应该把以下方法脱口而出:onAttach, onCreate, onCreateView, onViewCreated, onActivityCreated, onStart, onResume, onPause, onStop, onDestroyView, onDestroy, onDetach. 当Fragment以静态的方式,即通过在布局文件中以其它控件的方 ....

当一个列表项目很多,并且每个项目可以进入到其它Activity或者Fragment时,保存之前列表的位置是一个比较不错的功能, 今天研究了一下怎么保存浏览位置,发现GridView和它的父类中有4个相关的方法: public void smoothScrollToPosition (int position) 滚动到position指定的位置,api level 11之下可用 *当你滚动完后,返回列表,能正常滚动,但是你再次从列表的项目返回后,滚动失效,就是只能滚动一次,我认为这是一个Bug。然后我在Miu ....