长按事件来控制状态栏的隐藏和显示
2014-02-24 11:24
288 查看
最近客户有个需求:就是要通过在LANCHER中的长按事件来控制状态栏隐藏和显示,比如说:判断当前的状态栏的状态,如果当前状态栏是隐藏的,那么长按事件就是显示状态栏,如果当前状态栏是显示的,那么长按的事件就是隐藏状态栏。
前面也有一篇文章:ANDROID
动态开关状态栏,是通过广播的形式来动态控制状态栏的,这里有个简单的例子:就是借用LANCHER中长按会弹出选择壁纸的地方来添加我们要实现的功能;下面贴下更改的PATCH
diff --git a/device/rockchip/rk30sdk/device.mk b/device/rockchip/rk30sdk/device.mk
index c98aae8..1fd4c25 100755
--- a/device/rockchip/rk30sdk/device.mk
+++ b/device/rockchip/rk30sdk/device.mk
@@ -245,6 +245,7 @@ PRODUCT_PROPERTY_OVERRIDES += \
ro.rk.install_non_market_apps=false\
ro.default.size=100\
persist.sys.timezone=Atlantic/Azores\
+ persist.sys.fullscreen=normal\
persist.sys.reboottest=0 \
ro.product.usbfactory=rockchip_usb \
wifi.supplicant_scan_interval=15 \
diff --git a/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager
index 3805dd3..2fc6af8 100755
--- a/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -4506,9 +4506,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// will quickly lose focus once it correctly gets hidden.
return 0;
}
- int tmpVisibility = mFocusedWindow.getSystemUiVisibility()
- & ~mResettingSystemUiFlags
- & ~mForceClearedSystemUiFlags;
+ int tmpVisibility;
+ int temp= mFocusedWindow.getSystemUiVisibility()& ~mResettingSystemUiFlags& ~mForceClearedSystemUiFlags;
+ //Log.v(TAG, "yds ,SystemProperties.get persist.sys.fullscreen=" + SystemProperties.get("persist.sys.fullscreen",""));
+ if(SystemProperties.get("persist.sys.fullscreen","").equals("full")){
+ tmpVisibility=temp|View.SYSTEM_UI_FLAG_SHOW_FULLSCREEN;
+ }else{
+ tmpVisibility=temp;
+ }
if (mForcingShowNavBar && mFocusedWindow.getSurfaceLayer() < mForcingShowNavBarLayer) {
tmpVisibility &= ~View.SYSTEM_UI_CLEARABLE_FLAGS;
}
diff --git a/packages/apps/Launcher2/src/com/android/launcher2/Launcher.java b/packages/apps/Launcher2/src/com/android/launcher2/Launcher.java
index b42eb4d..bdbeea0 100755
--- a/packages/apps/Launcher2/src/com/android/launcher2/Launcher.java
+++ b/packages/apps/Launcher2/src/com/android/launcher2/Launcher.java
@@ -2337,6 +2337,13 @@ public final class Launcher extends Activity
v = (View) v.getParent().getParent();
}
+ if(SystemProperties.get("persist.sys.fullscreen","").equals("full")){
+ SystemProperties.set("persist.sys.fullscreen","normal");
+ }else{
+ SystemProperties.set("persist.sys.fullscreen","full");
+ }
resetAddInfo();
CellLayout.CellInfo longClickCellInfo = (CellLayout.CellInfo) v.getTag();
前面也有一篇文章:ANDROID
动态开关状态栏,是通过广播的形式来动态控制状态栏的,这里有个简单的例子:就是借用LANCHER中长按会弹出选择壁纸的地方来添加我们要实现的功能;下面贴下更改的PATCH
diff --git a/device/rockchip/rk30sdk/device.mk b/device/rockchip/rk30sdk/device.mk
index c98aae8..1fd4c25 100755
--- a/device/rockchip/rk30sdk/device.mk
+++ b/device/rockchip/rk30sdk/device.mk
@@ -245,6 +245,7 @@ PRODUCT_PROPERTY_OVERRIDES += \
ro.rk.install_non_market_apps=false\
ro.default.size=100\
persist.sys.timezone=Atlantic/Azores\
+ persist.sys.fullscreen=normal\
persist.sys.reboottest=0 \
ro.product.usbfactory=rockchip_usb \
wifi.supplicant_scan_interval=15 \
diff --git a/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager
index 3805dd3..2fc6af8 100755
--- a/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -4506,9 +4506,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// will quickly lose focus once it correctly gets hidden.
return 0;
}
- int tmpVisibility = mFocusedWindow.getSystemUiVisibility()
- & ~mResettingSystemUiFlags
- & ~mForceClearedSystemUiFlags;
+ int tmpVisibility;
+ int temp= mFocusedWindow.getSystemUiVisibility()& ~mResettingSystemUiFlags& ~mForceClearedSystemUiFlags;
+ //Log.v(TAG, "yds ,SystemProperties.get persist.sys.fullscreen=" + SystemProperties.get("persist.sys.fullscreen",""));
+ if(SystemProperties.get("persist.sys.fullscreen","").equals("full")){
+ tmpVisibility=temp|View.SYSTEM_UI_FLAG_SHOW_FULLSCREEN;
+ }else{
+ tmpVisibility=temp;
+ }
if (mForcingShowNavBar && mFocusedWindow.getSurfaceLayer() < mForcingShowNavBarLayer) {
tmpVisibility &= ~View.SYSTEM_UI_CLEARABLE_FLAGS;
}
diff --git a/packages/apps/Launcher2/src/com/android/launcher2/Launcher.java b/packages/apps/Launcher2/src/com/android/launcher2/Launcher.java
index b42eb4d..bdbeea0 100755
--- a/packages/apps/Launcher2/src/com/android/launcher2/Launcher.java
+++ b/packages/apps/Launcher2/src/com/android/launcher2/Launcher.java
@@ -2337,6 +2337,13 @@ public final class Launcher extends Activity
v = (View) v.getParent().getParent();
}
+ if(SystemProperties.get("persist.sys.fullscreen","").equals("full")){
+ SystemProperties.set("persist.sys.fullscreen","normal");
+ }else{
+ SystemProperties.set("persist.sys.fullscreen","full");
+ }
resetAddInfo();
CellLayout.CellInfo longClickCellInfo = (CellLayout.CellInfo) v.getTag();
相关文章推荐
- js控制显示和隐藏 jquery赋值与添加事件
- iOS9之后动态控制状态栏隐藏和显示
- Android 动态控制手机状态栏显示|隐藏
- 转: ionic cordova 控制iOS状态栏的显示,隐藏,颜色
- 一个按钮控制div的显示与隐藏。运用jquery的toggle双、多事件绑定方法
- UINavigationController点击事件控制隐藏与显示(UITabBarController也同样适用)
- Android动态控制状态栏以及系统导航栏显示和隐藏
- Android开发App状态栏隐藏和显示及颜色控制处理
- select onchange事件控制tr的显示或隐藏
- SystemUI中状态栏跟导航栏隐藏显示控制方法及效果示例
- DropDownList 前台 onchange 事件js控制显示隐藏元素
- ionic cordova 控制iOS状态栏的显示,隐藏,颜色
- SystemUI中状态栏跟导航栏隐藏显示控制方法及效果示例
- android 状态栏 导航栏隐藏显示控制方法及效果示例
- 控制隐藏和显示android虚拟键和状态栏
- ionic ---- 控制ios状态栏的显示,隐藏,颜色
- FastReport编写事件代码控制控件显示隐藏
- 控制一组Panel的显示与隐藏
- js控制z-index的值和改变display来显示或者隐藏层
- jquerydom对象的事件隐藏显示和对象数组示例