diff --git a/api/current.txt b/api/current.txt index d90116fca2cf5..ea27c9236307d 100644 --- a/api/current.txt +++ b/api/current.txt @@ -567,6 +567,7 @@ package android { field public static final int freezesText = 16843116; // 0x101016c field public static final int fromAlpha = 16843210; // 0x10101ca field public static final int fromDegrees = 16843187; // 0x10101b3 + field public static final int fromId = 16843856; // 0x1010450 field public static final int fromScene = 16843741; // 0x10103dd field public static final int fromXDelta = 16843206; // 0x10101c6 field public static final int fromXScale = 16843202; // 0x10101c2 @@ -956,6 +957,7 @@ package android { field public static final int restoreAnyVersion = 16843450; // 0x10102ba field public static final deprecated int restoreNeedsApplication = 16843421; // 0x101029d field public static final int restrictedAccountType = 16843733; // 0x10103d5 + field public static final int reversible = 16843857; // 0x1010451 field public static final int right = 16843183; // 0x10101af field public static final int ringtonePreferenceStyle = 16842899; // 0x1010093 field public static final int ringtoneType = 16843257; // 0x10101f9 @@ -1214,6 +1216,7 @@ package android { field public static final int titleTextStyle = 16843512; // 0x10102f8 field public static final int toAlpha = 16843211; // 0x10101cb field public static final int toDegrees = 16843188; // 0x10101b4 + field public static final int toId = 16843855; // 0x101044f field public static final int toScene = 16843742; // 0x10103de field public static final int toXDelta = 16843207; // 0x10101c7 field public static final int toXScale = 16843203; // 0x10101c3 @@ -10830,6 +10833,12 @@ package android.graphics.drawable { method public abstract void stop(); } + public class AnimatedStateListDrawable extends android.graphics.drawable.StateListDrawable { + ctor public AnimatedStateListDrawable(); + method public void addState(int[], android.graphics.drawable.Drawable, int); + method public void addTransition(int, int, android.graphics.drawable.AnimationDrawable, boolean); + } + public class AnimationDrawable extends android.graphics.drawable.DrawableContainer implements android.graphics.drawable.Animatable java.lang.Runnable { ctor public AnimationDrawable(); method public void addFrame(android.graphics.drawable.Drawable, int); diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00000_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00000_qntm_alpha.png new file mode 100644 index 0000000000000..1880a15b2e76d Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00000_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00001_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00001_qntm_alpha.png new file mode 100644 index 0000000000000..aecb4d223471b Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00001_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00002_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00002_qntm_alpha.png new file mode 100644 index 0000000000000..8401f910e31fb Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00002_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00003_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00003_qntm_alpha.png new file mode 100644 index 0000000000000..58328653a0e01 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00003_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00004_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00004_qntm_alpha.png new file mode 100644 index 0000000000000..6d149627bcc3c Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00004_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00005_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00005_qntm_alpha.png new file mode 100644 index 0000000000000..aee057c3da175 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00005_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00006_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00006_qntm_alpha.png new file mode 100644 index 0000000000000..fb5801e4f59a9 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00006_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00007_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00007_qntm_alpha.png new file mode 100644 index 0000000000000..fdb527128f59f Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00007_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00008_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00008_qntm_alpha.png new file mode 100644 index 0000000000000..b8c739778bb9f Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00008_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00009_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00009_qntm_alpha.png new file mode 100644 index 0000000000000..d0395a83bb310 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00009_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00010_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00010_qntm_alpha.png new file mode 100644 index 0000000000000..59bb4373a480f Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00010_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00011_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00011_qntm_alpha.png new file mode 100644 index 0000000000000..c053b90c1fd42 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00011_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00012_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00012_qntm_alpha.png new file mode 100644 index 0000000000000..eb30a799a4ceb Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00012_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00013_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00013_qntm_alpha.png new file mode 100644 index 0000000000000..1af0bff7a9aec Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00013_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00014_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00014_qntm_alpha.png new file mode 100644 index 0000000000000..3b36e7d9415ab Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00014_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_check_anim_00015_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_check_anim_00015_qntm_alpha.png new file mode 100644 index 0000000000000..c12d20ab2d8ec Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_check_anim_00015_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00000_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00000_qntm_alpha.png new file mode 100644 index 0000000000000..882365beb4d57 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00000_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00001_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00001_qntm_alpha.png new file mode 100644 index 0000000000000..f6c70945a9513 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00001_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00002_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00002_qntm_alpha.png new file mode 100644 index 0000000000000..0e326c9f306f1 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00002_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00003_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00003_qntm_alpha.png new file mode 100644 index 0000000000000..8bf1170a8fc29 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00003_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00004_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00004_qntm_alpha.png new file mode 100644 index 0000000000000..cedb66ee29af6 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00004_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00005_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00005_qntm_alpha.png new file mode 100644 index 0000000000000..257d7ba610055 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00005_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00006_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00006_qntm_alpha.png new file mode 100644 index 0000000000000..e07b36ed48ad5 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00006_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00007_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00007_qntm_alpha.png new file mode 100644 index 0000000000000..ef9420041cdd8 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00007_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00008_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00008_qntm_alpha.png new file mode 100644 index 0000000000000..ad670045a699c Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00008_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00009_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00009_qntm_alpha.png new file mode 100644 index 0000000000000..50796e25be224 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00009_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00010_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00010_qntm_alpha.png new file mode 100644 index 0000000000000..ba7be9e9a5ed4 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00010_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00011_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00011_qntm_alpha.png new file mode 100644 index 0000000000000..bdbfe783ad73a Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00011_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00012_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00012_qntm_alpha.png new file mode 100644 index 0000000000000..fe8995199b4e3 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00012_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00013_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00013_qntm_alpha.png new file mode 100644 index 0000000000000..840c88f11a9f0 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00013_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00014_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00014_qntm_alpha.png new file mode 100644 index 0000000000000..621d1d2e33935 Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00014_qntm_alpha.png differ diff --git a/core/res/res/drawable-hdpi/btn_radio_anim_00015_qntm_alpha.png b/core/res/res/drawable-hdpi/btn_radio_anim_00015_qntm_alpha.png new file mode 100644 index 0000000000000..fd8be89ecd07a Binary files /dev/null and b/core/res/res/drawable-hdpi/btn_radio_anim_00015_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00000_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00000_qntm_alpha.png new file mode 100644 index 0000000000000..0f44ff91fbedd Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00000_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00001_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00001_qntm_alpha.png new file mode 100644 index 0000000000000..9d5dda04ee444 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00001_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00002_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00002_qntm_alpha.png new file mode 100644 index 0000000000000..e4ce80257b9d7 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00002_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00003_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00003_qntm_alpha.png new file mode 100644 index 0000000000000..d1806acc25fd1 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00003_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00004_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00004_qntm_alpha.png new file mode 100644 index 0000000000000..ab9315b6fdd95 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00004_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00005_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00005_qntm_alpha.png new file mode 100644 index 0000000000000..46e90e6bc0228 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00005_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00006_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00006_qntm_alpha.png new file mode 100644 index 0000000000000..e8c56fffcad39 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00006_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00007_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00007_qntm_alpha.png new file mode 100644 index 0000000000000..59dcb7e19ca38 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00007_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00008_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00008_qntm_alpha.png new file mode 100644 index 0000000000000..e9bd4a2f43d3a Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00008_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00009_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00009_qntm_alpha.png new file mode 100644 index 0000000000000..1d0503739450c Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00009_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00010_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00010_qntm_alpha.png new file mode 100644 index 0000000000000..91b40de28b997 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00010_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00011_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00011_qntm_alpha.png new file mode 100644 index 0000000000000..c531cab52d2b6 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00011_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00012_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00012_qntm_alpha.png new file mode 100644 index 0000000000000..11bb387f4f68e Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00012_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00013_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00013_qntm_alpha.png new file mode 100644 index 0000000000000..8843210902dc0 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00013_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00014_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00014_qntm_alpha.png new file mode 100644 index 0000000000000..6ff2f3d806c09 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00014_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_check_anim_00015_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_check_anim_00015_qntm_alpha.png new file mode 100644 index 0000000000000..a03c1e2d51fde Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_check_anim_00015_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00000_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00000_qntm_alpha.png new file mode 100644 index 0000000000000..0a22e1a3eb04a Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00000_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00001_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00001_qntm_alpha.png new file mode 100644 index 0000000000000..2e2469c46bebb Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00001_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00002_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00002_qntm_alpha.png new file mode 100644 index 0000000000000..c1054d99d2a5d Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00002_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00003_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00003_qntm_alpha.png new file mode 100644 index 0000000000000..cf8d80aa00c48 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00003_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00004_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00004_qntm_alpha.png new file mode 100644 index 0000000000000..9d9e870ea8fe8 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00004_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00005_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00005_qntm_alpha.png new file mode 100644 index 0000000000000..1bad701def610 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00005_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00006_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00006_qntm_alpha.png new file mode 100644 index 0000000000000..a84a54f439144 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00006_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00007_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00007_qntm_alpha.png new file mode 100644 index 0000000000000..4d8050bf609fe Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00007_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00008_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00008_qntm_alpha.png new file mode 100644 index 0000000000000..374172c8ff85d Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00008_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00009_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00009_qntm_alpha.png new file mode 100644 index 0000000000000..233036e95b895 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00009_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00010_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00010_qntm_alpha.png new file mode 100644 index 0000000000000..61d9b58e31b7c Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00010_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00011_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00011_qntm_alpha.png new file mode 100644 index 0000000000000..274e983e6db34 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00011_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00012_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00012_qntm_alpha.png new file mode 100644 index 0000000000000..acf16e5380014 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00012_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00013_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00013_qntm_alpha.png new file mode 100644 index 0000000000000..ee482417b9274 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00013_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00014_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00014_qntm_alpha.png new file mode 100644 index 0000000000000..dbbb7362dfc01 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00014_qntm_alpha.png differ diff --git a/core/res/res/drawable-mdpi/btn_radio_anim_00015_qntm_alpha.png b/core/res/res/drawable-mdpi/btn_radio_anim_00015_qntm_alpha.png new file mode 100644 index 0000000000000..bcabd0dc951b2 Binary files /dev/null and b/core/res/res/drawable-mdpi/btn_radio_anim_00015_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00000_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00000_qntm_alpha.png new file mode 100644 index 0000000000000..25500e8d9fb8c Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00000_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00001_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00001_qntm_alpha.png new file mode 100644 index 0000000000000..b136e25229618 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00001_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00002_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00002_qntm_alpha.png new file mode 100644 index 0000000000000..6a94e30148ca2 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00002_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00003_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00003_qntm_alpha.png new file mode 100644 index 0000000000000..d386421396b9f Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00003_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00004_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00004_qntm_alpha.png new file mode 100644 index 0000000000000..c8113858f8475 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00004_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00005_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00005_qntm_alpha.png new file mode 100644 index 0000000000000..58b326704e113 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00005_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00006_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00006_qntm_alpha.png new file mode 100644 index 0000000000000..0659e729c1f10 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00006_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00007_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00007_qntm_alpha.png new file mode 100644 index 0000000000000..b4227d16a5601 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00007_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00008_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00008_qntm_alpha.png new file mode 100644 index 0000000000000..714ef0096442e Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00008_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00009_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00009_qntm_alpha.png new file mode 100644 index 0000000000000..139595b5f561e Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00009_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00010_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00010_qntm_alpha.png new file mode 100644 index 0000000000000..4491107d04eef Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00010_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00011_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00011_qntm_alpha.png new file mode 100644 index 0000000000000..20eb752fb86b5 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00011_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00012_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00012_qntm_alpha.png new file mode 100644 index 0000000000000..532c9f2dec751 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00012_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00013_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00013_qntm_alpha.png new file mode 100644 index 0000000000000..0d78a32516073 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00013_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00014_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00014_qntm_alpha.png new file mode 100644 index 0000000000000..af29678737a8c Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00014_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_check_anim_00015_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_check_anim_00015_qntm_alpha.png new file mode 100644 index 0000000000000..23eb9e3f09a02 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_check_anim_00015_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00000_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00000_qntm_alpha.png new file mode 100644 index 0000000000000..cd11e1456d84b Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00000_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00001_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00001_qntm_alpha.png new file mode 100644 index 0000000000000..b10db83375a65 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00001_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00002_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00002_qntm_alpha.png new file mode 100644 index 0000000000000..efeb6fb0c2131 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00002_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00003_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00003_qntm_alpha.png new file mode 100644 index 0000000000000..83080afb7a2cf Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00003_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00004_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00004_qntm_alpha.png new file mode 100644 index 0000000000000..b9cc322c4847e Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00004_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00005_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00005_qntm_alpha.png new file mode 100644 index 0000000000000..3b5f9c4d2f4bc Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00005_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00006_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00006_qntm_alpha.png new file mode 100644 index 0000000000000..58c93dbd23a58 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00006_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00007_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00007_qntm_alpha.png new file mode 100644 index 0000000000000..0f1d010651bee Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00007_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00008_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00008_qntm_alpha.png new file mode 100644 index 0000000000000..05a7a0f88c9c8 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00008_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00009_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00009_qntm_alpha.png new file mode 100644 index 0000000000000..9345035e23bf6 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00009_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00010_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00010_qntm_alpha.png new file mode 100644 index 0000000000000..5f149b7513b33 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00010_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00011_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00011_qntm_alpha.png new file mode 100644 index 0000000000000..191f369c13cff Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00011_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00012_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00012_qntm_alpha.png new file mode 100644 index 0000000000000..44e08e6405a1c Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00012_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00013_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00013_qntm_alpha.png new file mode 100644 index 0000000000000..5a9dfa02932a1 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00013_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00014_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00014_qntm_alpha.png new file mode 100644 index 0000000000000..ee921c63dc563 Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00014_qntm_alpha.png differ diff --git a/core/res/res/drawable-xhdpi/btn_radio_anim_00015_qntm_alpha.png b/core/res/res/drawable-xhdpi/btn_radio_anim_00015_qntm_alpha.png new file mode 100644 index 0000000000000..567bb0c4c28de Binary files /dev/null and b/core/res/res/drawable-xhdpi/btn_radio_anim_00015_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00000_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00000_qntm_alpha.png new file mode 100644 index 0000000000000..1881f541ddb8e Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00000_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00001_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00001_qntm_alpha.png new file mode 100644 index 0000000000000..6f8ec2d94b38a Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00001_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00002_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00002_qntm_alpha.png new file mode 100644 index 0000000000000..c954ed970e789 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00002_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00003_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00003_qntm_alpha.png new file mode 100644 index 0000000000000..9d1a47e6449a8 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00003_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00004_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00004_qntm_alpha.png new file mode 100644 index 0000000000000..ce63631174e6d Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00004_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00005_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00005_qntm_alpha.png new file mode 100644 index 0000000000000..430c134e0c409 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00005_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00006_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00006_qntm_alpha.png new file mode 100644 index 0000000000000..cdebf83fdfbc3 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00006_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00007_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00007_qntm_alpha.png new file mode 100644 index 0000000000000..40ceadb3c3afa Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00007_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00008_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00008_qntm_alpha.png new file mode 100644 index 0000000000000..fb13eb2b7b93e Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00008_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00009_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00009_qntm_alpha.png new file mode 100644 index 0000000000000..d716fbae0cae9 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00009_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00010_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00010_qntm_alpha.png new file mode 100644 index 0000000000000..b8be04147378a Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00010_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00011_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00011_qntm_alpha.png new file mode 100644 index 0000000000000..bad0c3c398664 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00011_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00012_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00012_qntm_alpha.png new file mode 100644 index 0000000000000..a6368fb87bd99 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00012_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00013_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00013_qntm_alpha.png new file mode 100644 index 0000000000000..234e5d1e865c6 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00013_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00014_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00014_qntm_alpha.png new file mode 100644 index 0000000000000..3e7796dfbbbe3 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00014_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_check_anim_00015_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_check_anim_00015_qntm_alpha.png new file mode 100644 index 0000000000000..06739990759e7 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_check_anim_00015_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00000_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00000_qntm_alpha.png new file mode 100644 index 0000000000000..4779944d8b566 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00000_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00001_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00001_qntm_alpha.png new file mode 100644 index 0000000000000..866f7b7aa67a3 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00001_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00002_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00002_qntm_alpha.png new file mode 100644 index 0000000000000..76aae57996889 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00002_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00003_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00003_qntm_alpha.png new file mode 100644 index 0000000000000..0cd470a12cda1 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00003_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00004_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00004_qntm_alpha.png new file mode 100644 index 0000000000000..0015b39211725 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00004_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00005_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00005_qntm_alpha.png new file mode 100644 index 0000000000000..2f69f5b12c397 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00005_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00006_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00006_qntm_alpha.png new file mode 100644 index 0000000000000..77142fdc96b49 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00006_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00007_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00007_qntm_alpha.png new file mode 100644 index 0000000000000..2f812778ca1aa Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00007_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00008_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00008_qntm_alpha.png new file mode 100644 index 0000000000000..d37fe60a498d9 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00008_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00009_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00009_qntm_alpha.png new file mode 100644 index 0000000000000..cb620799c3194 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00009_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00010_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00010_qntm_alpha.png new file mode 100644 index 0000000000000..82dc42859a55a Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00010_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00011_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00011_qntm_alpha.png new file mode 100644 index 0000000000000..2cba2fb7adae8 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00011_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00012_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00012_qntm_alpha.png new file mode 100644 index 0000000000000..5de19529a92ba Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00012_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00013_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00013_qntm_alpha.png new file mode 100644 index 0000000000000..1c22a1728fbbf Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00013_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00014_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00014_qntm_alpha.png new file mode 100644 index 0000000000000..7f652fc8ef94b Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00014_qntm_alpha.png differ diff --git a/core/res/res/drawable-xxhdpi/btn_radio_anim_00015_qntm_alpha.png b/core/res/res/drawable-xxhdpi/btn_radio_anim_00015_qntm_alpha.png new file mode 100644 index 0000000000000..076acbd0d5129 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/btn_radio_anim_00015_qntm_alpha.png differ diff --git a/core/res/res/drawable/btn_check_quantum_anim.xml b/core/res/res/drawable/btn_check_quantum_anim.xml index 4b329ade5ae8d..96715a4c1fc7a 100644 --- a/core/res/res/drawable/btn_check_quantum_anim.xml +++ b/core/res/res/drawable/btn_check_quantum_anim.xml @@ -1,3 +1,4 @@ + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - diff --git a/core/res/res/drawable/btn_radio_quantum_anim.xml b/core/res/res/drawable/btn_radio_quantum_anim.xml new file mode 100644 index 0000000000000..5068b7aa88472 --- /dev/null +++ b/core/res/res/drawable/btn_radio_quantum_anim.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index d9473ece245af..28e75e65b41b7 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -4239,6 +4239,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 4e584c065fcd9..ecb22aed01a24 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -2166,6 +2166,9 @@ + + + diff --git a/core/res/res/values/themes_quantum.xml b/core/res/res/values/themes_quantum.xml index 768fd9a66b60c..18d6f80e3f4ff 100644 --- a/core/res/res/values/themes_quantum.xml +++ b/core/res/res/values/themes_quantum.xml @@ -122,8 +122,8 @@ please see themes_device_defaults.xml. @drawable/list_divider_quantum @style/Widget.Quantum.TextView.ListSeparator - @drawable/btn_radio_quantum - @drawable/btn_check_quantum + @drawable/btn_radio_quantum_anim + @drawable/btn_check_quantum_anim @drawable/list_selector_quantum @@ -466,8 +466,8 @@ please see themes_device_defaults.xml. @drawable/list_divider_quantum @style/Widget.Quantum.Light.TextView.ListSeparator - @drawable/btn_radio_quantum - @drawable/btn_check_quantum + @drawable/btn_radio_quantum_anim + @drawable/btn_check_quantum_anim @drawable/list_selector_quantum diff --git a/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java b/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java new file mode 100644 index 0000000000000..46e3401f43876 --- /dev/null +++ b/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java @@ -0,0 +1,524 @@ +/* + * Copyright (C) 2014 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. + */ + +package android.graphics.drawable; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ObjectAnimator; +import android.animation.TimeInterpolator; +import android.content.res.Resources; +import android.content.res.Resources.Theme; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.util.LongSparseLongArray; +import android.util.SparseIntArray; +import android.util.StateSet; + +import com.android.internal.R; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +import java.io.IOException; + +/** + * Drawable containing a set of Drawable keyframes where the currently displayed + * keyframe is chosen based on the current state set. Animations between + * keyframes may optionally be defined using transition elements. + *

+ * This drawable can be defined in an XML file with the + * <animated-selector> element. Each keyframe Drawable is defined in a + * nested <item> element. Transitions are defined in a nested + * <transition> element. + * + * @attr ref android.R.styleable#DrawableStates_state_focused + * @attr ref android.R.styleable#DrawableStates_state_window_focused + * @attr ref android.R.styleable#DrawableStates_state_enabled + * @attr ref android.R.styleable#DrawableStates_state_checkable + * @attr ref android.R.styleable#DrawableStates_state_checked + * @attr ref android.R.styleable#DrawableStates_state_selected + * @attr ref android.R.styleable#DrawableStates_state_activated + * @attr ref android.R.styleable#DrawableStates_state_active + * @attr ref android.R.styleable#DrawableStates_state_single + * @attr ref android.R.styleable#DrawableStates_state_first + * @attr ref android.R.styleable#DrawableStates_state_middle + * @attr ref android.R.styleable#DrawableStates_state_last + * @attr ref android.R.styleable#DrawableStates_state_pressed + */ +public class AnimatedStateListDrawable extends StateListDrawable { + private static final String ELEMENT_TRANSITION = "transition"; + private static final String ELEMENT_ITEM = "item"; + + private AnimatedStateListState mState; + + /** The currently running animation, if any. */ + private ObjectAnimator mAnim; + + /** Index to be set after the animation ends. */ + private int mAnimToIndex = -1; + + /** Index away from which we are animating. */ + private int mAnimFromIndex = -1; + + private boolean mMutated; + + public AnimatedStateListDrawable() { + this(null, null); + } + + /** + * Add a new drawable to the set of keyframes. + * + * @param stateSet An array of resource IDs to associate with the keyframe + * @param drawable The drawable to show when in the specified state + * @param id The unique identifier for the keyframe + */ + public void addState(int[] stateSet, Drawable drawable, int id) { + if (drawable != null) { + mState.addStateSet(stateSet, drawable, id); + onStateChange(getState()); + } + } + + /** + * Adds a new transition between keyframes. + * + * @param fromId Unique identifier of the starting keyframe + * @param toId Unique identifier of the ending keyframe + * @param anim An AnimationDrawable to use as a transition + * @param reversible Whether the transition can be reversed + */ + public void addTransition(int fromId, int toId, AnimationDrawable anim, boolean reversible) { + mState.addTransition(fromId, toId, anim, reversible); + } + + @Override + public boolean isStateful() { + return true; + } + + @Override + protected boolean onStateChange(int[] stateSet) { + final int keyframeIndex = mState.indexOfKeyframe(stateSet); + if (keyframeIndex == getCurrentIndex()) { + return false; + } + + if (selectTransition(keyframeIndex)) { + return true; + } + + if (selectDrawable(keyframeIndex)) { + return true; + } + + return super.onStateChange(stateSet); + } + + private boolean selectTransition(int toIndex) { + if (mAnim != null) { + if (toIndex == mAnimToIndex) { + // Already animating to that keyframe. + return true; + } else if (toIndex == mAnimFromIndex) { + // Reverse the current animation. + mAnim.reverse(); + mAnimFromIndex = mAnimToIndex; + mAnimToIndex = toIndex; + return true; + } + + // Changing animation, end the current animation. + mAnim.end(); + } + + final AnimatedStateListState state = mState; + final int fromIndex = getCurrentIndex(); + final int fromId = state.getKeyframeIdAt(fromIndex); + final int toId = state.getKeyframeIdAt(toIndex); + + if (toId == 0 || fromId == 0) { + // Missing a keyframe ID. + return false; + } + + final int transitionIndex = state.indexOfTransition(fromId, toId); + if (transitionIndex < 0 || !selectDrawable(transitionIndex)) { + // Couldn't select a transition. + return false; + } + + final Drawable d = getCurrent(); + if (!(d instanceof AnimationDrawable)) { + // Transition isn't an animation. + return false; + } + + final AnimationDrawable ad = (AnimationDrawable) d; + final boolean reversed = mState.isTransitionReversed(fromId, toId); + final int frameCount = ad.getNumberOfFrames(); + final int fromFrame = reversed ? frameCount - 1 : 0; + final int toFrame = reversed ? 0 : frameCount - 1; + + final FrameInterpolator interp = new FrameInterpolator(ad, reversed); + final ObjectAnimator anim = ObjectAnimator.ofInt(ad, "currentIndex", fromFrame, toFrame); + anim.setAutoCancel(true); + anim.setDuration(interp.getTotalDuration()); + anim.addListener(mAnimListener); + anim.setInterpolator(interp); + anim.start(); + + mAnim = anim; + mAnimFromIndex = fromIndex; + mAnimToIndex = toIndex; + return true; + } + + @Override + public void jumpToCurrentState() { + super.jumpToCurrentState(); + + if (mAnim != null) { + mAnim.end(); + } + } + + @Override + public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme) + throws XmlPullParserException, IOException { + final TypedArray a = r.obtainAttributes(attrs, R.styleable.AnimatedStateListDrawable); + + super.inflateWithAttributes(r, parser, a, R.styleable.AnimatedStateListDrawable_visible); + + final StateListState stateListState = getStateListState(); + stateListState.setVariablePadding(a.getBoolean( + R.styleable.AnimatedStateListDrawable_variablePadding, false)); + stateListState.setConstantSize(a.getBoolean( + R.styleable.AnimatedStateListDrawable_constantSize, false)); + stateListState.setEnterFadeDuration(a.getInt( + R.styleable.AnimatedStateListDrawable_enterFadeDuration, 0)); + stateListState.setExitFadeDuration(a.getInt( + R.styleable.AnimatedStateListDrawable_exitFadeDuration, 0)); + + setDither(a.getBoolean(R.styleable.AnimatedStateListDrawable_dither, true)); + setAutoMirrored(a.getBoolean(R.styleable.AnimatedStateListDrawable_autoMirrored, false)); + + a.recycle(); + + int type; + + final int innerDepth = parser.getDepth() + 1; + int depth; + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT + && ((depth = parser.getDepth()) >= innerDepth + || type != XmlPullParser.END_TAG)) { + if (type != XmlPullParser.START_TAG) { + continue; + } + + if (depth > innerDepth) { + continue; + } + + if (parser.getName().equals(ELEMENT_ITEM)) { + parseItem(r, parser, attrs, theme); + } else if (parser.getName().equals(ELEMENT_TRANSITION)) { + parseTransition(r, parser, attrs, theme); + } + } + + onStateChange(getState()); + } + + private int parseTransition(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme) + throws XmlPullParserException, IOException { + int drawableRes = 0; + int fromId = 0; + int toId = 0; + boolean reversible = false; + + final int numAttrs = attrs.getAttributeCount(); + for (int i = 0; i < numAttrs; i++) { + final int stateResId = attrs.getAttributeNameResource(i); + switch (stateResId) { + case 0: + break; + case R.attr.fromId: + fromId = attrs.getAttributeResourceValue(i, 0); + break; + case R.attr.toId: + toId = attrs.getAttributeResourceValue(i, 0); + break; + case R.attr.drawable: + drawableRes = attrs.getAttributeResourceValue(i, 0); + break; + case R.attr.reversible: + reversible = attrs.getAttributeBooleanValue(i, false); + break; + } + } + + final Drawable dr; + if (drawableRes != 0) { + dr = r.getDrawable(drawableRes); + } else { + int type; + while ((type = parser.next()) == XmlPullParser.TEXT) { + } + if (type != XmlPullParser.START_TAG) { + throw new XmlPullParserException( + parser.getPositionDescription() + + ": tag requires a 'drawable' attribute or " + + "child tag defining a drawable"); + } + dr = Drawable.createFromXmlInnerThemed(r, parser, attrs, theme); + } + + final AnimationDrawable anim; + if (dr instanceof AnimationDrawable) { + anim = (AnimationDrawable) dr; + } else { + throw new XmlPullParserException(parser.getPositionDescription() + + ": tag requires a 'drawable' attribute or " + + "child tag defining a drawable of type "); + } + + return mState.addTransition(fromId, toId, anim, reversible); + } + + private int parseItem(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme) + throws XmlPullParserException, IOException { + int drawableRes = 0; + int keyframeId = 0; + + int j = 0; + final int numAttrs = attrs.getAttributeCount(); + int[] states = new int[numAttrs]; + for (int i = 0; i < numAttrs; i++) { + final int stateResId = attrs.getAttributeNameResource(i); + switch (stateResId) { + case 0: + break; + case R.attr.id: + keyframeId = attrs.getAttributeResourceValue(i, 0); + break; + case R.attr.drawable: + drawableRes = attrs.getAttributeResourceValue(i, 0); + break; + default: + final boolean hasState = attrs.getAttributeBooleanValue(i, false); + states[j++] = hasState ? stateResId : -stateResId; + } + } + states = StateSet.trimStateSet(states, j); + + final Drawable dr; + if (drawableRes != 0) { + dr = r.getDrawable(drawableRes); + } else { + int type; + while ((type = parser.next()) == XmlPullParser.TEXT) { + } + if (type != XmlPullParser.START_TAG) { + throw new XmlPullParserException( + parser.getPositionDescription() + + ": tag requires a 'drawable' attribute or " + + "child tag defining a drawable"); + } + dr = Drawable.createFromXmlInnerThemed(r, parser, attrs, theme); + } + + return mState.addStateSet(states, dr, keyframeId); + } + + @Override + public Drawable mutate() { + if (!mMutated) { + final AnimatedStateListState newState = new AnimatedStateListState(mState, this, null); + setConstantState(newState); + mMutated = true; + } + + return this; + } + + private final AnimatorListenerAdapter mAnimListener = new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator anim) { + selectDrawable(mAnimToIndex); + + mAnimToIndex = -1; + mAnimFromIndex = -1; + mAnim = null; + } + }; + + static class AnimatedStateListState extends StateListState { + private static final int REVERSE_SHIFT = 32; + private static final int REVERSE_MASK = 0x1; + + final LongSparseLongArray mTransitions; + final SparseIntArray mStateIds; + + AnimatedStateListState(AnimatedStateListState orig, AnimatedStateListDrawable owner, + Resources res) { + super(orig, owner, res); + + if (orig != null) { + mTransitions = orig.mTransitions.clone(); + mStateIds = orig.mStateIds.clone(); + } else { + mTransitions = new LongSparseLongArray(); + mStateIds = new SparseIntArray(); + } + } + + int addTransition(int fromId, int toId, AnimationDrawable anim, boolean reversible) { + final int pos = super.addChild(anim); + final long keyFromTo = generateTransitionKey(fromId, toId); + mTransitions.append(keyFromTo, pos); + + if (reversible) { + final long keyToFrom = generateTransitionKey(toId, fromId); + mTransitions.append(keyToFrom, pos | (1L << REVERSE_SHIFT)); + } + + return addChild(anim); + } + + int addStateSet(int[] stateSet, Drawable drawable, int id) { + final int index = super.addStateSet(stateSet, drawable); + mStateIds.put(index, id); + return index; + } + + int indexOfKeyframe(int[] stateSet) { + final int index = super.indexOfStateSet(stateSet); + if (index >= 0) { + return index; + } + + return super.indexOfStateSet(StateSet.WILD_CARD); + } + + int getKeyframeIdAt(int index) { + return index < 0 ? 0 : mStateIds.get(index, 0); + } + + int indexOfTransition(int fromId, int toId) { + final long keyFromTo = generateTransitionKey(fromId, toId); + return (int) mTransitions.get(keyFromTo, -1); + } + + boolean isTransitionReversed(int fromId, int toId) { + final long keyFromTo = generateTransitionKey(fromId, toId); + return (mTransitions.get(keyFromTo, -1) >> REVERSE_SHIFT & REVERSE_MASK) == 1; + } + + @Override + public Drawable newDrawable() { + return new AnimatedStateListDrawable(this, null); + } + + @Override + public Drawable newDrawable(Resources res) { + return new AnimatedStateListDrawable(this, res); + } + + private static long generateTransitionKey(int fromId, int toId) { + return (long) fromId << 32 | toId; + } + } + + void setConstantState(AnimatedStateListState state) { + super.setConstantState(state); + + mState = state; + } + + private AnimatedStateListDrawable(AnimatedStateListState state, Resources res) { + super(null); + + final AnimatedStateListState newState = new AnimatedStateListState(state, this, res); + setConstantState(newState); + onStateChange(getState()); + jumpToCurrentState(); + } + + /** + * Interpolates between frames with respect to their individual durations. + */ + private static class FrameInterpolator implements TimeInterpolator { + private int[] mFrameTimes; + private int mFrames; + private int mTotalDuration; + + public FrameInterpolator(AnimationDrawable d, boolean reversed) { + updateFrames(d, reversed); + } + + public int updateFrames(AnimationDrawable d, boolean reversed) { + final int N = d.getNumberOfFrames(); + mFrames = N; + + if (mFrameTimes == null || mFrameTimes.length < N) { + mFrameTimes = new int[N]; + } + + final int[] frameTimes = mFrameTimes; + int totalDuration = 0; + for (int i = 0; i < N; i++) { + final int duration = d.getDuration(reversed ? N - i - 1 : i); + frameTimes[i] = duration; + totalDuration += duration; + } + + mTotalDuration = totalDuration; + return totalDuration; + } + + public int getTotalDuration() { + return mTotalDuration; + } + + @Override + public float getInterpolation(float input) { + final int elapsed = (int) (input * mTotalDuration + 0.5f); + final int N = mFrames; + final int[] frameTimes = mFrameTimes; + + // Find the current frame and remaining time within that frame. + int remaining = elapsed; + int i = 0; + while (i < N && remaining >= frameTimes[i]) { + remaining -= frameTimes[i]; + i++; + } + + // Remaining time is relative of total duration. + final float frameElapsed; + if (i < N) { + frameElapsed = remaining / (float) mTotalDuration; + } else { + frameElapsed = 0; + } + + return i / (float) N + frameElapsed; + } + } +} + diff --git a/graphics/java/android/graphics/drawable/AnimationDrawable.java b/graphics/java/android/graphics/drawable/AnimationDrawable.java index 3f94e260a4e4d..da4bc10dfdf41 100644 --- a/graphics/java/android/graphics/drawable/AnimationDrawable.java +++ b/graphics/java/android/graphics/drawable/AnimationDrawable.java @@ -94,7 +94,7 @@ public class AnimationDrawable extends DrawableContainer implements Runnable, An boolean changed = super.setVisible(visible, restart); if (visible) { if (changed || restart) { - setFrame(0, true, true); + setFrame(0, true, mCurFrame >= 0); } } else { unscheduleSelf(this); diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java index b9d5e19a55561..b93963673423b 100644 --- a/graphics/java/android/graphics/drawable/Drawable.java +++ b/graphics/java/android/graphics/drawable/Drawable.java @@ -1039,6 +1039,8 @@ public abstract class Drawable { final String name = parser.getName(); if (name.equals("selector")) { drawable = new StateListDrawable(); + } else if (name.equals("animated-selector")) { + drawable = new AnimatedStateListDrawable(); } else if (name.equals("level-list")) { drawable = new LevelListDrawable(); } else if (name.equals("layer-list")) { diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java index 1f8b51d1c9227..08fc99da51373 100644 --- a/graphics/java/android/graphics/drawable/DrawableContainer.java +++ b/graphics/java/android/graphics/drawable/DrawableContainer.java @@ -359,6 +359,16 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { mDrawableContainerState.getOpacity(); } + /** @hide */ + public void setCurrentIndex(int index) { + selectDrawable(index); + } + + /** @hide */ + public int getCurrentIndex() { + return mCurIndex; + } + public boolean selectDrawable(int idx) { if (idx == mCurIndex) { return false; diff --git a/graphics/java/android/graphics/drawable/StateListDrawable.java b/graphics/java/android/graphics/drawable/StateListDrawable.java index 271af2b0b8e2c..f22a063f8ab5a 100644 --- a/graphics/java/android/graphics/drawable/StateListDrawable.java +++ b/graphics/java/android/graphics/drawable/StateListDrawable.java @@ -55,8 +55,9 @@ import android.util.StateSet; * @attr ref android.R.styleable#DrawableStates_state_pressed */ public class StateListDrawable extends DrawableContainer { + private static final String TAG = StateListDrawable.class.getSimpleName(); + private static final boolean DEBUG = false; - private static final String TAG = "StateListDrawable"; /** * To be proper, we should have a getter for dither (and alpha, etc.) @@ -69,7 +70,8 @@ public class StateListDrawable extends DrawableContainer { * to improve the quality at negligible cost. */ private static final boolean DEFAULT_DITHER = true; - private final StateListState mStateListState; + + private StateListState mStateListState; private boolean mMutated; public StateListDrawable() { @@ -274,7 +276,7 @@ public class StateListDrawable extends DrawableContainer { mStateListState.setLayoutDirection(layoutDirection); } - static final class StateListState extends DrawableContainerState { + static class StateListState extends DrawableContainerState { int[][] mStateSets; StateListState(StateListState orig, StateListDrawable owner, Resources res) { @@ -293,7 +295,7 @@ public class StateListDrawable extends DrawableContainer { return pos; } - private int indexOfStateSet(int[] stateSet) { + int indexOfStateSet(int[] stateSet) { final int[][] stateSets = mStateSets; final int N = getChildCount(); for (int i = 0; i < N; i++) { @@ -323,11 +325,26 @@ public class StateListDrawable extends DrawableContainer { } } + void setConstantState(StateListState state) { + super.setConstantState(state); + + mStateListState = state; + } + private StateListDrawable(StateListState state, Resources res) { - StateListState as = new StateListState(state, this, res); - mStateListState = as; - setConstantState(as); + final StateListState newState = new StateListState(state, this, res); + setConstantState(newState); onStateChange(getState()); } + + /** + * This constructor exists so subclasses can avoid calling the default + * constructor and setting up a StateListDrawable-specific constant state. + */ + StateListDrawable(StateListState state) { + if (state != null) { + setConstantState(state); + } + } }