长按事件来控制状态栏的隐藏和显示

        最近客户有个需求:就是要通过在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();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue中可以通过`@touchstart`、`@touchmove`和`@touchend`等事件来实现事件和取消事件的效果。具体实现方法如: 1. 事件 在需要实现事件的元素上添加`@touchstart`事件,并在事件处理函数中使用`setTimeout`函数来实现事件的效果。例如: ```html <template> <div @touchstart="startLongPress">按我</div> </template> <script> export default { methods: { startLongPress() { this.timer = setTimeout(() => { console.log('事件触发了') }, 1000) } } } </script> ``` 在上面的代码中,我们在`startLongPress`方法中使用`setTimeout`函数来实现事件的效果,当用户按元素1秒钟后,就会触发`console.log`语句输出“事件触发了”。 2. 取消事件 在需要取消事件的元素上添加`@touchmove`和`@touchend`事件,并在事件处理函数中使用`clearTimeout`函数来取消事件的效果。例如: ```html <template> <div @touchstart="startLongPress" @touchmove="cancelLongPress" @touchend="cancelLongPress">按我</div> </template> <script> export default { methods: { startLongPress() { this.timer = setTimeout(() => { console.log('事件触发了') }, 1000) }, cancelLongPress() { clearTimeout(this.timer) } } } </script> ``` 在上面的代码中,我们在`cancelLongPress`方法中使用`clearTimeout`函数来取消事件的效果,当用户在按元素的过程中移动手指或者松开手指时,就会取消事件的效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值