OSDN Git Service

Disable WindowManager animations
authorBraden Farmer <farmerbb@gmail.com>
Mon, 16 Nov 2020 04:47:50 +0000 (21:47 -0700)
committerBraden Farmer <farmerbb@gmail.com>
Mon, 16 Nov 2020 04:47:50 +0000 (21:47 -0700)
app/src/main/java/com/farmerbb/taskbar/ui/ViewParams.java

index 502e89a..e8d3fa7 100644 (file)
@@ -20,6 +20,8 @@ import android.view.WindowManager;
 
 import com.farmerbb.taskbar.util.U;
 
+import java.lang.reflect.Field;
+
 public class ViewParams {
     public int width;
     public int height;
@@ -50,6 +52,20 @@ public class ViewParams {
         if(bottomMargin > -1)
             wmParams.y = bottomMargin;
 
+        U.allowReflection();
+        try {
+            Class<?> layoutParamsClass = Class.forName("android.view.WindowManager$LayoutParams");
+
+            Field privateFlags = layoutParamsClass.getField("privateFlags");
+            Field noAnim = layoutParamsClass.getField("PRIVATE_FLAG_NO_MOVE_ANIMATION");
+
+            int privateFlagsValue = privateFlags.getInt(wmParams);
+            int noAnimFlag = noAnim.getInt(wmParams);
+            privateFlagsValue |= noAnimFlag;
+
+            privateFlags.setInt(wmParams, privateFlagsValue);
+        } catch (Exception ignored) {}
+
         return wmParams;
     }