效果
diff --git a/frameworks/base/packages/SystemUI/res/values-sw372dp/config.xml b/frameworks/base/packages/SystemUI/res/values-sw372dp/config.xml
index f66ba9c..d7b3391 100755
--- a/frameworks/base/packages/SystemUI/res/values-sw372dp/config.xml
+++ b/frameworks/base/packages/SystemUI/res/values-sw372dp/config.xml
@@ -21,5 +21,5 @@
for different hardware and product builds. -->
<resources>
<!-- Nav bar button default ordering/layout -->
- <string name="config_navBarLayout" translatable="false">left;volume_sub,back,home,recent,volume_add,screenshot;right</string>
+ <string name="config_navBarLayout" translatable="false">left;soft_shutdown,volume_sub,back,home,recent,volume_add,screenshot;space</string>
</resources>
diff --git a/frameworks/base/packages/SystemUI/res/values-sw400dp/config.xml b/frameworks/base/packages/SystemUI/res/values-sw400dp/config.xml
index fb418ff..d7b3391 100644
--- a/frameworks/base/packages/SystemUI/res/values-sw400dp/config.xml
+++ b/frameworks/base/packages/SystemUI/res/values-sw400dp/config.xml
@@ -21,5 +21,5 @@
for different hardware and product builds. -->
<resources>
<!-- Nav bar button default ordering/layout -->
- <string name="config_navBarLayout" translatable="false">left;volume_sub,back,home,recent,volume_add,screenshot;right[.1W]</string>
+ <string name="config_navBarLayout" translatable="false">left;soft_shutdown,volume_sub,back,home,recent,volume_add,screenshot;space</string>
</resources>
diff --git a/frameworks/base/packages/SystemUI/res/values-sw450dp/config.xml b/frameworks/base/packages/SystemUI/res/values-sw450dp/config.xml
index fb418ff..d7b3391 100644
--- a/frameworks/base/packages/SystemUI/res/values-sw450dp/config.xml
+++ b/frameworks/base/packages/SystemUI/res/values-sw450dp/config.xml
@@ -21,5 +21,5 @@
for different hardware and product builds. -->
<resources>
<!-- Nav bar button default ordering/layout -->
- <string name="config_navBarLayout" translatable="false">left;volume_sub,back,home,recent,volume_add,screenshot;right[.1W]</string>
+ <string name="config_navBarLayout" translatable="false">left;soft_shutdown,volume_sub,back,home,recent,volume_add,screenshot;space</string>
</resources>
diff --git a/frameworks/base/packages/SystemUI/res/values-sw500dp/config.xml b/frameworks/base/packages/SystemUI/res/values-sw500dp/config.xml
index fb418ff..d7b3391 100644
--- a/frameworks/base/packages/SystemUI/res/values-sw500dp/config.xml
+++ b/frameworks/base/packages/SystemUI/res/values-sw500dp/config.xml
@@ -21,5 +21,5 @@
for different hardware and product builds. -->
<resources>
<!-- Nav bar button default ordering/layout -->
- <string name="config_navBarLayout" translatable="false">left;volume_sub,back,home,recent,volume_add,screenshot;right[.1W]</string>
+ <string name="config_navBarLayout" translatable="false">left;soft_shutdown,volume_sub,back,home,recent,volume_add,screenshot;space</string>
</resources>
diff --git a/frameworks/base/packages/SystemUI/res/values-sw600dp/config.xml b/frameworks/base/packages/SystemUI/res/values-sw600dp/config.xml
index 9216e70..6497788 100644
--- a/frameworks/base/packages/SystemUI/res/values-sw600dp/config.xml
+++ b/frameworks/base/packages/SystemUI/res/values-sw600dp/config.xml
@@ -30,7 +30,7 @@
<bool name="config_keyguardUserSwitcher">true</bool>
<!-- Nav bar button default ordering/layout -->
- <string name="config_navBarLayout" translatable="false">left;volume_sub,back,home,recent,volume_add,screenshot;right[.1W]</string>
+ <string name="config_navBarLayout" translatable="false">left;soft_shutdown,volume_sub,back,home,recent,volume_add,screenshot;space</string>
<!-- Animation duration when using long press on recents to dock -->
<integer name="long_press_dock_anim_duration">290</integer>
diff --git a/frameworks/base/packages/SystemUI/res/values-sw650dp/config.xml b/frameworks/base/packages/SystemUI/res/values-sw650dp/config.xml
index fb418ff..d7b3391 100644
--- a/frameworks/base/packages/SystemUI/res/values-sw650dp/config.xml
+++ b/frameworks/base/packages/SystemUI/res/values-sw650dp/config.xml
@@ -21,5 +21,5 @@
for different hardware and product builds. -->
<resources>
<!-- Nav bar button default ordering/layout -->
- <string name="config_navBarLayout" translatable="false">left;volume_sub,back,home,recent,volume_add,screenshot;right[.1W]</string>
+ <string name="config_navBarLayout" translatable="false">left;soft_shutdown,volume_sub,back,home,recent,volume_add,screenshot;space</string>
</resources>
diff --git a/frameworks/base/packages/SystemUI/res/values-sw800dp/config.xml b/frameworks/base/packages/SystemUI/res/values-sw800dp/config.xml
index fb418ff..d7b3391 100644
--- a/frameworks/base/packages/SystemUI/res/values-sw800dp/config.xml
+++ b/frameworks/base/packages/SystemUI/res/values-sw800dp/config.xml
@@ -21,5 +21,5 @@
for different hardware and product builds. -->
<resources>
<!-- Nav bar button default ordering/layout -->
- <string name="config_navBarLayout" translatable="false">left;volume_sub,back,home,recent,volume_add,screenshot;right[.1W]</string>
+ <string name="config_navBarLayout" translatable="false">left;soft_shutdown,volume_sub,back,home,recent,volume_add,screenshot;space</string>
</resources>
diff --git a/frameworks/base/packages/SystemUI/res/values-sw900dp/config.xml b/frameworks/base/packages/SystemUI/res/values-sw900dp/config.xml
index 833016b..4f19494 100644
--- a/frameworks/base/packages/SystemUI/res/values-sw900dp/config.xml
+++ b/frameworks/base/packages/SystemUI/res/values-sw900dp/config.xml
@@ -19,6 +19,5 @@
<resources>
<!-- Nav bar button default ordering/layout -->
- <string name="config_navBarLayout" translatable="false">left;volume_sub,back,home,recent,volume_add,screenshot;right[.1W]</string>
-
+ <string name="config_navBarLayout" translatable="false">left;soft_shutdown,volume_sub,back,home,recent,volume_add,screenshot;space</string>
</resources>
diff --git a/frameworks/base/packages/SystemUI/res/values/config.xml b/frameworks/base/packages/SystemUI/res/values/config.xml
index 4d53ea8..d80d80e 100755
--- a/frameworks/base/packages/SystemUI/res/values/config.xml
+++ b/frameworks/base/packages/SystemUI/res/values/config.xml
@@ -363,7 +363,7 @@
</string-array>
<!-- Nav bar button default ordering/layout -->
- <string name="config_navBarLayout" translatable="false">left;volume_sub,back,home,recent,volume_add,screenshot;right</string>
+ <string name="config_navBarLayout" translatable="false">left;soft_shutdown,volume_sub,back,home,recent,volume_add,screenshot;space</string>
<string name="config_navBarLayoutQuickstep" translatable="false">back[1.7WC];home;contextual[1WC]</string>
<bool name="quick_settings_show_full_alarm">false</bool>
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
index 6fd36b4..a76f828 100755
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
@@ -794,6 +794,9 @@ public class NavigationBarFragment extends Fragment implements Callbacks {
screenshotButton.setVisibility(View.GONE);
}
+ ButtonDispatcher powerButton = mNavigationBarView.getPowerButton();
+ powerButton.setOnClickListener(this:: powerClick);
+ powerButton.setOnTouchListener(this:: powerTouch);
ButtonDispatcher volumeAddButton=mNavigationBarView.getVolumeAddButton();
ButtonDispatcher volumeSubButton=mNavigationBarView.getVolumeSubButton();
boolean isShowVolumeButton="true".equals(SystemProperties.get("ro.rk.systembar.voiceicon","true"));
@@ -994,11 +997,22 @@ public class NavigationBarFragment extends Fragment implements Callbacks {
return false;
}
+ private boolean powerTouch(View v, MotionEvent event) {
+ if (event.getAction() == MotionEvent.ACTION_UP) {
+ Intent intent=new Intent("com.google.systemui.poweroff");
+ getContext().sendBroadcast(intent);
+ }
+ return false;
+ }
private void screenshotClick(View v) {
Intent intent=new Intent("android.intent.action.SCREENSHOT");
getContext().sendBroadcast(intent);
}
+ private void powerClick(View v) {
+ Intent intent=new Intent("com.google.systemui.poweroff");
+ getContext().sendBroadcast(intent);
+ }
private void onAccessibilityClick(View v) {
mAccessibilityManager.notifyAccessibilityButtonClicked();
}
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java
index f8c7fe3..7ae4987 100644
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java
@@ -72,6 +72,7 @@ public class NavigationBarInflaterView extends FrameLayout
public static final String SCREENSHOT = "screenshot";
public static final String VOLUME_ADD = "volume_add";
public static final String VOLUME_SUB = "volume_sub";
+ public static final String SOFT_SHUTDOWN = "soft_shutdown";
public static final String GRAVITY_SEPARATOR = ";";
public static final String BUTTON_SEPARATOR = ",";
@@ -414,6 +415,8 @@ public class NavigationBarInflaterView extends FrameLayout
v = inflater.inflate(R.layout.volume_add, parent, false);
} else if (VOLUME_SUB.equals(button)) {
v = inflater.inflate(R.layout.volume_sub, parent, false);
+ } else if (SOFT_SHUTDOWN.equals(button)) {
+ v = inflater.inflate(R.layout.soft_shutdown, parent, false);
} else if (button.startsWith(KEY)) {
String uri = extractImage(button);
int code = extractKeycode(button);
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index cc0b12b..85934e2 100644
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -132,6 +132,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
private KeyButtonDrawable mAccessibilityIcon;
private KeyButtonDrawable mVolumeAddIcon;
private KeyButtonDrawable mVolumeSubIcon;
+ private KeyButtonDrawable mPowerIcon;
private KeyButtonDrawable mScreenshotIcon;
private TintedKeyButtonDrawable mRotateSuggestionIcon;
@@ -310,6 +311,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
mButtonDispatchers.put(R.id.screenshot, new ButtonDispatcher(R.id.screenshot));
mButtonDispatchers.put(R.id.volume_add, new ButtonDispatcher(R.id.volume_add));
mButtonDispatchers.put(R.id.volume_sub, new ButtonDispatcher(R.id.volume_sub));
+ mButtonDispatchers.put(R.id.soft_shutdown, new ButtonDispatcher(R.id.soft_shutdown));
mButtonDispatchers.put(R.id.rotate_suggestion,
new ButtonDispatcher(R.id.rotate_suggestion));
mButtonDispatchers.put(R.id.menu_container,
@@ -425,6 +427,9 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
return mButtonDispatchers.get(R.id.volume_sub);
}
+ public ButtonDispatcher getPowerButton() {
+ return mButtonDispatchers.get(R.id.soft_shutdown);
+ }
public ButtonDispatcher getRecentsButton() {
return mButtonDispatchers.get(R.id.recent_apps);
}
@@ -520,6 +525,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
mVolumeAddIcon = getDrawable(lightContext, darkContext, R.drawable.ic_sysbar_volume_add_button);
mVolumeSubIcon = getDrawable(lightContext, darkContext, R.drawable.ic_sysbar_volume_sub_button);
+ mPowerIcon = getDrawable(lightContext, darkContext, R.drawable.ic_sysbar_soft_shutdown_button);
mScreenshotIcon = getDrawable(lightContext, darkContext, R.drawable.ic_sysbar_capture_button);
updateRotateSuggestionButtonStyle(mRotateBtnStyle, false);
@@ -657,6 +663,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
getBackButton().setImageDrawable(backIcon);
getVolumeAddButton().setImageDrawable(mVolumeAddIcon);
getVolumeSubButton().setImageDrawable(mVolumeSubIcon);
+ getPowerButton().setImageDrawable(mPowerIcon);
getScreenshotButton().setImageDrawable(mScreenshotIcon);
updateRecentsIcon();