android
hmg25
这个作者很懒,什么都没留下…
展开
-
android 属性系统
<br />每条属性包含了名字和其对应的值,两者都用字符串来描述。Android系统中大量的使用了属性系统用于记录系统的设置(注:和windows系统里的注册表类似),以及进程间的 信息交互。属性系统对于整个系统来说是全局的,也就是说每一个进程都可以获取和设置每条属性。<br /> <br />当系统初始化的时候,Android系统会分配一块共享内存用于存储属 性信息。这些操作是在"init"这个守护进程里完成的,其对应的源 代码目录在:device/system/init。"init"守护进程同时也启动了原创 2011-02-23 18:01:00 · 1476 阅读 · 1 评论 -
FrameLayou和UI的布局优化
<br /> FrameLayou和布局优化<br /><br />FrameLayout 先来看官方文档的定义:FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。<br /> 我的理解是,把Frame原创 2011-02-23 17:34:00 · 2680 阅读 · 1 评论 -
给android加入关屏
<br /> 修改policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java按照上一个博客修改关机菜单的方法添加个关屏菜单。其实如果硬件能定义一个专门关机的键会比较好 长短按有区别的对待。挂断短按如果要关屏的话 就要加入电话判断是不是通话?<br />修改frameworks/base/core/java/com/android/internal/app/ShutdownThread.java添加关屏代码i原创 2011-02-23 17:50:00 · 7488 阅读 · 1 评论 -
定制关机弹出菜单
<br /> <br />在Android系统中,长按Power键默认会弹出对话框让你选择“飞行模式”,“静音”,“关机”等功能。这些功能对于手机非常适用,但是对于机顶盒产品就没有什么必要了。本文简单介绍一下怎样定制关机界面。<br /> 我的目标是长按Power键,将会关机,弹出“设备将要关机”选择对话框。如果可以选择“是”关机,和“否”返回系统。<br /> 弹出对话框的代码位于:frameworks/policies/base/phone/com/android/internal/原创 2011-02-23 17:51:00 · 2228 阅读 · 0 评论 -
实现按键旋转屏幕
<br />通过长按menu按键,可以旋转屏幕方向(0°或者90°),这个功能有时蛮有用的,下面来看看是如何实现的: <br />1 修改按键处理程序<br />frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java<br />函数<br />public boolean interceptKeyTi(WindowState win, int code, int metaKeys, boo原创 2011-02-23 17:56:00 · 2640 阅读 · 0 评论 -
android的PreferenceActivity
前言 这段时间在研究android平台上的开源项目——StandupTimer,这是由jwood所设计的一个较为简单android应用,用于控制会议时间,类似秒表倒计时。PreferenceActivity PreferenceActivity是android提供的对系统信息和配置进行自动保存的Activity,它通过SharedPreference方式将信息保存在XML 文件当中。使用PreferenceActivity不需要我们对SharedPreference进行操作,系统会自动对Activity转载 2011-03-22 10:03:00 · 3519 阅读 · 0 评论 -
如何使用eclipse单独调试android系统的app
<br />修改系统的app的时候,如果需要编译整个工程,那的确很慢。 <br /><br />虽然强大的make功能可以方便的使用mm只编译修改了的那个应用。 <br /><br />单独的一个应用跑起来才够快。 <br /><br />做法是这样: <br /><br />一次编译过后(比如你改了framework,有新的修改在里面) <br />把out/target/common/obj/java_libraries/ <br />里面的相关jar考出来作为工程的jar source library原创 2011-03-28 10:59:00 · 3685 阅读 · 1 评论 -
Android 实现书籍翻页效果----升级篇
<br /> 自从之前发布了《Android 实现书籍翻页效果----完结篇 》之后,收到了很多朋友给我留言,前段时间由于事情较多,博客写得太匆忙很多细节地方没有描述清楚。所以不少人对其中的地方有不少不明白之处,也有不少人对其中出现的Bug进行了反馈。今天终于找出了段时间对这段时间的一些问题做个简单的总结。<br /> 之前给出的例子只是能使书籍进行简单的拖拽,没有实现翻页的动画效果,很多人希望我能加上这一个,所以首先我们就来说说这个翻页的动画。<br /> 其实翻页的动画很容易实现,只原创 2011-05-14 14:42:00 · 60102 阅读 · 251 评论 -
Android实现开机自动运行程序
<br />有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台service。怎样实现开机自动运行的应用?在撰写本文时,联想到高焕堂先生以“Don't call me, I'll call you back!”总结Android框架,真是说到点子上了。理解这句话的含义,许多有关Android平台上实现某种功能的问题,都能迎刃而解。<br />使用场景:手机开机后,自动运行程序,在屏幕上显示"Hello. I started!"字样。<br />背景知识:当Android启动时,会发出一个转载 2011-03-30 10:54:00 · 16676 阅读 · 4 评论 -
Android 实现书籍翻页效果----原理篇
之前看到像ipad上的ibook的模拟书籍翻页的特效感觉很炫,在android上也有像laputa和ireader等应用实现有这个特效,在网上搜索了一下好像也没有现成的例子,所以自己动手实现了一个,现在将实现的过程记录下来。实现真实的翻页效果,为了能在翻页的过程中看到下一页的内容,在翻页之前必须准备两张页面,一张是当前页,另一张是下一页。翻页的过程就是对这两张页面的剪切,组合过程。用户看到的可以分为3部分:当前页的可见部分(下图绿色部分),把书页翻起来后看到的背面区域(下图黄色部分),把书页翻起来后原创 2011-04-07 10:39:00 · 43038 阅读 · 47 评论 -
Android 实现书籍翻页效果----源码篇
之前给大家讲解了android实现书籍翻页效果的原理,并在文章结尾处说明要发布源码,呵呵,但是最近有不少琐事缠身,原计划给大家的源码demo没有时间完成,可能要delay啦~~但是由于源码实现啦原理篇所说的大部分效果,只是在阴影方面还是有些bug,所以我将它贴出了让大家都来一起帮忙实现,毕竟授人鱼不如授人渔,实际才是王道。下面是demo的画面,可以实现四个角的拖拽:由上图可以看到,源码实现啦,翻起页背面和当前页的光影效果,但是翻起页背面的光影效果未实现。 红圈标明处,为翻起页投射在当前页上的阴影的顶点没原创 2011-04-13 09:51:00 · 14168 阅读 · 24 评论 -
Android 实现书籍翻页效果----完结篇
By 何明桂(http://blog.csdn.net/hmg25) 转载请注明出处 之前由于种种琐事,暂停了这个翻页效果的实现,终于在这周末完成了大部分功能,但是这里只是给出了一个基本的雏形,没有添加翻页的动画效果,由于下个周末开始,需要转向去研究framework层(短暂的酱油期就这样结束啦 o(︶︿︶)o唉),将会暂停翻页的开发,所以想要进一步提高功能的童鞋需要自己动手~~~稍后发布的将是本人提供的原创 2011-04-22 19:55:00 · 74260 阅读 · 164 评论 -
Android 实现书籍翻页效果---番外篇之光影效果
<br /> By 何明桂(http://blog.csdn.net/hmg25) 转载请注明出处<br /> 对于之前发布的翻页效果的源码,由于写得太匆忙,注释讲解的不多,且本人文笔较差,至使很多人对其中的很多部分不是很清楚,尤其是其中的光影部分,而我也不知道如何去向其解释,真是让我汗颜无比,所以今天利用闲暇来给大家分析一下。<br /> ps: 由于零碎时间有限所以文字也有些零碎,望见谅~<br /> 首先来分析,翻起页与下一页交汇处的阴影,即下原创 2011-04-27 11:22:00 · 20646 阅读 · 17 评论 -
打造Android的中文Siri语音助手(二)——添加虫洞的开放API
By 何明桂(http://blog.csdn.net/hmg25) 转载请注明出处 在给我们的Siri添加小I的接口之后,感觉它还是不够智能,无法像Iphone的Siri一样功能强大。可是国内我依旧没有找到一个能够强大如苹果Siri的服务器,所以只能退而求其次,我引入了”虫洞“的开放API,网站http://www.uzoo.cn/,这是一个功能很强大的接口,可以原创 2011-12-02 16:16:15 · 18219 阅读 · 21 评论 -
打造Android的中文Siri语音助手(一)——小I机器人的接口
By 何明桂(http://blog.csdn.net/hmg25) 转载请注明出处Iphone4S的Siri让人眼前一亮,网上出现了无数调戏Siri的视频。真是让android用户们心痒不已。好在随后android阵营中的高手迅速反击,推出了Iris。悲剧的是Iris仅支持英文,让我们这些英语烂的无比的人调戏Iris不成,反被它给调戏了。真是郁闷的不行啊~_~所以我打算使用andro原创 2011-12-02 14:10:32 · 25830 阅读 · 44 评论 -
Android.mk介绍
<br />摘自:http://blog.chinaunix.net/u3/99423/showart_2206760.html<br />在一个Android.mk中可以生成多个可执行程序、动态库和静态库。<br />1,编译应用程序的模板:<br /> #Test Exe<br /> LOCAL_PATH := $(call my-dir)<br /> #include $(CLEAR_VARS)<br /> LOCAL_SRC_FILES:= main.c<br />原创 2011-02-23 17:52:00 · 1975 阅读 · 0 评论 -
使用ViewStub来优化布局
<br />android.view.ViewStub ViewStub 是一个不可见的,大小为0的View,最佳用途就是实现View的延迟加载,在需要的时候再加载View,可Java中常见的性能优化方法延迟加载一样。 当调用ViewStub的setVisibility函数设置为可见或则调用 inflate初始化该View的时候,ViewStub引用的资源开始初始化,然后引用的资源替代ViewStub自己的位置填充在ViewStub的位置。因此在没有调用setVisibility(int) 或则 infla原创 2011-02-23 10:33:00 · 1723 阅读 · 0 评论 -
如何隐藏Launcher中live wallpapers入口
公司某产品性能有限,需要屏蔽live wallpapers防止内存使用量过大影响客户体验,于是按照经验在Launcher2目录寻找设置壁纸对话框对应的代码,前一个"Add to Home screen"Dialog对象创建位置轻松找到,在Launcher.java中有如下代码: Java代码 if (mWorkspace.allowLongPress()) { if (cellInfo.cell == null) { if (cellInfo.valid) {原创 2011-02-22 10:45:00 · 2048 阅读 · 1 评论 -
Task和Activity相关—Activity各种属性的解释
<br /> <br />android:allowTaskReparenting<br /> 用来标记Activity能否从启动的Task移动到有着affinity的Task(当这个Task进入到前台时)——“true”,表示能移动,“false”,表示它必须呆在启动时呆在的那个Task里。<br /> 如果这个特性没有被设定,设定到<application>元素上的allowTaskReparenting特性的值会应用到Activity上。默认值为“false”。<br /> 一般转载 2011-03-02 17:13:00 · 1613 阅读 · 0 评论 -
java——深入探讨Iterator模式
<br />java.util包中包含了一系列重要的集合类。本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕。<br /><br />下面我们先简单讨论一个根接口Collection,然后分析一个抽象类AbstractList和它的对应Iterator接口,并仔细研究迭代子模式的实现原理。<br /><br />本文讨论的源代码版本是JDK 1.4.2,因为JDK 1.5在java.util中使用了很多泛型代码,为了简化问题,所以我们还是讨论1.4版本的代码。<br转载 2011-03-02 17:57:00 · 1232 阅读 · 0 评论 -
创建状态栏通知 notification
<br />懒骨头(http://blog.csdn.com/iamlazybone)<br />一个状态栏通知,会在系统的状态栏添加一个图标,并且在状态窗口添加一条信息。当用户点击这个信息时,android会发送一个intent请求,通常是启动一个已定义的activity。你可以添加声音、震动、闪屏给设备来提醒用户。<br />通常一个后台服务运行时,如果需要提醒用户一些事件、或者让用户反馈一些信息时,通常用到状态栏提醒。一个后台Service永远不会自己运行一个activity来接受用户交互,一般的,后转载 2011-03-03 16:24:00 · 3068 阅读 · 0 评论 -
android窗体透明的,黑暗度等的设置技巧
<br /> <br />设置透明度(这是窗体本身的透明度,非背景)<br /><br />WindowManager.LayoutParams lp=getWindow().getAttributes();<br /> lp.alpha=0.3f;<br /> getWindow().setAttributes(lp);<br /> <br />alpha在0.0f到1.0f之间。1.0完全不透明,0.0f完全透明<br原创 2011-03-03 17:13:00 · 8917 阅读 · 0 评论 -
ADROID 2.2 语言定制
本文是主要对android定制多语言的问题进行深入研究后,总结了其定制的机制和其具体实现方法。如果想深入了解其定制的机制,可阅读本文第一部分,如果只想了解如何定制,请参考第二部分。 第一部分 多语言定制的机制 1、ICU4C简介 ICU4C(ICU for C,http://site.icu-project.org/) 是ICU在C/C++平台下的版本, ICU(International Component for Unicode)是基于"IBM公共许可证"的,与开源组织合作研究的, 用于支持软件国际化的原创 2011-02-18 16:51:00 · 1107 阅读 · 0 评论 -
Git和Repo扫盲——如何取得Android源代码
<br />Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本控制软件,它不同于Subversion、CVS这样的集中式版本控制系统。在集中式版本控制系统中只有一个仓库(repository),许多个工作目录(working copy),而像Git这样的分布式版本控制系统中(其他主要的分布式版本控制系统还有BitKeeper 、Mercurial 、GNU Arch 、Bazaar 、Darcs 、SVK 、Monotone 等),每一个工作目录都包转载 2011-03-11 08:52:00 · 1393 阅读 · 0 评论 -
android 系统定制的小技巧(网络收集)
1开机图片: android-logo-mask.png android-logo-shine.png 这两个图片一个在上一个在下 ./out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes/assets/images/android-logo-shine.png ./frameworks/base/core/res/assets/images/android-logo-shine.png原创 2011-02-22 10:51:00 · 3142 阅读 · 2 评论 -
关于android中几个Info系列类的总结
首先我们来看一下PackageItemInfo,它是包含了一些信息的基类,它的直接子类有:ApplicationInfo、ComponentInfo、InstrumentationInfo、PermissionGroupInfo、PermissionInfo。它的间接子类有:ActivityInfo、ProviderInfo、ServiceInfo。这个类包含的信息对于所有包中项目是平等的。这些Package items是被Package manager所持有的。这个类提供了属性的非常普通的基本设置:lab原创 2011-02-22 19:02:00 · 1669 阅读 · 0 评论 -
如何把默认壁纸改为动态壁纸
在frameworks/base/core/res/res/values目录找到Config.xml文件,最后一行有定义:null将其修改为对应的live wallpaper的启动component即可,如要把默认壁纸设置为2.1自带的galaxy,这样写即可:com.android.wallpaper/com.android.wallpaper.galaxy.GalaxyWallpaper需要注意的是:静态的图片壁纸和live wallpaper是两个系统,加载的时候是完全两套机制,静态图片通过launc原创 2011-02-22 11:00:00 · 6047 阅读 · 2 评论 -
froyo系统原生bug及修正:改变系统语言时Launcher2的AllApps内shortcut不刷新[转载]
<br />把froyo的Launcher2移植到eclair后,产生了一些小问题,都一一解决掉了.这是市场反馈回来的一个问题之一,摸清内部机制颇废了一番周折.也算见识了android系统内部的另一个面向切面编程案例,很有必要记录一下,有时间好好研究研究,可以借此做些特殊的系统功能. <br /><br />严格意义上说,这并不是跨版本移植产生的问题,而是系统原生的一个bug,用samsung的galaxy tab平板模拟器测试同样是此现象:当在Launcher里面启动Settings,改变语言设置后,再回原创 2011-02-23 10:43:00 · 1763 阅读 · 3 评论 -
布局技巧:使用ViewStub
<br />多亏了<include />标签,在Android里,很容易就能做到共享和重用UI组件。在Android开发中,很容易就能创建出复杂的UI结构,结果呢,用了很多的View,且其中的一些很少使用。针对这种情况,谢天谢地,Android还为我们提供了一个特别的构件——ViewStub,它可以使你充分享受<include />的好处而不会造成无用View的浪费。<br />ViewStub是一个看不见的,轻量级的View。它没有尺寸,也不会绘制以及以某种形式参与到布局中来。这意味着ViewStub去i转载 2011-02-23 14:55:00 · 1478 阅读 · 0 评论 -
如何向android的framework里添加新类
<br />google对于所有的类和API,分为开放式和不开放式两种。所谓的开放式就是值javadoc所包含的,并不是java中有public和private,而是跟javadoc有关系,代码 没有关系。<br />在开放式的类中增加了一个变量,而又没隐藏,导致和原API的doc不一致造成的就会有错。<br />通过提示,有2个方法可以解决 该问题:<br />1、将新增加的变量或方法加上"@hide" 的注释,注意一点,加"@hide" 不是简简单单的/*@hide */就行了,标准的javadoc要这原创 2011-02-23 17:53:00 · 3869 阅读 · 0 评论 -
如何解决软键盘弹出引起的各种不适
<br />在做登录和注册页面的时候,经常会遇到诸如软键盘挡住输入框的情况,android为此提供了一系列的的配置参数供选择,你可以在androidmanufist.xml的对应Activity的windowSoftInputMode属性中选择如下4者之一进行配置(紫色字):<br /> <br /><br /> <br /> <br /> <activity android:name=".LoginAc"<br /><br /> <br /> android:转载 2011-03-13 11:59:00 · 11780 阅读 · 4 评论 -
android的Dialog相关
<br />对话框经常作为Activity的一部分来创建和显示。你通常应该从protected Dialog Activity.onCreateDialog (int id) 回调方法里创建对话框。当你使用这个回调函数时,Android系统会有效的设置这个Activity为每个对话框的所有者,从而自动管理每个对话框的状态并挂靠到Activity上。这样,每个对话框继承这个Activity的特定属性。比如,当一个对话框打开时,菜单键显示为这个Activity定义的选项菜单,音量键修改Activity使用的音频原创 2011-03-13 12:35:00 · 3741 阅读 · 0 评论 -
Android 几个Info系列类的总结
<br />首先我们来看一下PackageItemInfo,它是包含了一些信息的基类,它的直接子类有:ApplicationInfo、ComponentInfo、InstrumentationInfo、PermissionGroupInfo、PermissionInfo。它的间接子类有:ActivityInfo、ProviderInfo、ServiceInfo。这个类包含的信息对于所有包中项目是平等的。这些Package items是被Package manager所持有的。这个类提供了属性的非常普通的基本原创 2011-03-13 19:12:00 · 2087 阅读 · 0 评论 -
Android中悬浮窗口
<br />调用WindowManager,并设置WindowManager.LayoutParams的相关属性,通过WindowManager的addView方法创建View,这样产生出来的View根据WindowManager.LayoutParams属性不同,效果也就不同了。比如创建系统顶级窗口,实现悬浮窗口效果!<br />WindowManager的方法很简单,基本用到的就三个addView,removeView,updateViewLayout。<br />而WindowManager.Layo转载 2011-03-11 12:27:00 · 3198 阅读 · 1 评论 -
浅析android应用增量升级
By 何明桂(http://blog.csdn.net/hmg25) 转载请注明出处 很久没有更新博客了,真是堕落啊,几次想提起笔,却总是被各种琐事耽搁,以后会多写文章记录点滴。背景 随着android应用体积的不断增大,以及应用版本发布的不断更迭,用户的升级成了一个问题,google也意识到不断更新应用对用户流量的损耗,在Google I/O 上提及的原创 2012-10-23 11:18:15 · 123329 阅读 · 93 评论