修改开机Logo:

源码位置:alps/mediatek/custom/$project_name/uboot/inc/cust_display.h

这个文件定义了logo。

Alps/mediatek/custom/common/uboot/logo/

这个位置放了关机动画的背景,包含了各种尺寸

一些经验;如何寻找从来不用的代码、图片位置(比如这次的logo)

1、按照可能的关键字去搜。。。

2、不行?去可能的地方去找(比如确定是底层的还是上层的)

3、不行?那么去翻翻修改记录可能会找点一些线索



一些判断状态栏是否存在的血泪史:

前情概要:就是在状态栏意外终止后,可以按键重启状态栏,

先说简单的,如何重启状态栏:首先状态栏是属于framework的东西。所以用sdk是无法重启状态栏的,权限不够,需要share-userId。

Step1:确认下statusBarService的xml文件,export=true?如果是false,那么要改成true,否则也不能重启状态栏。

Location:/media/Work1/i1800_0214/alps/frameworks/base/packages/SystemUI

Step2:

StartService(com.android.systemui.statusbar, com.android.systemui.statusbar.StatusBarService);

重启状态栏完成

然后说说,如何确认状态栏是否已经挂了。。。

Attempt 1:context.getSystemService(Context.STATUSBAR_SERVICE),通过返回指针是否为空来判断状态栏是否已经挂了。。。失败,因为不管挂不挂返回都不为空。

Attempt 2:context.getRunningService,来获取正在运行的Service,如果没有statusbarService那么重启状态栏Service,这个方案听着十分靠谱,但是依然失败。具体原因不知,但是根据观察,、我手动kill systemui这个进程,这个进程会马上重启。但是状态栏不见了,Service可能还在(不是可能,应该是肯定在)。以下是一些信息,用于以后研究:

1、发现Service的OnCreate被多次调用,但是OnDestory从来没被调用过

2、StartService之后,状态栏马上出现说明应该不是刷新问题

Attempt 3:我已经想不出什么招了,只能靠判断当前Activity的高度来判断状态栏是不是还在。这个方法我虽然不喜欢,但至少能判断出来

使用getWindowManager().getDefaultDisplay().getHeight(),我绝望的发现,他返回一个-1,坑爹啊。原来当使用match_parent的时候,它不会返回具体数值。。。这下我彻底绝望了。。(以下省略一万字对于绝望的描述)。

Attempt 4:无意中发现一个函数:

getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);它说它能返回实际的宽高。

这基本上是我解决这个bug的Last Hope,总算不负我望,它终于返回了一个我所希望的值。总算这个问题算是解决了。

后记:思路非常简单的一个bug,但却用了整整一天的时间来研究。后来,又来一个棘手的bug,思路也非常简单,但是coding却非常找不到道道,因为OO思想和以前用C语言的面向过程还是不一样的。加上android是个多进程的OS,比以前featurePhone单进程的OS不是一个档次,以前我以前我会多线程同步已经很牛b了,现在看来真是井底之蛙啊。现在改bug的几个难点就是如何几个模块之间进行通信,因为很多时候本模块可以访问其他模块的方法相当少,或者目前我知道得相当少。有的时候想要调用Activity的方法却无法获取该Activity的实体,想同步一些东西,却不得其法。这个有思路,没法coding的有心无力的感觉真的是蛋疼死人。Android Framework 真的是相当的庞大,像我这种当学了不到2~3个月的人来说,去研究framework真的是很吃力,因为app层的东西也刚懂得一知半解。。。呜呼,慢慢来吧


Android4.0 长按编辑框弹出复制粘贴选项的代码位置:

TextView:为什么不在EditText?,恩,就是这么奇妙。看似相当简单的TextView其中竟然饱含如此多的玄机。

长按响应:TextView.performLongClick,该方法:首先判断触摸的位置,如果在文字上面则selectCurrentWord,如果当前文本无法选择(如特殊符号等),则不会弹出复制全选选项。如果触摸位置不在文字上面,如果文本可编辑,那么会弹出粘贴选项。

Perform粘贴action 代码位置:

ActionPopupWindow类中,该类继承TextView内部类PinnedPopupWindow。

执行粘贴动作的代码在ActionPopupWindow.onClick

这个方法onTextContextMenuItem执行大多数:复制粘贴全选操作。


enforceCallingOrSelfPermission用来检查应用是否有权限


General 重写onMeasure过程:

从传入的MeasureSpec获取mode和size,

根据mode和size,设定自身的width和height

如果自身是一个parent,那么可以根据child的layoutparam来makeSpec。

将这个Spec传给child,进行child的measure过程

Eg

For(i=0; i<getChildCount(); i++){

finalint childWidthMeasureSpec =

MeasureSpec.makeMeasureSpec(widthSize, childWidthMode);

final intchildHeightMeasureSpec =

MeasureSpec.makeMeasureSpec(heightSize, childHeightMode);

child.measure(childWidthMeasureSpec, childHeightMeasureSpec);

}


Wrap_content & layout_weight=1.0 谁大?

layout_weight=1.0 指的是当parent view之中还有空余的空间,那么剩余空间将全部分给layout_weight=1.0的view。当一个view有了layout_weight=1.0的属性,layout_width或者height将会无效化。

Wrap_content指的是以最大可能将Wrap_content所在的view显示完整。所以当Wrap_content与layout_weight=1.0分别在两个身处同一个parent view的情况下,如果Wrap_content可能会把layout_weight=1.0覆盖掉部分。但是如果Wrap_content所在的view大得离谱,即使压榨layout_weight=1.0还是显示不全的话,那么layout_weight=1.0反而会显示正常,而Wrap_content则无法显示完整


View的Rotation相关函数:

setRotationY/X 以X/Y轴为中线进行旋转,一般需要配合以下函数达到满意效果:

setPivotX设定以X轴上面的某点作为支点进行旋转。一般用于Y轴旋转。

setPivotX设定以Y轴上面的某点作为支点进行旋转。一般用于X轴旋转。

setCameraDistance设置Camera的距离,这个Camera是虚拟的,不存在。可以认为是在Z轴上面的某点上面取景。


Difference between layout_gravity andgravity

前者表示其作为children时的位置,当它没有parent时无效。也就是说这个值时提供给parent做参考的,来确定自身在其parent的相对位置。当其parent不是FrameLayout 或者 LinearLayout时无效,(目前来看貌似只有这两个layout的LayoutParams有gravity属性)

后者表示其内部child相对于自身的位置,(从TextView继承出来)



连接Wifi后,状态栏数据连接E、H、G消失

因为连接wifi后,网络自动使用wifi,所以图标消失

要想使图标依然显示,修改

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterViewGemini.java

apply()函数

mMobileType.setVisibility(!mWifiVisible ?View.VISIBLE : View.GONE);

mMobileTypeGemini.setVisibility(!mWifiVisible? View.VISIBLE : View.GONE);

将判断去掉即可





更多相关文章

  1. 随笔之如何判断Android应用进程是否为单线程及闲扯多核并行编程
  2. Android中使用百度地图时定位到当前位置遇到的问题
  3. Android(安卓)Google Map API使用的八个步骤
  4. 【Android】Android中判断后台服务是否正在运行
  5. android 验证码按钮点击,判断网络和匹配手机号并自动更新时间;
  6. android TextView文字跟随seekBar滑动条滑块的位置移动
  7. Android位置策略(五)
  8. Android中GridView拖拽的效果【android进化三十六】
  9. 说说Android桌面(Launcher应用)背后的故事(六)——研究Launcher

随机推荐

  1. Android简单实现仿微信选择图片以及拍照(P
  2. Handler发送消息后消息队列的处理
  3. Jenkins奇技淫巧 — 环境配置篇(Android
  4. Android(安卓)Netd介绍
  5. Android中最简单有效的Fragment全局管理
  6. Android之工具通用的Adapter
  7. Android(安卓)NotificationManager简读
  8. Android实现图片自动切换
  9. Android应用防止模拟点击,防范抢红包类似
  10. Android(安卓)在OnCreate获取需要控件的