20240726----Android6.0(RK3128)----修改低电时,低电通知改为低电弹框

客户觉得低电时,通知栏会通知低电,太low了
改好看点,就做了个低电弹框的UI

 packages/SystemUI/res/values/styles.xml
 packages/SystemUI/res/anim/batterylow_blink.xml                               
 packages/SystemUI/res/drawable/ic_lowbatterydialog.png                         
 packages/SystemUI/res/layout/battery_low_dialog.xml                            
 packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java 

styles.xml 增加透明弹框效果
batterylow_blink.xml 是个动画效果,弹框将会闪三下进行低电警告
ic_lowbatterydialog.png 弹框图片,低电界面将会应用这张图片
battery_low_dialog.xml 低电界面
PowerNotificationWarnings.java 里边要注意的时 一般dialog都要"长"在activity上,不然的话要加上

dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);

这样就可以了

commit 224261aea088bb96d759e86053678246d0b1ddb7
Author: liubc <lbc@chiptrip.com.cn>
Date:   Fri Jul 26 10:05:03 2024 +0800

    低于15%的电量时,低电通知修改为低电弹框
    
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -76,7 +76,13 @@
         <item name="android:textStyle">normal</item>
         <item name="android:textColor">#FFFFFFFF</item>
     </style>
-
+
+       <style name="TransparentDialogTheme" parent="android:Theme.Dialog">
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:windowIsFloating">true</item>
+        <item name="android:windowNoTitle">true</item>
+    </style>
+

diff --git a/packages/SystemUI/res/anim/batterylow_blink.xml b/packages/SystemUI/res/anim/batterylow_blink.xml
new file mode 100755
index 0000000..dd8efff
--- /dev/null
+++ b/packages/SystemUI/res/anim/batterylow_blink.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<alpha xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="200"
+    android:fromAlpha="0.0"
+    android:toAlpha="1.0"
+    android:repeatMode="reverse"
+    android:repeatCount="4"
+    />
diff --git a/packages/SystemUI/res/drawable/ic_lowbatterydialog.png b/packages/SystemUI/res/drawable/ic_lowbatterydialog.png
new file mode 100755
index 0000000..858ed20
Binary files /dev/null and b/packages/SystemUI/res/drawable/ic_lowbatterydialog.png differ
diff --git a/packages/SystemUI/res/layout/battery_low_dialog.xml b/packages/SystemUI/res/layout/battery_low_dialog.xml
new file mode 100755
index 0000000..c9ef5d2
--- /dev/null
+++ b/packages/SystemUI/res/layout/battery_low_dialog.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:padding="20dp"
+    android:background="@android:color/transparent">
+
+    <!-- 添加你的布局内容 -->
+    <ImageView
+        android:id="@+id/logoImageView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:src="@drawable/ic_lowbatterydialog" />
+</LinearLayout>
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
index 2bb7804..4552411 100755
--- a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
+++ b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
@@ -37,6 +37,15 @@ import android.os.UserHandle;
 import android.provider.Settings;
 import android.util.Slog;
 import android.view.View;
+import android.app.Dialog;
+import android.view.LayoutInflater;
+import android.view.Window;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.ImageView;
+import android.view.WindowManager;
+
+
 
 import com.android.systemui.R;
 import com.android.systemui.statusbar.phone.PhoneStatusBar;
@@ -138,7 +147,8 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI {
             showInvalidChargerNotification();
             mShowing = SHOWING_INVALID_CHARGER;
         } else if (mWarning && mBatteryLevel <= 15) {
-            showWarningNotification();
+            //showWarningNotification();
+            showLowBatteryDialog();
             mShowing = SHOWING_WARNING;
         } else if (mSaver) {
             showSaverNotification();
@@ -168,6 +178,36 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI {
         mNoMan.notifyAsUser(TAG_NOTIFICATION, R.id.notification_power, n, UserHandle.ALL);
     }
 
+	private void showLowBatteryDialog(){
+        final Dialog dialog = new Dialog(mContext, R.style.TransparentDialogTheme);
+		dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);
+        View view = LayoutInflater.from(mContext).inflate(R.layout.battery_low_dialog, null);
+        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        dialog.setContentView(view);
+        ImageView logoImageView = (ImageView)view.findViewById(R.id.logoImageView);
+        Animation blinkAnimation = AnimationUtils.loadAnimation(mContext, R.anim.batterylow_blink);
+        blinkAnimation.setAnimationListener(new Animation.AnimationListener() {
+            @Override
+            public void onAnimationStart(Animation animation) {
+                // 动画开始时的逻辑
+            }
+
+            @Override
+            public void onAnimationEnd(Animation animation) {
+                // 动画结束时的逻辑
+                dialog.dismiss();
+            }
+
+            @Override
+            public void onAnimationRepeat(Animation animation) {
+                // 动画重复时的逻辑
+            }
+        });
+        logoImageView.startAnimation(blinkAnimation);
+        dialog.show();
+   
+	}
+	
     private void showWarningNotification() {
         final int textRes = mSaver ? R.string.battery_low_percent_format_saver_started
                 : R.string.battery_low_percent_format;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值