20个帮助提高开发技巧的开源 Android App

学习的最好方法是阅读,对于开发人员也是如此。如果你想成为一个更好的开发人员,你必须阅读更多的代码。就这么简单。 书籍、博客、论坛在某种程度上都是不错的,但一些功能齐全的详解的开源项目依然是无可替代的,整个应用中包含的所有资源都展现在你面前。 所以你需要做的就是坐下来、喝杯咖啡、拜读下很棒的代码。在这篇文章中,我们提供了一些来自各种类别和风格的最好的开源 Android 应用程序,以满足你所有的学习和开发需求。 在深入代码之前,你可以直接从 Play Store 中试用这些应用程序。每个应用程序附带的难度级别将帮助你判断是否应该立即深入了解它或暂时放在一边。 LeafPic (Github | Play Store | 难度: 入门级) 照片和视频画廊应用是安卓系统最常见的一种应用。有没有想过他们是如何制作的? LeafPic 是最好的开源画廊应用之一,你可以试着使用它学习。 它非常简单,容易理解,而且完全适合任何初学者开发人员。同时我发现这个应用最好的一件事情就是实现了动态主题。这是许多 Android 开发人员难以正确实现的。 Simple Calendar (Github | Play Store | 难度: 入门级) 一个纯粹使用 Kotlin 开发的又简单又易用的日历应用。如果你想要学习 Kotlin ,这可能是最好的入门方法之一。 这个应用的目标非常简单,就是让你亲力亲为的通过开发 Android 应用来学习一门全新的语言。还有一件更酷的事情就是你能够学习到如何开发一个自定义的 Android 桌面工具。 Amaze File Manager (Github | [ur=”https://play.google.com/store/apps/details?id=com.amaze.filemanager”l]Play Store[/url] | 难度: 中等) 一个非常常见的安卓文件管理器,你能在几乎所有安卓设备上使用它。 尽管开发一个文件管理器应用初步看起来很简单,但是实际上想要良好地运行在所有安卓平台和设备上是很难的。 从这个应用中你可以学到很多东西,尤其是怎么适当处理 […]

免费的Android UI库及组件推荐

短短数年时间Android平台就已经形成了一个庞大而活跃的开发者社区。许多社区开发的项目业已进入成熟阶段,甚至可以用于商业的软件生产中,且不用担心质量问题。 本文编译自androiduipatterns,意在分享一些免费、开源的Android UI库及组件资源。 一、UI组件库 1. GreenDroid  该项目可以实现下列的UI设计: 动作栏(Action Bar) 快捷动作(Quick Action) 工作区(Workspace) 动态列表(Dynamic List) 以及许多更有用的组件。 项目网站 / 示例 2. ActionBarSherlock  在Google针对手机的动作条API推出前,该项目一直与ICS一起使用。Jake最近将项目拓展到了动作条之外。这里也有针对工作区等的组件。 项目网站 / 示例 3. Android Compatibility Package 这是一个来自Google Android库的官方扩展。Compatibility Package顾名思义就是Android官方针对旧平台版本所不支持的API或是Android Framework没有提供的函数库,将其打包发布。它包含了许多非常有用的API。该包同样包含工作区UI设计的实现。 项目网站 二、UI组件 1. iosched  这是一个官方的Google I/O的应用(同样可用在GDD,Google Developer Day)(注:Google I/O是Google每年都会举办的历时两天的开发者大会,该大会谈及各种技术问题。开发人员会提供非常多的示例来展示他们的技术。这个项目专门为了这个会议提供了一个Android应用程序。)。该应用程序实现了大量的UI设计,成为Google Android设备拥护者的参考标准。强烈推荐使用该应用程序的仪表盘UI设计模式。(Google代码链接:Dashboard.java) 项目网站:http://code.google.com/p/iosched/ 2. Android-Viewflow  该项目的工作区UI设计模式与Google Docs所使用非常相似。 项目网站:https://github.com/pakerfeldt/android-viewflow 3. android-coverflow  该项目可以用于完成一个cover flow。在这个项目网站的视频中可以得到更多的信息。 项目网站:http://code.google.com/p/android-coverflow/ 4. android-viewbadger  该项目让devs无需修改布局文件(layout file)即可显示badges。 项目网站:https://github.com/jgilfelt/android-viewbadger 5. […]

Android模拟器镜像文件介绍

. Android模拟器采用的是开源工程Qemu,Qemu是Linux 下的著名模拟器 2. kernel-qemu是内核镜像 3. ramdisk.img是文件系统,如果你自己编译了android的源代码,它的内容为 out/debug/target/product/generic/root,mount到android的/ 4. system.img主要存放系统数据,android启动后mount到/system 它包含的内容为out/debug/target/product/generic/system 5. 一般来说我们不直接使用userdata.img,而是使用userdata_qemu.data,用来存放用户数据,可读写,android启动后mount到 /data。只有使用-wipe-data参数启动模拟器是时候才会用到userdata.img,它会使用userdata.img的内容覆盖 userdata-qemu.img userdata.img的内容为out/debug/target/product/generic/system 6. 如果您没有编译android的源代码,我们也可以知道ramdisk.img、system.img和userdata.img的内容。 1). 查看ramdisk.img内容 terminal中进入sdk的images目录,执行file * 我看可以看到ramdisk是一个gzip文件,我们可以解压这个gzip文件,解压前先备份一下 然后在terminal中运行 localhost:images wuvincent$ gzip -d -S .img ramdisk.img 然后运行 localhost:images wuvincent$ file ramdisk 执行后会显示这个文件是一个cpio文件,于是我们可以把它解压到一个目录下,依次执行如下命令 localhost:images wuvincent$ mkdir ramdiskdir localhost:images wuvincent$ cd ramdiskdir localhost:ramdiskdir wuvincent$ cpio -idmv <../ramdisk 我们就可以进入ramdiskdir看到ramdisk.img的内容了。 其中最主要的几个文件时init init.rc init.goldfish.rc 2). 查看system.img和userdata-qemu.img內容 […]

Android 盘点所有Dialog 对话框 大合集 详解

雨松MOMO带大家盘点Android 中的对话框 今天我用自己写的一个Demo 和大家详细介绍一个Android中的对话框的使用技巧。 1.确定取消对话框 对话框中有2个按钮   通过调用 setPositiveButton 方法 和 setNegativeButton 方法 可以设置按钮的显示内容以及按钮的监听事件。 我们使用AlerDialog 创建对话框 AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this); 使用builder设置对话框的title button icon 等等 builder.setIcon(R.drawable.icon);        builder.setTitle(“你确定要离开吗?”);        builder.setPositiveButton(“确定”, new DialogInterface.OnClickListener() {            public void onClick(DialogInterface dialog, int whichButton) {                //这里添加点击确定后的逻辑                showDialog(“你选择了确定”);            }        });        builder.setNegativeButton(“取消”, new DialogInterface.OnClickListener() {            public void onClick(DialogInterface dialog, int whichButton) {                //这里添加点击确定后的逻辑                showDialog(“你选择了取消”);            }        });        builder.create().show(); 这个dialog用于现实onClick后监听的内容信息 private void showDialog(String str) { w AlertDialog.Builder(MainDialog.this)      .setMessage(str)      .show(); } 2.多个按钮信息框 AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this); builder.setIcon(R.drawable.icon); builder.setTitle(“投票”); builder.setMessage(“您认为什么样的内容能吸引您?”); builder.setPositiveButton(“有趣味的”, new DialogInterface.OnClickListener() {     public void onClick(DialogInterface dialog, int whichButton) {         showDialog(“你选择了有趣味的”);     } }); builder.setNeutralButton(“有思想的”, new DialogInterface.OnClickListener() {     public void onClick(DialogInterface dialog, int whichButton) {         showDialog(“你选择了有思想的”);     } […]

Android开发几个必去的网站

1 Eoe Android开发者门户 简介:有许多技术性文章,人气很旺,经常有些很酷的android设置,android新闻报道的不是很及时 网址: http://www.eoeandroid.com/portal.ph 2 移动App资讯站(推荐) 简介: Android开发者必去的一个网站,可以及时了解android开发全球最新消息,同时也有最新手机软件开发业内报道有句很经典的话 只有NEWS. 网址: http://www.ydapp.com/ 3 Android Police 简介:国外的网站,主要报道最新Android产品 网址:http://www.androidpolice.com/ 4 有米广告 简介:这个应该大家不陌生吧国内第一家移动APP广告商 ,广告单价很高 网址: http://www.youmi.net/ 5 移动Labs(中国移动研究院) 简介:经常出一些经典的文章比较深入的说明移动开发行业动态.了解行业走向,及发展趋势. 网址: http://labs.chinamobile.com/

Android Developer Income Report

A lot of people says that there is no real money in the Android development. They say that if you want to make money you should write for iPhone, iPad and all other iThings… This is not true! I am not a one of guys that is making thousands of dollars but my income seems […]

Android application四大组件的作用

我简要的介绍下这四大组件,希望与你们一起学习共同进步! Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑 service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的食物,定义好需要接受的Intent提供同步和异步的接口 Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的借口模型,大大简化上层应用,对数据的整合提供了更方便的途径 BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型

Android多线程断点续传下载文件类设计

对于Android平台,很多网友可能考虑开发一个软件商店,对于Android平台上如何实现断点续传操作呢? 这里给大家一些思路和原理的介绍,同时在Android手机上要考虑的一些事情。 1. 流量控制,获取运营商的接入方式,比如说使用移动网络接入,尽可能的提示用户切换WiFi或提示,限制下载的流量以节省话费。 2. 屏幕锁控制,屏幕锁屏后导致应用会被挂起,当然Android提供了PowerManager.WakeLock来控制。 3. 对于断点续传,这要追溯到Http 1.1的特性了,主要是获取文件大小,如果这个无法读取的话,那么就无法断点续传了只能使用chunked模式了,当然获取远程服务器上文件的大小可以通过Http的响应头查找Content-Length。 4. 获取上次文件的更改时间,对于断点续传来说比较有风险的就是 继续下载的文件和早期下载的在server上有变动,这将会导致续传时下载的文件版本和原始的不同,一般有两种解决方法,早期我们配置服务器时通过Last-Modified这个http header获取文件上次修改时间,不过本次Android开发网推荐使用更为强大的ETag,ETag一般用于解决同一个URL处理不同返回相应,比如Session认证,多国语言,以及部分黑帽的SEO中。具体的实现大家可以参考RFC文档。 5. 考虑服务器的3xx的返回,对于专业的下载文件服务器会考虑到负载平衡问题,这就涉及到重定向问题,处理重定向使用Android的Apache库处理比较好。 6. 至于多线程,这里CWJ提示大家可能存在独立的线程下载一个文件,和多个线程分块下载单个文件之分,其中后者需要考虑上次下载数据是否存在问题,同时如果服务器不支持文件大小获取,则无法通过分段下载数据,因为不知道如何分段,所以在chunked模式中,只能使用一个线程下载一个文件,而不是多个线程下载一个文件。 7. 下载后的数据效验,可以考虑CRC等方式,当然对于一般的传输只要逻辑不出现问题,基本上不会有偏差。 8. 考虑DRM问题,这个问题在国内用的比较少,而国外的受数字保护的音乐和视频,需要额外的获取证书等。 9. 重试次数,对于一个文件可能在本次网络传输中受到问题,尤其是移动网络,所以可以设置一定的重试次数,让任务单独的走下去。 10. 线程开发方式,这里如果你的Java基础比较好,推荐直接使用Java并发库API比较好,如果过去只做过Java开发使用Thread即可,如果Java技术不过关可以Android封装的AsyncTask。 原文地址:http://www.android123.com.cn/androidkaifa/932.html

android 如何保存簡單的配置信息(SharedPreferences、File和Properties)

我們知道在android的開發中,保存項目私有數據的存儲方式我們可以使用:SharedPreferences,File,SQLite,Network.四種方式,而要用到應 用程序之間數據的共享要使用ContentProvider 。那今天我們只敘述一下僅僅保存一些我們登錄等的一些配置信息的數據,也就是說用到的數 據量都不是很大,那麼我們就可以選擇SharedPreferences和File的方式。這裡只針對性的結合File和Properties進行敘述。 一。SharedPreferences 1. 它可以保存上一次用戶所做的修改或者自定義參數的設定,當再次啟動程序後依然可以保持原有的設置。這裡只說明一下使用方式。比如下 面的代碼在OnCreate中使用: SharedPreferences mSharedPreferences = getSharedPreferences(“list”,MODE_PRIVATE); String mTempString = mSharedPreferences.getString(“config”,”default”); 其中”list”是SharedPreferences的文件的名字,SharedPreferences是以鍵值映射的關係存放數據。不過多解釋,你也可以這樣用: SharedPreferences mSharedPreferences = getPreferences(MODE_PRIVATE); 這樣默認的文件名是activity的名字。 2. 退出activity的時候保存數據,在OnPause中使用: SharedPreferences mSharedPreferences = getSharedPreferences(“list”,    MODE_PRIVATE); mSharedPreferences.edit().putString(“config”,”data” ).commit(); 3. SharedPreferences 是以xml文件的方式自動保存的,在DDMS中的FileExplorer中展開/data/data/包名/shared-prefs下面就是SharedPreferences文件。 4. SharedPreferences文件只可以用來存放基本的數據類型。 二。結合File和Properties進行保存。 A Properties object is a Hashtable where the keys and values must be Strings. Each property can […]

Google Android Tutorial

Google has recently released the Android platform for developing mobile applications. The language used for developing Android programs is Java, but it is not Java Micro Edition.  No wireless application developer can ignore  Android. Google is the best known brand name, among the users of the web and Android comes from Google.  I am presenting this […]