Android 修改Navigation bar为半透明?
来源:互联网 发布:linux man命令 分类 编辑:程序博客网 时间:2024/06/18 02:45
前言
欢迎大家我分享和推荐好用的代码段~~
声明
欢迎转载,但请保留文章原始出处:
CSDN:http://www.csdn.net
雨季o莫忧离:http://blog.csdn.net/luckkof
正文
Navigation bar是google 从4.0版本开始支持的feature,默认情况下这个feature对应的option是关闭的,需要通过修改config 文件来开启。开启navigation bar的方法和注意事项,请参考FAQ:如何开启navigation bar。
如果想要做到,在开启navigation bar的情况下,可以透过navigation bar的背景看到navigation bar后面的内容(也就是修改navigation bar为半透明),应该如何修改?
修改前后的效果图对比如下:
修改前 修改后
[SOLUTION]
1,alps\frameworks\base\packages\SystemUI\res\layout\navigation_bar.xml,
把background修改成statusbar_background的背景图:
android:background="@drawable/statusbar_background"
2,制作一张半透明的9.png图片,名字叫statusbar_background.9.png,放到
alps\frameworks\base\packages\SystemUI\res\drawable-hdpi下
3,alps\frameworks\base\packages\SystemUI\src\com\android\
systemui\statusbar\phone\PhoneStatusBar.java
修改方法getNavigationBarLayoutParams,如下:
private WindowManager.LayoutParams getNavigationBarLayoutParams() { WindowManager.LayoutParams lp = new WindowManager.LayoutParams( . . . /*PixelFormat.OPAQUE*/ PixelFormat.TRANSLUCENT); //mtk added
4,WindowManagerService.java中
修改方法updateWallpaperOffsetLock,如下:
boolean updateWallpaperOffsetLocked(WindowState wallpaperWin, int dw, int dh,boolean sync) { . . . if (wallpaperWin.mYOffset != offset) { if (DEBUG_WALLPAPER) Slog.v(TAG, "Update wallpaper " + wallpaperWin + " y: " + offset); changed = true; wallpaperWin.mYOffset = offset; // 修改成wallpaperWin.mYOffset = 0; } . . .
对于JB的版本,还需要修改:
5, WindowManagerService.java
修改方法performLayoutLockedInner,如下:
private final void performLayoutLockedInner(boolean initial, boolean updateInputWindows) { if (!mLayoutNeeded) { … for (i = N-1; i >= 0; i--) { final WindowState win = mWindows.get(i);//mtk addedIf (win.mIsWallpaper) mSystemDecorRect.bootom = 屏幕高度; //以480*800分辨率来说,这里的屏幕高度就是800//mtk added…}
注意:
修改navigation bar半透明后存在的限制:
- 从那些以wallpaper作为背景的画面(画面对应的window具备属性:FLAG_SHOW_WALLPAPER)切换到不显示wallpaper的画面,会在navigation bar的背景上先闪一下wallpaper,然后navigation bar的背景才变成黑色。
- 如果希望某些特定的window才可以让navigation bar半透明,其他window上navigation bar仍然不透明,例如:只在launcher画面做到navigation bar半透明,其他画面navigation bar仍然保持原来的风格,目前不做支持。
- WVGA上开启navigation bar本身就有很多问题,建议不要在WVGA分辨率下开启navigation bar功能。
- Navigation bar半透明的功能只针对当前的wallpaper是ImageWallpaper的情况,对Live Wallpaper不生效,后续也不做更多支持。
- Android 修改Navigation bar为半透明?
- Android 修改Navigation bar为半透明?
- android 隐藏navigation bar
- Android Navigation Bar
- Android navigation bar and the status bar
- Android 如何关闭Navigation Bar
- Android App隐藏Navigation Bar
- 【android】隐藏title bar和system navigation bar,status bar
- 修改navigation bar上的 button
- 修改navigation bar上的 button
- 修改navigation Bar 中部的title内容
- iPhone 修改navigation bar 字体和颜色
- navigation bar - backBarButtonItem 颜色/文字修改
- 对状态栏(Status Bar)和下方导航栏(Navigation Bar)进行半透明处理
- android APP隐藏NavigationBar,通过修改framework隐藏/显示 navigation bar
- Navigation Bar
- Navigation Bar
- Navigation Bar
- 完美面试问题 总结
- 公司激励游
- android 再按一次后退键退出应用程序
- SUSE开机启动应用程序
- QC邮件转发工具Mail Direct安装配置手册
- Android 修改Navigation bar为半透明?
- ExtJs4.2 Ext.direct小例子
- Android 中jar包封装及调用>>>>>
- handler2
- CSDN消息:Android开源项目
- Linux系统信息查看命令大全
- 多对一存储顺序以及问题object references an unsaved transient instance - save the transient instance。。。
- IPHostEntry 类
- Android ListView常用用法 (实现文字图片和按钮)