Implement change SIM animation

CheckableLabledButton will no longer set icon if the icon has not changed, so the animation will not be interrupted.

Bug: 64215256
Test: N/A
PiperOrigin-RevId: 176047325
Change-Id: I8cb0c6e706b931406e78c91821f75e266e453ceb
diff --git a/java/com/android/incallui/incall/impl/ButtonController.java b/java/com/android/incallui/incall/impl/ButtonController.java
index cefbd72..5e37a49 100644
--- a/java/com/android/incallui/incall/impl/ButtonController.java
+++ b/java/com/android/incallui/incall/impl/ButtonController.java
@@ -16,6 +16,7 @@
 
 package com.android.incallui.incall.impl;
 
+import android.graphics.drawable.AnimationDrawable;
 import android.support.annotation.CallSuper;
 import android.support.annotation.DrawableRes;
 import android.support.annotation.NonNull;
@@ -569,11 +570,14 @@
           InCallButtonIds.BUTTON_SWAP_SIM,
           R.string.incall_content_description_swap_sim,
           R.string.incall_label_swap_sim,
-          R.drawable.quantum_ic_swap_calls_white_36);
+          R.drawable.ic_sim_change_white);
     }
 
     @Override
     public void onClick(View view) {
+      AnimationDrawable drawable = (AnimationDrawable) button.getIconDrawable();
+      drawable.stop(); // animation is one shot, stop it so it can be started again.
+      drawable.start();
       delegate.swapSimClicked();
     }
   }
diff --git a/java/com/android/incallui/incall/impl/CheckableLabeledButton.java b/java/com/android/incallui/incall/impl/CheckableLabeledButton.java
index 325c3a9..ca018ac 100644
--- a/java/com/android/incallui/incall/impl/CheckableLabeledButton.java
+++ b/java/com/android/incallui/incall/impl/CheckableLabeledButton.java
@@ -47,6 +47,7 @@
   private boolean isChecked;
   private OnCheckedChangeListener onCheckedChangeListener;
   private ImageView iconView;
+  @DrawableRes private int iconResource = 0;
   private TextView labelView;
   private Drawable background;
   private Drawable backgroundMore;
@@ -135,8 +136,15 @@
             new int[] {color, Color.WHITE}));
   }
 
+  public Drawable getIconDrawable() {
+    return iconView.getDrawable();
+  }
+
   public void setIconDrawable(@DrawableRes int drawableRes) {
-    iconView.setImageResource(drawableRes);
+    if (iconResource != drawableRes) {
+      iconView.setImageResource(drawableRes);
+      iconResource = drawableRes;
+    }
   }
 
   public void setLabelText(@StringRes int stringRes) {
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_00.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_00.png
new file mode 100644
index 0000000..4c8b33f
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_00.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_01.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_01.png
new file mode 100644
index 0000000..9101779
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_01.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_02.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_02.png
new file mode 100644
index 0000000..92a27ee
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_02.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_03.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_03.png
new file mode 100644
index 0000000..484058f
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_03.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_04.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_04.png
new file mode 100644
index 0000000..348ae92
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_04.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_05.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_05.png
new file mode 100644
index 0000000..011915a
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_05.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_06.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_06.png
new file mode 100644
index 0000000..c1cc0d6
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_06.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_07.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_07.png
new file mode 100644
index 0000000..75233db
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_07.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_08.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_08.png
new file mode 100644
index 0000000..2918e1a
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_08.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_09.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_09.png
new file mode 100644
index 0000000..7e92767
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_09.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_10.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_10.png
new file mode 100644
index 0000000..0089314
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_10.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_11.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_11.png
new file mode 100644
index 0000000..f66a6b6
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_11.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_12.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_12.png
new file mode 100644
index 0000000..9303d95
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_12.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_13.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_13.png
new file mode 100644
index 0000000..d2bef6e
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_13.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_14.png b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_14.png
new file mode 100644
index 0000000..a5434ec
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable-xxxhdpi/ic_sim_change_white_14.png
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable/ic_sim_change_white.xml b/java/com/android/incallui/incall/impl/res/drawable/ic_sim_change_white.xml
new file mode 100644
index 0000000..00b1b7a
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable/ic_sim_change_white.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/ic_sim_change_white"
+    android:oneshot="true">
+  <item
+      android:drawable="@drawable/ic_sim_change_white_00"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_01"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_02"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_03"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_04"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_05"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_06"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_07"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_08"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_09"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_10"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_11"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_12"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_13"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_14"
+      android:duration="33"/>
+  <item
+      android:drawable="@drawable/ic_sim_change_white_00"
+      android:duration="33"/>
+</animation-list>
\ No newline at end of file