- 浏览: 1005023 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (675)
- ios (214)
- android-course (5)
- unity3d (7)
- cocos2d (36)
- html5 (3)
- game (5)
- android (42)
- java (57)
- php (12)
- 创业 (10)
- SEO (3)
- 架构 (2)
- 数据库 (3)
- 产品设计 (9)
- 操作系统 (10)
- Web前端 (11)
- 其他 (50)
- GAE (1)
- mac os (8)
- Open Source (2)
- 序列号 (10)
- C (2)
- database (2)
- 算法 (6)
- 设计模式 (1)
- photoshop (1)
- 3dmax (1)
- maya (1)
- opengl (3)
- 游戏设计 (1)
- 趋势 (1)
- cocos2d-x (4)
- shell (3)
- c++ (30)
- lua (5)
- flash (1)
- spring (3)
- mysql (4)
- Git (6)
- xmpp (1)
- cocos2dx (14)
- mac (2)
- 编程规范 (2)
- windows (1)
- linux (5)
- coocs2dx (1)
- ubuntu (2)
- aws (1)
- OPENGLES (1)
- 原画 (1)
最新评论
-
jlees:
Best mobile app testing tool pc ...
iOS + XCode 4 + GHUnit = Mobile TDD+Continuous testing -
ipanda:
楼主,能否给一个Micro CloudFoundry的虚机或者 ...
Cloud Foundry使用及开发向导 -
love_zongming:
谢谢分享。。
visio2007序列号 -
雨花台舞水:
你这才是枪文把
套在 360 黑匣子外面的黑盒子:你被技术型枪稿吓到了么? -
hugh.wang:
改天试试
Mac版魔兽争霸3 1.24e下载
一、何谓Library Project:
关于Library Project的官方详细解释可以参考这里,对英语不感冒的同学,可以参考我的简单解释:如果有一部分代码被多个工程共享了,那么这个时候把它做成库来加载,是最好的选择。在Java中,我们一般采用Jar包的形式提供库文件,但是在Android开发中,官方并不赞成打包为Jar包的方式,虽然在网上可以搜到一些“旁门左道”把资源打包成Jar包。而个人感觉Library Project的一个最大缺点就是库工程文件是展开的,这样工程文件“可以修改而不是只读”。
*说明:本文中的操作均利用Eclipse with ADT实现的。
二、如何创建Library Project:
Library Project和Standard Project的创建方式是一样——均是新建一个Android Project。
在创建工程的时候,要注意,如果库工程中有 <activity>、 <service>、<receiver>或者 <provider>等,在用户工程的manifest.xml文件中均需要有专门的声明,详见官方说明。
工程创建完毕以后,打开工程的属性配置,并选择到Android一项中,勾选“is library”:
然后,再创建(或者选中已有的)一个用户工程,同样选择工程属性,然后在Library面板中添加刚才的库工程:
整个添加过程就结束了。这里有一个疑难杂症提醒一下大家:如果在你完成了上诉步骤以后,发现在用户工程中仍然无法正常索引库工程的内容,Eclipse的自动补全系统也不能帮你添加import,甚至你手动添加了import都还是不能识别,那么,尝试重启一下你的Eclipse吧。
三、针对 Library Project的一些讨论:
1. 库文件需要Activity么?
从功能上讲,Android官方为大家提供了为库工程添加一切类型的可能性,然而这并不意味着我们就一定要这么做。
例如在我这次写的工程中,库工程的主要作用就是提供一个LinearLayout对象,里面躺着我的签名板。于是我有两个选择:1、提供一个LinearLayout对象;2、提供一个Activity对象。
通常情况下,我们会发现,采用前一种方法会令库工程更加灵活,因为如果提供一个Activity,就意味着我们必须提供它一些修饰信息:是否全屏,大小,配色以及Intent的读取和写入。这些都是与用户工程息息相关的,而对于签名板来说,则是多余的。
然而,如果我们提供的功能是类似于“弹出警告框”,那么或许提供一个直接的Activity会比较方便,虽然在配色方面极有可能与用户工程格格不入,但是作为一个简单的弹出框,它的影响是有限的。(想想平时我们用的各种绚丽的桌面应用,它们的报错框往往采用的是window默认提供的样式。)
2、如何让界面大小更加灵活(上)?
在我提供的例子中,需要为WhiteBoard的构造函数提供签名板的长宽。这个细节值得大家注意,它也消耗了我很多时间来研究相关的函数和逻辑。
首先,我们能想到的,这两个长宽的提供一定与承载它的界面大小相关,所以我们需要读取父控件的长宽:
final LinearLayout layout = (LinearLayout) this.findViewById(R.id.lv_main);
int width = layout.getWidth();
然而如果getWidth这个函数是在Activity的onResume方法执行完之前调用,得到的仅可能是“0”。一个简单的解决方案就是将getWidth方法搬到其他地方读取——等onResume方法执行完毕以后再调用。否则就只有是读取窗口的大小了——关于在加载初期获取界面大小的方法暂时没有找到。
另外,在获取了父控件的大小以后,下一步需要考虑的就是这个值会不会太小了。这个问题看似简单,解决起来却非常繁琐,就像许多网页开发者常常忘记考虑用户浏览器窗口可能处于任何大小的情况。一个最简单的办法,就是考虑一个“最小长宽”的设计,如果窗口过小,就隐藏部分生成的信息。这点请参考我的WhiteBoard类下的calcHeightOfTopBorder方法。
3、如何让界面大小更加灵活(下)?
接刚才所述,现在介绍calcHeightOfTopBorder方法中的一些技术。
在这个方法中,我的目的是读取图标的大小,并把他最为“最小长宽”的重要参考。正如一开始所讨论的,我们无法在界面加在好之前读取界面长宽,因此我们无法直接读取使用了图标的ImageView控件的大小。于是,我们直接去读取图标的大小。加载图标的办法可以参考官方对BitmapFactory类的介绍,这里我们要与大家分享的则是一个技巧:那就是在我们加载图标的时候,如果提供了一个BitmapFactory.Options,并将其中的属性“inJustDecodeBounds”设置为True,则实际上BitmapFactory类不会真正加载图片,而仅仅是读取长宽保存在BitmapFactory.Options的outWidth和outHeight变量中。这样,我们就节省了很大的内存空间:
BitmapFactory.decodeResource(this.context.getResources(), R.drawable.whiteboard_cancel, tempImage);
maxheight = maxheight > tempImage.outHeight ? maxheight : tempImage.outHeight;
转载自:http://www.mielf.net/featherelf/simple-android-library-project
发表评论
-
Android监听键盘是否弹出,以及获取软键盘的高度
2015-07-02 19:31 1451网上介绍过监听键盘是否弹出的方法,我自己也是尝试过,不是 ... -
linux安装android NDK
2015-04-20 19:14 1868Error:Execution failed for ta ... -
android studio 添加项目修改gradle2.2.3
2015-04-20 15:22 15611.build.gradle(Module:app) 去除对 ... -
Android.mk无需手动添加cpp文件(cocos2d-x 3.2正式版)
2014-09-11 14:41 991LOCAL_PATH := $(call my-dir) ... -
cocos2dx 在android中编译
2014-08-08 17:11 8011在全局环境变量中设置NDK_ROOT -
android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据
2014-08-07 16:54 2521为了实现这个功能可折腾了我好久,先上一份代码,经楼主验证是绝 ... -
用Gradle 构建你的android程序
2014-03-21 17:15 798前言 android gradle 的插 ... -
Hackborn的吐槽和Munn的剖析: Android graphics低性能背后的真像
2013-10-23 14:52 760Google+上有意思的讨论 ... -
mac 不识别 android samsung手机
2013-10-21 16:30 1834使用Mac开发Android时,有可能无法识别手机,可以通过 ... -
Mac下配置Android NDK环境并搭建Cocos2d-x环境并Eclipse正常编译运行Cocos2dX自带TestsDemo项目!
2013-04-04 00:58 1158大家都知道Cocos2d-X是个多平台支持的游戏引擎,那么 ... -
让Java跟Javascript更加亲密
2013-04-02 22:30 1108在移动App开发中,为了快速迭代,通常都会使用Native+ ... -
技术文章收藏夹
2013-02-13 19:59 779COCOS2D-X跨ANDROID&IOS平台开发入 ... -
eclipse failed to create the java virtual machine 问题图文解析
2013-01-27 11:16 655解决方法: 1.问题现象 2.java虚拟机初始化失败 ... -
cocosd-android原来是个山寨货
2012-06-13 09:25 9491、技术团队无优势:Cocos2D-Android版本与iPh ... -
How Secure Are Query Strings Over HTTPS?
2012-03-09 12:29 1234A common question we hear is ... -
Android禁止横屏竖屏切换
2012-04-20 00:13 1666在AndroidManifest.xml的activity(需 ... -
Facebook还发布了Ringmark手机浏览器测试套件
2012-02-28 09:17 1057Facebook还发布了Ringmark手机浏览器测试套件 -
图解 Android 广播机制
2012-02-16 16:35 883从现实生活中理解广播机制 一听到广播我们第一感觉就会联 ... -
Handling Android 2.3 WebView's broken AddJavascriptInterface
2012-02-12 15:05 1428The Google Android team rele ... -
Error executing aapt解决
2012-02-11 23:31 4519安装完SDK和ADT时貌似出现些问题。 Description ...
相关推荐
Android创建Library Project(库项目)与引用操作,演示案例与相关基本操作
android library jar文件混淆
Library: BibTeX on Android License: Library is free software ...$ android update project --path . --target 1 You can then perform a debug build by running $ ant debug You can now copy the resulting
混淆打包Android library工程的混淆配置文件
Android library
图书管理系统jsp+mysql。
A library to easily show open source (GitHub) project contributors Screenshots Usage Add dependency to your build.gradle compile 'com.github.alorma:githubcontributors:0.0.1' new ...
SDK Manager中Extras下没有Android Support Library.docx
project website for how to use this library. IMPORTANT: By default, this library will only detect beacons meeting the AltBeacon specification. If you want this library to work with proprietary or ...
This library is distributed as Android library project so it can be included by referencing it as a library project. https://bintray.com/filestack/maven/filepicker-android If you use Maven, you can in
下载后,解压出来就是一个包含很多内容的support文件夹,将support文件夹复制到/sdk/extras/android文件夹下即可,这时SDK Manager 中 Extras列表下就显示了Android Support Library
Sharp is a Scalable Vector Graphics (SVG) implementation for Android. It facilitates loading vector graphics as SharpDrawables, and can effectively be used wherever a conventional image would be ...
第一个为生成中间文件,第二个为合并资源和dex代码为apk文件,第三个为签名文件,主要修改在第一、二个文件内,使用测试时,请先把对应项目路径变量改为你自己电脑上的项目路径,同时把第三个文件中的签名证书换成...
android support library包含support v4,support v7等android兼容库
Android library 一行代码为View设置阴影
Android Studio中多项目共享Library Demo
该文件夹是Extras/Android Support Library 的解压包 使用方法:必须先用sdk manager.exe安装了其他的依赖包后,再使用(不然找不到extra文件夹)。 直接复制该文件夹到Android sdk目录下的extras/android 下即可 ...
解决SDK Tools下没有Android Support Library的问题,包含support v4,support v7等android兼容库,内含操作说明
Android support Library v23 Extras列表下没有的,可以下载并解压到目录/sdk/extras/android文件夹下。
android support library 23android support library 23android support library 23android support library 23android support library 23android support library 23android support library 23android support ...