AK\A9 Launcher modification Dialog
authorkfl_614 <kfl_614@163.com>
Fri, 30 Oct 2020 06:55:19 +0000 (14:55 +0800)
committerkfl_614 <kfl_614@163.com>
Fri, 30 Oct 2020 06:55:19 +0000 (14:55 +0800)
31 files changed:
app/build.gradle
app/src/main/AndroidManifest.xml
app/src/main/java/com/ic/ak/launcher/LauncherApp.java
app/src/main/java/com/ic/ak/launcher/data/battery/BatteryConnectStateEvent.java [deleted file]
app/src/main/java/com/ic/ak/launcher/data/battery/BatteryDispose.java
app/src/main/java/com/ic/ak/launcher/data/hardware/HardwareDispose.java
app/src/main/java/com/ic/ak/launcher/data/play/PlaySoundEvent.java [new file with mode: 0644]
app/src/main/java/com/ic/ak/launcher/ui/DialogActivity.java [deleted file]
app/src/main/java/com/ic/ak/launcher/ui/MainActivity.java
app/src/main/java/com/ic/ak/launcher/ui/dialog/AlertDialogManage.java [new file with mode: 0644]
app/src/main/java/com/ic/ak/launcher/ui/dialog/BatteryLowFragment.java [deleted file]
app/src/main/java/com/ic/ak/launcher/ui/dialog/BatteryLowManage.java [deleted file]
app/src/main/java/com/ic/ak/launcher/ui/dialog/DialogDismissEvent.java [deleted file]
app/src/main/java/com/ic/ak/launcher/ui/dialog/NotificationDialogFragment.java [deleted file]
app/src/main/java/com/ic/ak/launcher/ui/dialog/NotificationDialogManage.java [deleted file]
app/src/main/java/com/ic/ak/launcher/ui/dialog/SedentaryAlarmDialogFragment.java [deleted file]
app/src/main/java/com/ic/ak/launcher/ui/dialog/SedentaryDialogManage.java [deleted file]
app/src/main/java/com/ic/ak/launcher/ui/dialog/ShowDialogEvent.java [new file with mode: 0644]
app/src/main/java/com/ic/ak/launcher/ui/dialog/SlipTipsFragment.java [deleted file]
app/src/main/java/com/ic/ak/launcher/ui/dialog/SlipTipsManage.java [deleted file]
app/src/main/java/com/ic/ak/launcher/ui/dialog/TextShowDialogFragment.java [deleted file]
app/src/main/java/com/ic/ak/launcher/ui/dialog/TextShowDialogManage.java [deleted file]
app/src/main/res/drawable/shape_alert_dialog_bg.xml [new file with mode: 0644]
app/src/main/res/drawable/shape_black_alert_dialog_bg.xml [new file with mode: 0644]
app/src/main/res/drawable/shape_sedentary_dialog_bg.xml [new file with mode: 0644]
app/src/main/res/drawable/shape_slip_alert_dialog_bg.xml [new file with mode: 0644]
app/src/main/res/layout/dialog_notification.xml
app/src/main/res/layout/dialog_text_show_a9.xml
app/src/main/res/layout/fragment_image_battery_low.xml
app/src/main/res/layout/fragment_image_slip.xml
app/src/main/res/values/styles.xml

index 69ae875..3dea8f8 100644 (file)
@@ -9,7 +9,7 @@ android {
         minSdkVersion 19
         targetSdkVersion 29
         versionCode 1
-        versionName "1.0"
+        versionName "2.0"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
 
     }
@@ -98,12 +98,12 @@ static def releaseTime() {
 
 dependencies {
     implementation fileTree(dir: "libs", include: ["*.jar"])
-    implementation 'androidx.appcompat:appcompat:1.1.0'
-    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+    implementation 'androidx.appcompat:appcompat:1.2.0'
+    implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
     implementation 'androidx.legacy:legacy-support-v4:1.0.0'
     testImplementation 'junit:junit:4.12'
-    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
-    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
+    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
 
     // ViewModel
     implementation "androidx.lifecycle:lifecycle-viewmodel:2.2.0"
@@ -116,11 +116,13 @@ dependencies {
     // optional - ReactiveStreams support for LiveData
     implementation "androidx.lifecycle:lifecycle-reactivestreams:2.2.0"
 
+    implementation "com.google.android.material:material:1.3.0-alpha03"
+
     implementation "androidx.viewpager2:viewpager2:1.0.0"
     implementation 'com.jakewharton.threetenabp:threetenabp:1.2.2'
 
-    implementation 'com.jakewharton:butterknife:10.2.1'
-    annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'
+    implementation 'com.jakewharton:butterknife:10.2.3'
+    annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
 
     implementation 'com.github.bumptech.glide:glide:4.11.0'
     annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
index decdb91..f55147b 100644 (file)
@@ -20,9 +20,6 @@
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
-        <activity android:name=".ui.DialogActivity"
-            android:theme="@style/DialogActivityStyle"
-            android:launchMode="singleInstance"/>
         <activity android:name=".ui.notification.NotificationActivity" />
         <activity
             android:name=".ui.MainActivity"
index bc7c011..aca37ae 100644 (file)
@@ -30,8 +30,8 @@ public class LauncherApp extends Application {
     @Override
     public void onCreate() {
         super.onCreate();
-        CrashHandler crashHandler = CrashHandler.getInstance();
-        crashHandler.init(getApplicationContext());
+        //CrashHandler crashHandler = CrashHandler.getInstance();
+        //crashHandler.init(getApplicationContext());
 
         AndroidThreeTen.init(this);
         IcLog.setLogHead("IcAk");
diff --git a/app/src/main/java/com/ic/ak/launcher/data/battery/BatteryConnectStateEvent.java b/app/src/main/java/com/ic/ak/launcher/data/battery/BatteryConnectStateEvent.java
deleted file mode 100644 (file)
index 7b21e70..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.ic.ak.launcher.data.battery;
-
-public class BatteryConnectStateEvent {
-    public boolean state;
-
-    public BatteryConnectStateEvent(boolean state) {
-        this.state = state;
-    }
-}
index ff390a5..c84b481 100644 (file)
@@ -13,6 +13,8 @@ import androidx.lifecycle.MutableLiveData;
 
 import com.ic.ak.launcher.BuildConfig;
 import com.ic.ak.launcher.R;
+import com.ic.ak.launcher.data.play.PlaySoundEvent;
+import com.ic.ak.launcher.ui.dialog.ShowDialogEvent;
 
 import org.greenrobot.eventbus.EventBus;
 
@@ -98,11 +100,11 @@ public class BatteryDispose {
                     case Intent.ACTION_POWER_DISCONNECTED:
                         // 没有接电源
                         mBatteryChargingLiveData.setValue(false);
-                        EventBus.getDefault().post(new BatteryConnectStateEvent(false));
+                        EventBus.getDefault().post(new PlaySoundEvent(1));
                         break;
                     case Intent.ACTION_POWER_CONNECTED:
                         //接电源
-                        EventBus.getDefault().post(new BatteryConnectStateEvent(true));
+                        EventBus.getDefault().post(new PlaySoundEvent(0));
                         break;
                 }
             }
@@ -117,6 +119,10 @@ public class BatteryDispose {
 
         if (level == -1) return;
 
+        if(rawlevel == 15 || rawlevel == 10){
+            EventBus.getDefault().post(new ShowDialogEvent(1004,0,null));
+        }
+
         mBatteryValueLiveData.setValue(String.valueOf(rawlevel));
 
         switch (status) {
index ca85387..42b4788 100644 (file)
@@ -11,8 +11,13 @@ import androidx.lifecycle.MediatorLiveData;
 import androidx.lifecycle.MutableLiveData;
 
 import com.ic.ak.launcher.BuildConfig;
+import com.ic.ak.launcher.data.play.PlaySoundEvent;
+import com.ic.ak.launcher.data.play.SoundPlayUtils;
+import com.ic.ak.launcher.ui.dialog.AlertDialogManage;
+import com.ic.ak.launcher.ui.dialog.ShowDialogEvent;
 import com.ic.ak.launcher.util.IcLog;
 
+import org.greenrobot.eventbus.EventBus;
 
 
 public class HardwareDispose {
@@ -30,9 +35,6 @@ public class HardwareDispose {
     private static final String STRIP_ACTION = "com.ic.ACTION_STRIP";
     private static final String EVENT_KEY = "eventID";
 
-    public static final String ACTION_BATTERYLOW = "com.ic.ACTION_BATTERYLOW";
-    public static final String KEY_BATTERY_EVENT = "eventID";
-
     private static final String POWER_OFF_ACTION = "com.ic.action_IC_SHUTDOWN";
     private static final String CLS_POWER = "com.ic.ak.hardware.ui.ShutDownActivity";
 
@@ -44,9 +46,11 @@ public class HardwareDispose {
     private MutableLiveData<String> mObsHardwareHeart;
     private MutableLiveData<String> mObsHardwarePed;
 
+
     public HardwareDispose() {
         mObsHardwareHeart = new MediatorLiveData<>();
         mObsHardwarePed = new MediatorLiveData<>();
+
     }
 
     public MutableLiveData<String> getObsHardwareHeart() {
@@ -64,10 +68,9 @@ public class HardwareDispose {
         context.sendBroadcast(pedIntent);
     }
 
-    public static void testBatteryBroadcast(Context context, String messgae) {
-        Intent intent = new Intent(TXT_ACTION);
-        intent.putExtra(TYPE_KEY,2);
-        intent.putExtra(MSG_KEY,messgae);
+    public static void testTextBroadcast(Context context) {
+        Intent intent = new Intent(STRIP_ACTION);
+        intent.putExtra(EVENT_KEY,1);
         context.sendBroadcast(intent);
     }
 
@@ -84,7 +87,6 @@ public class HardwareDispose {
         }
         if (product == 1002) {
             filter.addAction(STRIP_ACTION);
-            filter.addAction(ACTION_BATTERYLOW);
         }
 
         context.registerReceiver(mIntentReceiver, filter);
@@ -119,24 +121,11 @@ public class HardwareDispose {
                         switch (event){
                             case 0:
                                 //取消
-                                startDialogActivity(context,1005,"");
+                                EventBus.getDefault().post(new ShowDialogEvent(0,0,null));
                                 break;
                             case 1:
                                 //低点
-                                startDialogActivity(context,1006,"");
-                                break;
-                        }
-                        break;
-                    case ACTION_BATTERYLOW:
-                        int battery = intent.getIntExtra(KEY_BATTERY_EVENT, -1);
-                        switch (battery){
-                            case 0:
-                                //取消
-                                startDialogActivity(context,1003,"");
-                                break;
-                            case 1:
-                                //低点
-                                startDialogActivity(context,1004,"");
+                                EventBus.getDefault().post(new ShowDialogEvent(1006,0,null));
                                 break;
                         }
                         break;
@@ -147,13 +136,11 @@ public class HardwareDispose {
                         if (!TextUtils.isEmpty(message)) {
                             switch (type){
                                 case 0:
-                                    startDialogActivity(context,1001,message);
-                                    break;
                                 case 1:
-                                    startDialogActivity(context,1000,message);
+                                    EventBus.getDefault().post(new ShowDialogEvent(1001,type,message));
                                     break;
                                 case 2:
-                                    startDialogActivity(context,1007,message);
+                                    EventBus.getDefault().post(new ShowDialogEvent(1007,type,message));
                                     break;
                             }
 
@@ -169,7 +156,7 @@ public class HardwareDispose {
                         break;
                     case ACTION_KEEPSIT_ALARM:
                         IcLog.i(TAG, "alarm");
-                        startDialogActivity(context,1002,"");
+                        EventBus.getDefault().post(new ShowDialogEvent(1002,0,null));
                         break;
                 }
             }
@@ -186,14 +173,4 @@ public class HardwareDispose {
         } catch (Exception e) {
         }
     }
-
-    private void startDialogActivity(Context context, int type, String message) {
-        Intent intent = new Intent();
-        intent.putExtra("TYPE", type);
-        intent.putExtra("MESSAGE", message);
-        intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
-        intent.setComponent(new ComponentName("com.ic.ak.launcher", "com.ic.ak.launcher.ui.DialogActivity"));
-        context.startActivity(intent);
-    }
-
 }
diff --git a/app/src/main/java/com/ic/ak/launcher/data/play/PlaySoundEvent.java b/app/src/main/java/com/ic/ak/launcher/data/play/PlaySoundEvent.java
new file mode 100644 (file)
index 0000000..7db2513
--- /dev/null
@@ -0,0 +1,9 @@
+package com.ic.ak.launcher.data.play;
+
+public class PlaySoundEvent {
+    public int key;
+
+    public PlaySoundEvent(int key) {
+        this.key = key;
+    }
+}
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/DialogActivity.java b/app/src/main/java/com/ic/ak/launcher/ui/DialogActivity.java
deleted file mode 100644 (file)
index 494f059..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-package com.ic.ak.launcher.ui;
-
-import androidx.appcompat.app.AppCompatActivity;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.KeyEvent;
-
-import com.ic.ak.launcher.BuildConfig;
-import com.ic.ak.launcher.R;
-import com.ic.ak.launcher.data.play.SoundPlayUtils;
-import com.ic.ak.launcher.ui.dialog.BatteryLowManage;
-import com.ic.ak.launcher.ui.dialog.DialogDismissEvent;
-import com.ic.ak.launcher.ui.dialog.NotificationDialogManage;
-import com.ic.ak.launcher.ui.dialog.SedentaryDialogManage;
-import com.ic.ak.launcher.ui.dialog.SlipTipsManage;
-import com.ic.ak.launcher.ui.dialog.TextShowDialogManage;
-
-import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-public class DialogActivity extends AppCompatActivity {
-
-    private NotificationDialogManage notificationManage;
-    private BatteryLowManage dialogLowManage;
-    private SlipTipsManage dialogSlipManage;
-    private SedentaryDialogManage sedentaryManage;
-    private TextShowDialogManage showDialogManage;
-
-    private SoundPlayUtils soundPlayUtils;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_dialog);
-        EventBus.getDefault().register(this);
-        analysisIntent(getIntent());
-    }
-
-    @Override
-    protected void onNewIntent(Intent intent) {
-        super.onNewIntent(intent);
-        analysisIntent(intent);
-    }
-
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent event) {
-        return true;
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        EventBus.getDefault().unregister(this);
-        notificationManage = null;
-        dialogLowManage = null;
-        dialogSlipManage = null;
-        sedentaryManage = null;
-        showDialogManage = null;
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onMessageEvent(DialogDismissEvent event) {
-        finish();
-        if(soundPlayUtils != null){
-            soundPlayUtils.stopSoundPlay(16);
-        }
-        switch (event.index) {
-            case 1:
-                if (dialogLowManage != null) {
-                    dialogLowManage.setShowLowTipsFalse();
-                }
-                break;
-            case 2:
-                if (dialogSlipManage != null) {
-                    dialogSlipManage.setSlipTipsFalse();
-                }
-                break;
-            case 3:
-                if (notificationManage != null) {
-                    notificationManage.setNotificationFalse();
-                }
-                break;
-            case 4:
-                if (sedentaryManage != null) {
-                    sedentaryManage.setSedentaryFalse();
-                }
-                break;
-            case 5:
-                if (showDialogManage != null) {
-                    showDialogManage.setTextShowFalse();
-                }
-                break;
-        }
-    }
-
-    private void analysisIntent(Intent intent) {
-        int type = 0;
-        String message = "";
-        if (intent != null) {
-            type = intent.getIntExtra("TYPE", 0);
-            message = intent.getStringExtra("MESSAGE");
-        }
-
-        switch (type) {
-            case 1000:
-            case 1001:
-                if (BuildConfig.productType == 1002) {
-                    if (showDialogManage == null) {
-                        showDialogManage = new TextShowDialogManage();
-                    } else {
-                        showDialogManage.dismissTextShowDialog(getSupportFragmentManager());
-                    }
-                    showDialogManage.showTextShowDialog(getSupportFragmentManager(), message);
-                } else if (BuildConfig.productType == 1001) {
-                    if (notificationManage == null) {
-                        notificationManage = new NotificationDialogManage();
-                    } else {
-                        notificationManage.dismissLowTipsDialog(getSupportFragmentManager());
-                    }
-                    notificationManage.showNotificationDialog(getSupportFragmentManager(), type,message);
-                }
-                break;
-            case 1002:
-                if (BuildConfig.productType == 1001) {
-                    if (sedentaryManage != null) {
-                        return;
-                    }
-                    sedentaryManage = new SedentaryDialogManage();
-                    sedentaryManage.showSedentaryDialog(getSupportFragmentManager());
-                }
-                break;
-            case 1003:
-                if (dialogLowManage != null) {
-                    dialogLowManage.dismissLowTipsDialog(getSupportFragmentManager());
-                }
-                break;
-            case 1004:
-                if (dialogLowManage == null) {
-                    dialogLowManage = new BatteryLowManage();
-                } else {
-                    dialogLowManage.dismissLowTipsDialog(getSupportFragmentManager());
-                }
-                dialogLowManage.showLowTipsDialog(getSupportFragmentManager());
-                break;
-            case 1005:
-                if (dialogSlipManage != null) {
-                    dialogSlipManage.dismissSlipTipsDialog(getSupportFragmentManager());
-                }
-                break;
-            case 1006:
-                playKeyboardSound();
-                if (dialogSlipManage == null) {
-                    dialogSlipManage = new SlipTipsManage();
-                } else {
-                    dialogSlipManage.dismissSlipTipsDialog(getSupportFragmentManager());
-                }
-                dialogSlipManage.showSlipTipsDialog(getSupportFragmentManager());
-                break;
-            case 1007:
-                playKeyboardSound();
-                if (BuildConfig.productType == 1002) {
-                    if (showDialogManage == null) {
-                        showDialogManage = new TextShowDialogManage();
-                    } else {
-                        showDialogManage.dismissTextShowDialog(getSupportFragmentManager());
-                    }
-                    showDialogManage.showTextShowDialog(getSupportFragmentManager(), message);
-                }
-                break;
-        }
-    }
-
-    private void playKeyboardSound(){
-        int type = BuildConfig.productType;
-        if(type == 1002){
-            //A9
-            if(soundPlayUtils == null){
-                soundPlayUtils= new SoundPlayUtils();
-                soundPlayUtils.playKeyboardSound(this,16);
-            }
-        }
-    }
-}
\ No newline at end of file
index 102a1f8..38d5c9a 100644 (file)
@@ -8,6 +8,8 @@ import androidx.viewpager2.widget.ViewPager2;
 
 import android.graphics.Rect;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
 import android.provider.Settings;
 import android.view.KeyEvent;
 import android.view.View;
@@ -15,15 +17,19 @@ import android.view.View;
 import com.ic.ak.launcher.BuildConfig;
 import com.ic.ak.launcher.LauncherApp;
 import com.ic.ak.launcher.R;
-import com.ic.ak.launcher.data.battery.BatteryConnectStateEvent;
 import com.ic.ak.launcher.data.hardware.HardwareDispose;
+import com.ic.ak.launcher.data.play.PlaySoundEvent;
 import com.ic.ak.launcher.data.play.SoundPlayUtils;
+import com.ic.ak.launcher.ui.dialog.AlertDialogManage;
+import com.ic.ak.launcher.ui.dialog.ShowDialogEvent;
 import com.ic.ak.launcher.util.ServiceUtil;
 
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
 
+import java.lang.ref.WeakReference;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 
@@ -44,6 +50,8 @@ public class MainActivity extends AppCompatActivity {
     private LauncherApp mApp;
     private SoundPlayUtils soundPlayUtils;
 
+    private AlertDialogManage dialogManage;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -69,14 +77,18 @@ public class MainActivity extends AppCompatActivity {
 
         soundPlayUtils = new SoundPlayUtils();
 
+        dialogManage = new AlertDialogManage();
+
         ServiceUtil.startServiceUtil(getApplicationContext(),
                 "com.ic.action.WORK_SERVICE", getPackageName());
+
+        handler = new TestHandler(this);
     }
 
     @Override
     protected void onResume() {
         super.onResume();
-        //HardwareDispose.testBatteryBroadcast(this,"腕带已佩戴");
+        handler.sendEmptyMessageDelayed(1,5000);
     }
 
     @Override
@@ -112,11 +124,41 @@ public class MainActivity extends AppCompatActivity {
     }
 
     @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onMessageEvent(BatteryConnectStateEvent event) {
-        if (event.state) {
-            soundPlayUtils.playKeyboardSound(this, 0);
-        } else {
-            soundPlayUtils.playKeyboardSound(this, 1);
+    public void onMessageEvent(PlaySoundEvent event) {
+        soundPlayUtils.playKeyboardSound(this, event.key);
+    }
+
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onMessageEvent(ShowDialogEvent event) {
+        switch (event.event){
+            case 0:
+                dialogManage.dismissLoadingDialog();
+                break;
+            case 1006:
+                soundPlayUtils.playKeyboardSound(this, 16);
+                dialogManage.showSlipLowDialog(this);
+                break;
+            case 1001:
+                if (BuildConfig.productType == 1002) {
+                    dialogManage.showTextDialog(this,event.message);
+                }else if(BuildConfig.productType == 1001){
+                    dialogManage.showNotificationDialog(this,this,event.type,event.message);
+                }
+                break;
+            case 1007:
+                if (BuildConfig.productType == 1002) {
+                    dialogManage.showTextDialog(this,event.message);
+                    soundPlayUtils.playKeyboardSound(this, 16);
+                }
+                break;
+            case 1002:
+                if (BuildConfig.productType == 1001) {
+                    dialogManage.showSedentaryDialog(this,this);
+                }
+                break;
+            case 1004:
+                dialogManage.showBatteryLowDialog(this);
+                break;
         }
     }
 
@@ -137,7 +179,7 @@ public class MainActivity extends AppCompatActivity {
         indicatorRv.setAdapter(indicatorAdapter);
     }
 
-    private ViewPager2.OnPageChangeCallback scrollListener = new ViewPager2.OnPageChangeCallback() {
+    private final ViewPager2.OnPageChangeCallback scrollListener = new ViewPager2.OnPageChangeCallback() {
         @Override
         public void onPageSelected(int position) {
             super.onPageSelected(position);
@@ -170,7 +212,7 @@ public class MainActivity extends AppCompatActivity {
     }
 
     public static class SpacesItemDecoration extends RecyclerView.ItemDecoration {
-        private int space;
+        private final int space;
 
         public SpacesItemDecoration(int space) {
             this.space = space;
@@ -183,4 +225,24 @@ public class MainActivity extends AppCompatActivity {
             outRect.left = space;
         }
     }
+
+    private TestHandler handler;
+
+    private static class TestHandler extends Handler{
+        private WeakReference<MainActivity> mWR;
+
+        public TestHandler(MainActivity activity) {
+            this.mWR = new WeakReference<>(activity);
+        }
+
+        @Override
+        public void dispatchMessage(@NonNull Message msg) {
+            super.dispatchMessage(msg);
+            mWR.get().testDialogBroadcast();
+        }
+    }
+
+    private void testDialogBroadcast(){
+        HardwareDispose.testTextBroadcast(this);
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/dialog/AlertDialogManage.java b/app/src/main/java/com/ic/ak/launcher/ui/dialog/AlertDialogManage.java
new file mode 100644 (file)
index 0000000..0053ae7
--- /dev/null
@@ -0,0 +1,243 @@
+package com.ic.ak.launcher.ui.dialog;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.util.DisplayMetrics;
+import android.view.Gravity;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.content.ContextCompat;
+import androidx.core.content.res.ResourcesCompat;
+
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+import com.ic.ak.launcher.R;
+import com.ic.ak.launcher.util.IcLog;
+import com.ic.ak.launcher.widget.MultiRowTextView;
+
+public class AlertDialogManage {
+
+    private AlertDialog alertDialog;
+
+    public void showSedentaryDialog(Context context, AppCompatActivity activity){
+        if (alertDialog != null) {
+            dismissLoadingDialog();
+        }
+
+        View view = LayoutInflater.from(context).inflate(R.layout.dialog_sedentary_alarm,
+                null,
+                false);
+        ImageView btClose = view.findViewById(R.id.sedentary_close);
+        btClose.setOnClickListener(v ->dismissLoadingDialog());
+        alertDialog = new MaterialAlertDialogBuilder(context)
+                .setView(view)
+                .setBackground(ContextCompat.getDrawable(context, R.drawable.shape_sedentary_dialog_bg))
+                .setOnKeyListener((dialog, keyCode, event) -> {
+                    if (keyCode == KeyEvent.KEYCODE_BACK) {
+                        dismissLoadingDialog();
+                    }
+                    return false;
+                })
+                .create();
+
+        Window window = alertDialog.getWindow();
+        if (window != null) {
+            DisplayMetrics dm = new DisplayMetrics();
+            activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
+            window.setLayout(dm.widthPixels, dm.heightPixels);
+            window.setType(WindowManager.LayoutParams.TYPE_PHONE);
+        }
+
+        alertDialog.show();
+    }
+
+    public void showSlipLowDialog(Context context) {
+        if (alertDialog != null) {
+            dismissLoadingDialog();
+        }
+
+        View view = LayoutInflater.from(context).inflate(R.layout.fragment_image_slip,
+                null, false);
+        view.setOnClickListener(v -> {
+            dismissLoadingDialog();
+        });
+        alertDialog = new MaterialAlertDialogBuilder(context)
+                .setView(view)
+                .setBackground(ContextCompat.getDrawable(context, R.drawable.shape_slip_alert_dialog_bg))
+                .setOnKeyListener((dialog, keyCode, event) -> {
+                    if (keyCode == KeyEvent.KEYCODE_BACK) {
+                        dismissLoadingDialog();
+                    }
+                    return false;
+                })
+                .create();
+
+        Window window = alertDialog.getWindow();
+        if (window != null) {
+            WindowManager.LayoutParams lp = window.getAttributes();
+            if(lp != null){
+                window.setGravity( Gravity.CENTER_HORIZONTAL | Gravity.TOP);
+                lp.y = 20;
+            }
+            window.setLayout(180, 180);
+            window.setType(WindowManager.LayoutParams.TYPE_PHONE);
+        }
+
+        alertDialog.show();
+    }
+
+    public void showBatteryLowDialog(Context context) {
+        if (alertDialog != null) {
+            dismissLoadingDialog();
+        }
+
+        View view = LayoutInflater.from(context).inflate(R.layout.fragment_image_battery_low,
+                null, false);
+        view.setOnClickListener(v -> {
+            dismissLoadingDialog();
+        });
+        alertDialog = new MaterialAlertDialogBuilder(context)
+                .setView(view)
+                .setBackground(ContextCompat.getDrawable(context, R.drawable.shape_alert_dialog_bg))
+                .setOnKeyListener((dialog, keyCode, event) -> {
+                    if (keyCode == KeyEvent.KEYCODE_BACK) {
+                        dismissLoadingDialog();
+                    }
+                    return false;
+                })
+                .create();
+
+        Window window = alertDialog.getWindow();
+        if (window != null) {
+            WindowManager.LayoutParams lp = window.getAttributes();
+            if(lp != null){
+                window.setGravity( Gravity.CENTER_HORIZONTAL | Gravity.TOP);
+                lp.y = 20;
+            }
+            window.setLayout(180, 180);
+            window.setType(WindowManager.LayoutParams.TYPE_PHONE);
+        }
+
+        alertDialog.show();
+    }
+
+    public void showTextDialog(Context context,String message){
+        if (alertDialog != null) {
+            dismissLoadingDialog();
+        }
+
+        View view =  LayoutInflater.from(context).inflate(R.layout.dialog_text_show_a9, null, false);
+        TextView textMessage = view.findViewById(R.id.message_tips_id);
+        textMessage.setText(message);
+        view.setOnClickListener(v -> dismissLoadingDialog());
+
+        alertDialog = new MaterialAlertDialogBuilder(context)
+                .setView(view)
+                .setBackground(ContextCompat.getDrawable(context, R.drawable.shape_dialog_notification_bg))
+                .setOnKeyListener((dialog, keyCode, event) -> {
+                    if (keyCode == KeyEvent.KEYCODE_BACK) {
+                        dismissLoadingDialog();
+                    }
+                    return false;
+                })
+                .create();
+
+        Window window = alertDialog.getWindow();
+        if (window != null) {
+            WindowManager.LayoutParams lp = window.getAttributes();
+            window.setLayout(220, 140);
+            window.setType(WindowManager.LayoutParams.TYPE_PHONE);
+        }
+        alertDialog.show();
+    }
+
+    public void showNotificationDialog(AppCompatActivity activity,Context context,int type,String message){
+        if (alertDialog != null) {
+            dismissLoadingDialog();
+        }
+
+        View view = LayoutInflater.from(context).inflate(R.layout.dialog_notification, null, false);
+        MultiRowTextView msgText = view.findViewById(R.id.dialog_message);
+        TextView textView = view.findViewById(R.id.dialog_title);
+        if(type == 1000){
+            textView.setText("短信消息");
+        }
+        Button btClose = view.findViewById(R.id.dialog_bt_close);
+        Button btOpen = view.findViewById(R.id.dialog_bt_open);
+        msgText.setText(message);
+        btClose.setOnClickListener(v -> dismissLoadingDialog());
+
+        btOpen.setOnClickListener(v -> {
+            if(type == 1000){
+                startMessageActivity(context);
+            }else if(type == 1001){
+                startNotificationActivity(context,message);
+            }
+            dismissLoadingDialog();
+        });
+
+        alertDialog = new MaterialAlertDialogBuilder(context)
+                .setView(view)
+                .setBackground(ContextCompat.getDrawable(context, R.drawable.shape_dialog_notification_bg))
+                .setOnKeyListener((dialog, keyCode, event) -> {
+                    if (keyCode == KeyEvent.KEYCODE_BACK) {
+                        dismissLoadingDialog();
+                    }
+                    return false;
+                })
+                .create();
+
+        Window window = alertDialog.getWindow();
+        if (window != null) {
+            DisplayMetrics dm = new DisplayMetrics();
+            activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
+            window.setLayout(dm.widthPixels, 220);
+            window.setType(WindowManager.LayoutParams.TYPE_PHONE);
+        }
+
+        alertDialog.show();
+    }
+
+    public void dismissLoadingDialog() {
+        if (alertDialog != null) {
+            alertDialog.dismiss();
+            alertDialog = null;
+        }
+    }
+
+    private void startNotificationActivity(Context context,String message) {
+        try {
+            Intent intent = new Intent();
+            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            intent.putExtra("N_MESSAGE", message);
+            intent.setComponent(new ComponentName(
+                    "com.ic.ak.launcher",
+                    "com.ic.ak.launcher.ui.notification.NotificationActivity"));
+            context.startActivity(intent);
+        } catch (Exception e) {
+        }
+    }
+
+    private void startMessageActivity(Context context) {
+        try {
+            Intent intent = new Intent(Intent.ACTION_MAIN);
+            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            intent.setComponent(new ComponentName(
+                    "com.ic.message", "com.ic.message.MainActivity"));
+            context.startActivity(intent);
+        } catch (Exception e) {
+            IcLog.e("HardwareDispose","",e);
+        }
+    }
+}
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/dialog/BatteryLowFragment.java b/app/src/main/java/com/ic/ak/launcher/ui/dialog/BatteryLowFragment.java
deleted file mode 100644 (file)
index 29d6298..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.ic.ak.launcher.ui.dialog;
-
-import android.app.Dialog;
-import android.os.Bundle;
-import android.util.DisplayMetrics;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-import androidx.fragment.app.DialogFragment;
-
-import com.ic.ak.launcher.R;
-
-import org.greenrobot.eventbus.EventBus;
-
-
-public class BatteryLowFragment extends DialogFragment {
-
-    public static BatteryLowFragment newInstance() {
-        return new BatteryLowFragment();
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setStyle(DialogFragment.STYLE_NORMAL, R.style.TipsDialog);
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        Dialog dialog = getDialog();
-        if (dialog != null) {
-            DisplayMetrics dm = new DisplayMetrics();
-            getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
-            dialog.getWindow().setLayout((int) (dm.widthPixels*0.85),180);
-            dialog.setCancelable(false);
-        }
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // Inflate the layout for this fragment
-        View view =  inflater.inflate(R.layout.fragment_image_battery_low, container, false);
-        ImageView btClose = view.findViewById(R.id.slip_bt_close);
-        btClose.setOnClickListener(v ->{
-            EventBus.getDefault().post(new DialogDismissEvent(1));
-            dismiss();
-        });
-        return view;
-    }
-}
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/dialog/BatteryLowManage.java b/app/src/main/java/com/ic/ak/launcher/ui/dialog/BatteryLowManage.java
deleted file mode 100644 (file)
index 98780d4..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.ic.ak.launcher.ui.dialog;
-
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentTransaction;
-
-public class BatteryLowManage {
-
-    private static final String TAG = "LowTips";
-    private boolean isShowLowTips = false;
-
-    public void setShowLowTipsFalse(){
-        isShowLowTips=false;
-    }
-
-    public void showLowTipsDialog(FragmentManager manager) {
-        if (isShowLowTips || manager == null) {
-            return;
-        }
-        FragmentTransaction ft = manager.beginTransaction();
-        Fragment prev = manager.findFragmentByTag(TAG);
-        if (prev != null) {
-            ft.remove(prev);
-        }
-        ft.addToBackStack(null);
-
-        try {
-            // Create and show the dialog.
-            DialogFragment newFragment = BatteryLowFragment.newInstance();
-            newFragment.show(ft, TAG);
-        } catch (IllegalStateException e) {
-        } finally {
-            isShowLowTips = true;
-        }
-    }
-
-    public void dismissLowTipsDialog(FragmentManager manager) {
-        if (!isShowLowTips || manager == null) {
-            return;
-        }
-        Fragment prev = manager.findFragmentByTag(TAG);
-        if (prev != null) {
-            DialogFragment df = (DialogFragment) prev;
-            df.dismiss();
-        }
-
-        isShowLowTips = false;
-    }
-}
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/dialog/DialogDismissEvent.java b/app/src/main/java/com/ic/ak/launcher/ui/dialog/DialogDismissEvent.java
deleted file mode 100644 (file)
index b2c6d20..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.ic.ak.launcher.ui.dialog;
-
-public class DialogDismissEvent {
-    public int index;
-
-    public DialogDismissEvent(int index) {
-        this.index = index;
-    }
-}
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/dialog/NotificationDialogFragment.java b/app/src/main/java/com/ic/ak/launcher/ui/dialog/NotificationDialogFragment.java
deleted file mode 100644 (file)
index 8a6bb91..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-package com.ic.ak.launcher.ui.dialog;
-
-import android.app.Dialog;
-import android.content.ComponentName;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.DisplayMetrics;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.DialogFragment;
-
-import com.ic.ak.launcher.R;
-import com.ic.ak.launcher.util.IcLog;
-import com.ic.ak.launcher.widget.MultiRowTextView;
-
-import org.greenrobot.eventbus.EventBus;
-
-public class NotificationDialogFragment extends DialogFragment {
-
-    private static final String TYPE_PARAM = "TYPE_PARAM";
-    private static final String MESSAGE_PARAM = "MESSAGE_PARAM";
-    private String message;
-    private int type;
-
-    public static NotificationDialogFragment newInstance(int type,String message) {
-        NotificationDialogFragment fragment = new NotificationDialogFragment();
-        Bundle args = new Bundle();
-        args.putString(MESSAGE_PARAM, message);
-        args.putInt(TYPE_PARAM,type);
-        fragment.setArguments(args);
-        return fragment;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setStyle(DialogFragment.STYLE_NORMAL, R.style.NotificationDialog);
-        if (getArguments() != null) {
-            type = getArguments().getInt(TYPE_PARAM);
-            message = getArguments().getString(MESSAGE_PARAM);
-        }
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        Dialog dialog = getDialog();
-        if (dialog != null) {
-            DisplayMetrics dm = new DisplayMetrics();
-            getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
-            dialog.getWindow().setLayout((int) (dm.widthPixels * 0.95), 180);
-            dialog.setCancelable(false);
-        }
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // Inflate the layout for this fragment
-        View view = inflater.inflate(R.layout.dialog_notification, container, false);
-        MultiRowTextView msgText = view.findViewById(R.id.dialog_message);
-        TextView textView = view.findViewById(R.id.dialog_title);
-        if(type == 1000){
-            textView.setText("短信消息");
-        }
-        Button btClose = view.findViewById(R.id.dialog_bt_close);
-        Button btOpen = view.findViewById(R.id.dialog_bt_open);
-        msgText.setText(message);
-        btClose.setOnClickListener(v -> {
-            EventBus.getDefault().post(new DialogDismissEvent(3));
-            dismiss();
-        });
-
-        btOpen.setOnClickListener(v -> {
-            EventBus.getDefault().post(new DialogDismissEvent(3));
-            if(type == 1000){
-                startMessageActivity();
-            }else if(type == 1001){
-                startNotificationActivity(message);
-            }
-            dismiss();
-        });
-        return view;
-    }
-
-    private void startNotificationActivity(String message) {
-        try {
-            Intent intent = new Intent();
-            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-            intent.putExtra("N_MESSAGE", message);
-            intent.setComponent(new ComponentName(
-                    "com.ic.ak.launcher",
-                    "com.ic.ak.launcher.ui.notification.NotificationActivity"));
-            getActivity().startActivity(intent);
-        } catch (Exception e) {
-        }
-    }
-
-    private void startMessageActivity() {
-        try {
-            Intent intent = new Intent(Intent.ACTION_MAIN);
-            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-            intent.setComponent(new ComponentName(
-                    "com.ic.message", "com.ic.message.MainActivity"));
-            getActivity().startActivity(intent);
-        } catch (Exception e) {
-            IcLog.e("HardwareDispose","",e);
-        }
-    }
-}
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/dialog/NotificationDialogManage.java b/app/src/main/java/com/ic/ak/launcher/ui/dialog/NotificationDialogManage.java
deleted file mode 100644 (file)
index 5c21f72..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.ic.ak.launcher.ui.dialog;
-
-import android.app.AlertDialog;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentTransaction;
-
-import com.ic.ak.launcher.R;
-
-public class NotificationDialogManage {
-
-    private static final String TAG = "IcNotification";
-    private boolean isNotificationDialog = false;
-
-    public void setNotificationFalse(){
-        isNotificationDialog=false;
-    }
-
-    public void showNotificationDialog(FragmentManager manager, int type,String message) {
-        if (isNotificationDialog || manager == null) {
-            return;
-        }
-        FragmentTransaction ft = manager.beginTransaction();
-        Fragment prev = manager.findFragmentByTag(TAG);
-        if (prev != null) {
-            ft.remove(prev);
-        }
-        ft.addToBackStack(null);
-
-        try {
-            // Create and show the dialog.
-            DialogFragment newFragment = NotificationDialogFragment.newInstance(type,message);
-            newFragment.show(ft, TAG);
-        } catch (IllegalStateException e) {
-        } finally {
-            isNotificationDialog = true;
-        }
-    }
-
-    public void dismissLowTipsDialog(FragmentManager manager) {
-        if (!isNotificationDialog || manager == null) {
-            return;
-        }
-        Fragment prev = manager.findFragmentByTag(TAG);
-        if (prev != null) {
-            DialogFragment df = (DialogFragment) prev;
-            df.dismiss();
-        }
-
-        isNotificationDialog = false;
-    }
-}
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/dialog/SedentaryAlarmDialogFragment.java b/app/src/main/java/com/ic/ak/launcher/ui/dialog/SedentaryAlarmDialogFragment.java
deleted file mode 100644 (file)
index 0324aa8..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.ic.ak.launcher.ui.dialog;
-
-import android.app.Dialog;
-import android.os.Bundle;
-import android.util.DisplayMetrics;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.ImageView;
-
-import androidx.fragment.app.DialogFragment;
-
-import com.ic.ak.launcher.R;
-
-import org.greenrobot.eventbus.EventBus;
-
-public class SedentaryAlarmDialogFragment extends DialogFragment {
-
-    public static SedentaryAlarmDialogFragment newInstance() {
-        return new SedentaryAlarmDialogFragment();
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setStyle(DialogFragment.STYLE_NORMAL, R.style.TipsDialog);
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        Dialog dialog = getDialog();
-        if (dialog != null) {
-            DisplayMetrics dm = new DisplayMetrics();
-            getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
-            dialog.getWindow().setLayout(dm.widthPixels, dm.heightPixels);
-            dialog.setCancelable(false);
-        }
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // Inflate the layout for this fragment
-        View view = inflater.inflate(R.layout.dialog_sedentary_alarm, container, false);
-        ImageView btClose = view.findViewById(R.id.sedentary_close);
-        btClose.setOnClickListener(v -> {
-            EventBus.getDefault().post(new DialogDismissEvent(4));
-            dismiss();
-        });
-        return view;
-    }
-}
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/dialog/SedentaryDialogManage.java b/app/src/main/java/com/ic/ak/launcher/ui/dialog/SedentaryDialogManage.java
deleted file mode 100644 (file)
index 1d9ddfb..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.ic.ak.launcher.ui.dialog;
-
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentTransaction;
-
-public class SedentaryDialogManage {
-
-    private static final String TAG = "IcSedentary";
-    private boolean isNotificationDialog = false;
-
-    public void setSedentaryFalse(){
-        isNotificationDialog=false;
-    }
-
-    public void showSedentaryDialog(FragmentManager manager) {
-        if (isNotificationDialog || manager == null) {
-            return;
-        }
-        FragmentTransaction ft = manager.beginTransaction();
-        Fragment prev = manager.findFragmentByTag(TAG);
-        if (prev != null) {
-            ft.remove(prev);
-        }
-        ft.addToBackStack(null);
-
-        try {
-            // Create and show the dialog.
-            DialogFragment newFragment = SedentaryAlarmDialogFragment.newInstance();
-            newFragment.show(ft, TAG);
-        } catch (IllegalStateException e) {
-        } finally {
-            isNotificationDialog = true;
-        }
-    }
-
-    public void dismissSedentaryDialog(FragmentManager manager) {
-        if (!isNotificationDialog || manager == null) {
-            return;
-        }
-        Fragment prev = manager.findFragmentByTag(TAG);
-        if (prev != null) {
-            DialogFragment df = (DialogFragment) prev;
-            df.dismiss();
-        }
-
-        isNotificationDialog = false;
-    }
-}
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/dialog/ShowDialogEvent.java b/app/src/main/java/com/ic/ak/launcher/ui/dialog/ShowDialogEvent.java
new file mode 100644 (file)
index 0000000..4c705df
--- /dev/null
@@ -0,0 +1,13 @@
+package com.ic.ak.launcher.ui.dialog;
+
+public class ShowDialogEvent {
+    public int event;
+    public int type;
+    public String message;
+
+    public ShowDialogEvent(int event, int type, String message) {
+        this.event = event;
+        this.type = type;
+        this.message = message;
+    }
+}
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/dialog/SlipTipsFragment.java b/app/src/main/java/com/ic/ak/launcher/ui/dialog/SlipTipsFragment.java
deleted file mode 100644 (file)
index 52000a0..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.ic.ak.launcher.ui.dialog;
-
-import android.app.Dialog;
-import android.os.Bundle;
-import android.util.DisplayMetrics;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-import androidx.fragment.app.DialogFragment;
-
-import com.ic.ak.launcher.R;
-
-import org.greenrobot.eventbus.EventBus;
-
-
-public class SlipTipsFragment extends DialogFragment {
-
-
-    public static SlipTipsFragment newInstance() {
-        return new SlipTipsFragment();
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setStyle(DialogFragment.STYLE_NORMAL, R.style.TipsDialog);
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        Dialog dialog = getDialog();
-        if (dialog != null) {
-            DisplayMetrics dm = new DisplayMetrics();
-            getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
-            dialog.getWindow().setLayout((int) (dm.widthPixels*0.85),180);
-            dialog.setCancelable(false);
-        }
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // Inflate the layout for this fragment
-        View view =  inflater.inflate(R.layout.fragment_image_slip, container, false);
-        ImageView btClose = view.findViewById(R.id.slip_bt_close);
-        btClose.setOnClickListener(v ->{
-            EventBus.getDefault().post(new DialogDismissEvent(2));
-            dismiss();
-        });
-        return view;
-    }
-}
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/dialog/SlipTipsManage.java b/app/src/main/java/com/ic/ak/launcher/ui/dialog/SlipTipsManage.java
deleted file mode 100644 (file)
index 0c80bc6..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.ic.ak.launcher.ui.dialog;
-
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentTransaction;
-
-public class SlipTipsManage {
-
-    private static final String TAG = "SlipTips";
-    private boolean isShowSlipTips = false;
-
-    public void setSlipTipsFalse(){
-        isShowSlipTips=false;
-    }
-
-    public void showSlipTipsDialog(FragmentManager manager) {
-        if (isShowSlipTips || manager == null) {
-            return;
-        }
-        FragmentTransaction ft = manager.beginTransaction();
-        Fragment prev = manager.findFragmentByTag(TAG);
-        if (prev != null) {
-            ft.remove(prev);
-        }
-        ft.addToBackStack(null);
-
-        try {
-            // Create and show the dialog.
-            DialogFragment newFragment = SlipTipsFragment.newInstance();
-            newFragment.show(ft, TAG);
-        } catch (IllegalStateException e) {
-        } finally {
-            isShowSlipTips = true;
-        }
-    }
-
-    public void dismissSlipTipsDialog(FragmentManager manager) {
-        if (!isShowSlipTips || manager == null) {
-            return;
-        }
-        Fragment prev = manager.findFragmentByTag(TAG);
-        if (prev != null) {
-            DialogFragment df = (DialogFragment) prev;
-            df.dismiss();
-        }
-
-        isShowSlipTips = false;
-    }
-}
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/dialog/TextShowDialogFragment.java b/app/src/main/java/com/ic/ak/launcher/ui/dialog/TextShowDialogFragment.java
deleted file mode 100644 (file)
index 289e447..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.ic.ak.launcher.ui.dialog;
-
-import android.app.Dialog;
-import android.os.Bundle;
-import android.util.DisplayMetrics;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.fragment.app.DialogFragment;
-
-import com.ic.ak.launcher.R;
-
-import org.greenrobot.eventbus.EventBus;
-
-
-public class TextShowDialogFragment extends DialogFragment {
-
-    private static final String MESSAGE_PARAM = "MESSAGE_PARAM";
-    private String message;
-
-    public static TextShowDialogFragment newInstance(String message) {
-        TextShowDialogFragment fragment = new TextShowDialogFragment();
-        Bundle args = new Bundle();
-        args.putString(MESSAGE_PARAM, message);
-        fragment.setArguments(args);
-        return fragment;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setStyle(DialogFragment.STYLE_NORMAL, R.style.TipsDialog);
-        if (getArguments() != null) {
-            message = getArguments().getString(MESSAGE_PARAM);
-        }
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        Dialog dialog = getDialog();
-        if (dialog != null) {
-            DisplayMetrics dm = new DisplayMetrics();
-            getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
-            dialog.getWindow().setLayout((int) (dm.widthPixels*0.85),180);
-            dialog.setCancelable(false);
-        }
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // Inflate the layout for this fragment
-        View view =  inflater.inflate(R.layout.dialog_text_show_a9, container, false);
-        TextView textMessage = view.findViewById(R.id.message_tips_id);
-        ImageView btClose = view.findViewById(R.id.slip_bt_close);
-        textMessage.setText(message);
-        btClose.setOnClickListener(v ->{
-            EventBus.getDefault().post(new DialogDismissEvent(5));
-            dismiss();
-        });
-        return view;
-    }
-}
diff --git a/app/src/main/java/com/ic/ak/launcher/ui/dialog/TextShowDialogManage.java b/app/src/main/java/com/ic/ak/launcher/ui/dialog/TextShowDialogManage.java
deleted file mode 100644 (file)
index 19013d9..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.ic.ak.launcher.ui.dialog;
-
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentTransaction;
-
-public class TextShowDialogManage {
-
-    private static final String TAG = "IcA9TextShow";
-    private boolean isShowDialog = false;
-
-    public void setTextShowFalse(){
-        isShowDialog=false;
-    }
-
-    public void showTextShowDialog(FragmentManager manager,String message) {
-        if (isShowDialog || manager == null) {
-            return;
-        }
-        FragmentTransaction ft = manager.beginTransaction();
-        Fragment prev = manager.findFragmentByTag(TAG);
-        if (prev != null) {
-            ft.remove(prev);
-        }
-        ft.addToBackStack(null);
-
-        try {
-            // Create and show the dialog.
-            DialogFragment newFragment = TextShowDialogFragment.newInstance(message);
-            newFragment.show(ft, TAG);
-        } catch (IllegalStateException e) {
-        } finally {
-            isShowDialog = true;
-        }
-    }
-
-    public void dismissTextShowDialog(FragmentManager manager) {
-        if (!isShowDialog || manager == null) {
-            return;
-        }
-        Fragment prev = manager.findFragmentByTag(TAG);
-        if (prev != null) {
-            DialogFragment df = (DialogFragment) prev;
-            df.dismiss();
-        }
-
-        isShowDialog = false;
-    }
-}
diff --git a/app/src/main/res/drawable/shape_alert_dialog_bg.xml b/app/src/main/res/drawable/shape_alert_dialog_bg.xml
new file mode 100644 (file)
index 0000000..514ba52
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <!-- 矩形的圆角弧度 -->
+    <corners android:radius="150dp" />
+    <!-- 矩形的填充色 -->
+    <solid android:color="#262626" />
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_black_alert_dialog_bg.xml b/app/src/main/res/drawable/shape_black_alert_dialog_bg.xml
new file mode 100644 (file)
index 0000000..bdcf6bc
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <!-- 矩形的圆角弧度 -->
+    <corners android:radius="25dp" />
+    <!-- 矩形的填充色 -->
+    <solid android:color="#000000" />
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_sedentary_dialog_bg.xml b/app/src/main/res/drawable/shape_sedentary_dialog_bg.xml
new file mode 100644 (file)
index 0000000..a73616e
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <!-- 矩形的填充色 -->
+    <solid android:color="#040401" />
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_slip_alert_dialog_bg.xml b/app/src/main/res/drawable/shape_slip_alert_dialog_bg.xml
new file mode 100644 (file)
index 0000000..0dd9a38
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <!-- 矩形的圆角弧度 -->
+    <corners android:radius="150dp" />
+    <!-- 矩形的填充色 -->
+    <solid android:color="#bd2c2c" />
+</shape>
\ No newline at end of file
index f72a19e..3278199 100644 (file)
@@ -35,7 +35,7 @@
 
     <Button
         android:id="@+id/dialog_bt_close"
-        android:layout_width="120dp"
+        android:layout_width="100dp"
         android:layout_height="60dp"
         android:layout_below="@id/dialog_line"
         android:layout_marginStart="15dp"
         android:background="@drawable/shape_dialog_notification_button_close"
         android:text="@string/dialog_btn_close"
         android:textColor="@color/colorAppTitle"
-        android:textSize="32sp" />
+        android:textSize="30sp" />
 
     <Button
         android:id="@+id/dialog_bt_open"
-        android:layout_width="120dp"
+        android:layout_width="100dp"
         android:layout_height="60dp"
         android:layout_below="@id/dialog_line"
         android:layout_alignParentEnd="true"
@@ -56,5 +56,5 @@
         android:background="@drawable/shape_dialog_notification_button_open"
         android:text="@string/dialog_btn_open"
         android:textColor="@color/colorAppTitle"
-        android:textSize="32sp" />
+        android:textSize="30sp" />
 </RelativeLayout>
\ No newline at end of file
index c89a294..1da3532 100644 (file)
@@ -1,29 +1,19 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <TextView
+    <com.ic.ak.launcher.widget.MultiRowTextView
         android:id="@+id/message_tips_id"
-       style="@style/BaseTextStyle"
+        style="@style/BaseTextStyle"
         android:textSize="28sp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"/>
+        android:layout_marginStart="10dp"
+        android:layout_marginTop="10dp"
+        android:layout_marginEnd="10dp"
+        android:ellipsize="end"
+        android:lines="2"
+        android:maxEms="10"/>
 
-    <ImageView
-        android:id="@+id/slip_bt_close"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:src="@drawable/ic_close_24"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintVertical_bias="0.05"
-        app:layout_constraintHorizontal_bias="0.95"/>
-
-</androidx.constraintlayout.widget.ConstraintLayout>
+</LinearLayout>
index 655dffe..609bdf0 100644 (file)
@@ -1,31 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
     <ImageView
-        android:id="@+id/image_tips_image"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:src="@mipmap/low_power_battery"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintVertical_bias="0.43" />
-
-    <ImageView
-        android:id="@+id/slip_bt_close"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:src="@drawable/ic_close_24"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintVertical_bias="0.05"
-        app:layout_constraintHorizontal_bias="0.95"/>
-
-</androidx.constraintlayout.widget.ConstraintLayout>
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="50dp"/>
+</RelativeLayout>
index 49319d7..0060925 100644 (file)
@@ -1,31 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
     <ImageView
-        android:id="@+id/image_tips_image"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:src="@mipmap/ic_band_off"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintVertical_bias="0.73" />
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="30dp"/>
 
-    <ImageView
-        android:id="@+id/slip_bt_close"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:src="@drawable/ic_close_24"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintVertical_bias="0.05"
-        app:layout_constraintHorizontal_bias="0.95"/>
+</RelativeLayout>
 
-</androidx.constraintlayout.widget.ConstraintLayout>
index 3f93127..1806127 100644 (file)
@@ -1,6 +1,6 @@
 <resources>
     <!-- Base application theme. -->
-    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
+    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
         <!-- Customize your theme here. -->
         <item name="colorPrimary">@color/colorPrimary</item>
         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
         <item name="android:textSize">@dimen/app_title_text_size</item>
         <item name="android:includeFontPadding">false</item>
     </style>
-
-    <style name="TipsDialog" parent="android:Theme.Holo.Light.Dialog">
-        <item name="android:windowBackground">#000000</item>
-        <item name="android:windowFrame">@null</item>
-        <item name="android:backgroundDimEnabled">true</item>
-        <item name="android:windowIsTranslucent">true</item>
-        <item name="android:windowNoTitle">true</item>
-        <item name="android:windowFullscreen">true</item>
-        <item name="android:windowContentOverlay">@null</item>
-    </style>
-
-    <style name="NotificationDialog" parent="android:Theme.Holo.Light.Dialog">
-        <item name="android:windowBackground">@drawable/shape_dialog_notification_bg</item>
-        <item name="android:windowFrame">@null</item>
-        <item name="android:backgroundDimEnabled">true</item>
-        <item name="android:windowIsTranslucent">true</item>
-        <item name="android:windowNoTitle">true</item>
-        <item name="android:windowFullscreen">true</item>
-        <item name="android:windowContentOverlay">@null</item>
-        <item name="android:windowIsFloating">true</item>
-    </style>
-
-    <style name="DialogActivityStyle" parent="Theme.AppCompat.Light.NoActionBar">
-        <item name="android:windowFullscreen">true</item>
-        <item name="windowNoTitle">true</item>
-        <item name="android:windowContentOverlay">@null</item>
-        <item name="android:windowBackground">@android:color/transparent</item>
-        <item name="android:colorBackgroundCacheHint">@null</item>
-        <item name="android:windowIsTranslucent">true</item>
-        <!-- Note that we use the base animation style here (that is no
-             animations) because we really have no idea how this kind of
-             activity will be used. -->
-        <item name="android:windowAnimationStyle">@android:style/Animation</item>
-    </style>
-
 </resources>
\ No newline at end of file