diff options
author | Abhisek Devkota <ciwrl@cyanogenmod.com> | 2014-05-26 20:51:39 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2014-05-26 20:51:39 +0000 |
commit | 8dd8f20012f06ebc55de6fb01e9d728d7c3f19bd (patch) | |
tree | 893da75af836065e457535a6632d337697a74b1f | |
parent | a869d707552dcd12c6aabd5099f3194d9591f496 (diff) | |
parent | 82196ead569c25dae76a70be6b2bc147666ea24d (diff) | |
download | packages_apps_Trebuchet-8dd8f20012f06ebc55de6fb01e9d728d7c3f19bd.tar.gz packages_apps_Trebuchet-8dd8f20012f06ebc55de6fb01e9d728d7c3f19bd.tar.bz2 packages_apps_Trebuchet-8dd8f20012f06ebc55de6fb01e9d728d7c3f19bd.zip |
Merge "Trebuchet Settings UI Refresh" into cm-11.0
807 files changed, 4867 insertions, 368 deletions
diff --git a/res/anim/drop_down.xml b/res/anim/drop_down.xml new file mode 100644 index 000000000..49059a048 --- /dev/null +++ b/res/anim/drop_down.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<set xmlns:android="http://schemas.android.com/apk/res/android" + android:interpolator="@android:interpolator/accelerate_decelerate"> + <scale + android:fromXScale="1.0" + android:toXScale="1.0" + android:fromYScale="2.5" + android:toYScale="1.0" + android:pivotX="50%" + android:pivotY="50%" + android:duration="300" + android:fillBefore="false" /> +</set> diff --git a/res/anim/enter_from_left.xml b/res/anim/enter_from_left.xml new file mode 100644 index 000000000..e2bdbdda3 --- /dev/null +++ b/res/anim/enter_from_left.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<set + xmlns:android="http://schemas.android.com/apk/res/android" > + + <objectAnimator + xmlns:android="http://schemas.android.com/apk/res/android" + android:duration="300" + android:propertyName="x" + android:valueFrom="-1000" + android:valueTo="0" + android:valueType="floatType" /> +</set> diff --git a/res/anim/enter_from_right.xml b/res/anim/enter_from_right.xml new file mode 100644 index 000000000..02a56c7ae --- /dev/null +++ b/res/anim/enter_from_right.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<set + xmlns:android="http://schemas.android.com/apk/res/android" > + + <objectAnimator + xmlns:android="http://schemas.android.com/apk/res/android" + android:duration="300" + android:propertyName="x" + android:valueFrom="1000" + android:valueTo="0" + android:valueType="floatType" /> +</set> diff --git a/res/anim/exit_out_left.xml b/res/anim/exit_out_left.xml new file mode 100644 index 000000000..eae925a2a --- /dev/null +++ b/res/anim/exit_out_left.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<set + xmlns:android="http://schemas.android.com/apk/res/android" > + + <objectAnimator + xmlns:android="http://schemas.android.com/apk/res/android" + android:duration="300" + android:propertyName="x" + android:valueFrom="0" + android:valueTo="-1000" + android:valueType="floatType" /> +</set> + diff --git a/res/anim/exit_out_right.xml b/res/anim/exit_out_right.xml new file mode 100644 index 000000000..7345c942d --- /dev/null +++ b/res/anim/exit_out_right.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<set + xmlns:android="http://schemas.android.com/apk/res/android" > + + <objectAnimator + xmlns:android="http://schemas.android.com/apk/res/android" + android:duration="300" + android:propertyName="x" + android:valueFrom="0" + android:valueTo="1000" + android:valueType="floatType" /> +</set> diff --git a/res/color/listitem_text.xml b/res/color/listitem_text.xml new file mode 100644 index 000000000..c17b8555d --- /dev/null +++ b/res/color/listitem_text.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android" > + <item android:state_enabled="true" + android:state_pressed="true" android:color="@color/settings_bg_color" /> + <item android:color="@android:color/white" /> +</selector> diff --git a/res/drawable-hdpi/ic_default_screen.png b/res/drawable-hdpi/ic_default_screen.png Binary files differindex 832fdef35..41dcf8f6e 100644 --- a/res/drawable-hdpi/ic_default_screen.png +++ b/res/drawable-hdpi/ic_default_screen.png diff --git a/res/drawable-hdpi/ic_default_screen_pressed.png b/res/drawable-hdpi/ic_default_screen_pressed.png Binary files differindex 2975c6152..7779058c5 100644 --- a/res/drawable-hdpi/ic_default_screen_pressed.png +++ b/res/drawable-hdpi/ic_default_screen_pressed.png diff --git a/res/drawable-hdpi/ic_setting.png b/res/drawable-hdpi/ic_setting.png Binary files differdeleted file mode 100644 index c617154f1..000000000 --- a/res/drawable-hdpi/ic_setting.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_setting_pressed.png b/res/drawable-hdpi/ic_setting_pressed.png Binary files differdeleted file mode 100644 index fb58a4b12..000000000 --- a/res/drawable-hdpi/ic_setting_pressed.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_themes.png b/res/drawable-hdpi/ic_themes.png Binary files differnew file mode 100644 index 000000000..7a9b4b450 --- /dev/null +++ b/res/drawable-hdpi/ic_themes.png diff --git a/res/drawable-hdpi/ic_themes_pressed.png b/res/drawable-hdpi/ic_themes_pressed.png Binary files differnew file mode 100644 index 000000000..e78606a29 --- /dev/null +++ b/res/drawable-hdpi/ic_themes_pressed.png diff --git a/res/drawable-hdpi/ic_widget.png b/res/drawable-hdpi/ic_widget.png Binary files differindex e7cc5346a..8c57af0de 100644 --- a/res/drawable-hdpi/ic_widget.png +++ b/res/drawable-hdpi/ic_widget.png diff --git a/res/drawable-hdpi/ic_widget_pressed.png b/res/drawable-hdpi/ic_widget_pressed.png Binary files differindex 4d0a1e43e..081f9f9ce 100644 --- a/res/drawable-hdpi/ic_widget_pressed.png +++ b/res/drawable-hdpi/ic_widget_pressed.png diff --git a/res/drawable-mdpi/ic_default_screen.png b/res/drawable-mdpi/ic_default_screen.png Binary files differindex 431b16841..8a2c1e1c0 100644 --- a/res/drawable-mdpi/ic_default_screen.png +++ b/res/drawable-mdpi/ic_default_screen.png diff --git a/res/drawable-mdpi/ic_default_screen_pressed.png b/res/drawable-mdpi/ic_default_screen_pressed.png Binary files differindex 361f023f8..20606ce62 100644 --- a/res/drawable-mdpi/ic_default_screen_pressed.png +++ b/res/drawable-mdpi/ic_default_screen_pressed.png diff --git a/res/drawable-mdpi/ic_themes.png b/res/drawable-mdpi/ic_themes.png Binary files differnew file mode 100644 index 000000000..1178efdf6 --- /dev/null +++ b/res/drawable-mdpi/ic_themes.png diff --git a/res/drawable-mdpi/ic_themes_pressed.png b/res/drawable-mdpi/ic_themes_pressed.png Binary files differnew file mode 100644 index 000000000..4fae34b2d --- /dev/null +++ b/res/drawable-mdpi/ic_themes_pressed.png diff --git a/res/drawable-mdpi/ic_widget.png b/res/drawable-mdpi/ic_widget.png Binary files differindex 955ebf5b7..5f974c28c 100644 --- a/res/drawable-mdpi/ic_widget.png +++ b/res/drawable-mdpi/ic_widget.png diff --git a/res/drawable-mdpi/ic_widget_pressed.png b/res/drawable-mdpi/ic_widget_pressed.png Binary files differindex f65f49f8a..0a3e8838f 100644 --- a/res/drawable-mdpi/ic_widget_pressed.png +++ b/res/drawable-mdpi/ic_widget_pressed.png diff --git a/res/drawable-xhdpi/ic_default_screen.png b/res/drawable-xhdpi/ic_default_screen.png Binary files differindex da1e3a883..735332ae5 100644 --- a/res/drawable-xhdpi/ic_default_screen.png +++ b/res/drawable-xhdpi/ic_default_screen.png diff --git a/res/drawable-xhdpi/ic_default_screen_pressed.png b/res/drawable-xhdpi/ic_default_screen_pressed.png Binary files differindex b8dc28c0c..11dede0a0 100644 --- a/res/drawable-xhdpi/ic_default_screen_pressed.png +++ b/res/drawable-xhdpi/ic_default_screen_pressed.png diff --git a/res/drawable-xhdpi/ic_setting.png b/res/drawable-xhdpi/ic_setting.png Binary files differdeleted file mode 100644 index 91ba98c55..000000000 --- a/res/drawable-xhdpi/ic_setting.png +++ /dev/null diff --git a/res/drawable-xhdpi/ic_setting_pressed.png b/res/drawable-xhdpi/ic_setting_pressed.png Binary files differdeleted file mode 100644 index 08aafc405..000000000 --- a/res/drawable-xhdpi/ic_setting_pressed.png +++ /dev/null diff --git a/res/drawable-xhdpi/ic_themes.png b/res/drawable-xhdpi/ic_themes.png Binary files differnew file mode 100644 index 000000000..f229e25a7 --- /dev/null +++ b/res/drawable-xhdpi/ic_themes.png diff --git a/res/drawable-xhdpi/ic_themes_pressed.png b/res/drawable-xhdpi/ic_themes_pressed.png Binary files differnew file mode 100644 index 000000000..07c234d01 --- /dev/null +++ b/res/drawable-xhdpi/ic_themes_pressed.png diff --git a/res/drawable-xhdpi/ic_widget.png b/res/drawable-xhdpi/ic_widget.png Binary files differindex fae347ba7..47dcdd14f 100644 --- a/res/drawable-xhdpi/ic_widget.png +++ b/res/drawable-xhdpi/ic_widget.png diff --git a/res/drawable-xhdpi/ic_widget_pressed.png b/res/drawable-xhdpi/ic_widget_pressed.png Binary files differindex eca9bcc26..8bb387b88 100644 --- a/res/drawable-xhdpi/ic_widget_pressed.png +++ b/res/drawable-xhdpi/ic_widget_pressed.png diff --git a/res/drawable-xxhdpi/ic_default_screen.png b/res/drawable-xxhdpi/ic_default_screen.png Binary files differindex 4577ad2b5..253bd2d4d 100644 --- a/res/drawable-xxhdpi/ic_default_screen.png +++ b/res/drawable-xxhdpi/ic_default_screen.png diff --git a/res/drawable-xxhdpi/ic_default_screen_pressed.png b/res/drawable-xxhdpi/ic_default_screen_pressed.png Binary files differindex cf9cd10e2..5367b7abd 100644 --- a/res/drawable-xxhdpi/ic_default_screen_pressed.png +++ b/res/drawable-xxhdpi/ic_default_screen_pressed.png diff --git a/res/drawable-xxhdpi/ic_setting.png b/res/drawable-xxhdpi/ic_setting.png Binary files differdeleted file mode 100644 index 6e1e6627c..000000000 --- a/res/drawable-xxhdpi/ic_setting.png +++ /dev/null diff --git a/res/drawable-xxhdpi/ic_setting_pressed.png b/res/drawable-xxhdpi/ic_setting_pressed.png Binary files differdeleted file mode 100644 index a202a40fe..000000000 --- a/res/drawable-xxhdpi/ic_setting_pressed.png +++ /dev/null diff --git a/res/drawable-xxhdpi/ic_themes.png b/res/drawable-xxhdpi/ic_themes.png Binary files differnew file mode 100644 index 000000000..62d129627 --- /dev/null +++ b/res/drawable-xxhdpi/ic_themes.png diff --git a/res/drawable-xxhdpi/ic_themes_pressed.png b/res/drawable-xxhdpi/ic_themes_pressed.png Binary files differnew file mode 100644 index 000000000..604b9c4dd --- /dev/null +++ b/res/drawable-xxhdpi/ic_themes_pressed.png diff --git a/res/drawable-xxhdpi/ic_widget.png b/res/drawable-xxhdpi/ic_widget.png Binary files differindex 3bdb42d5e..fddfecaa3 100644 --- a/res/drawable-xxhdpi/ic_widget.png +++ b/res/drawable-xxhdpi/ic_widget.png diff --git a/res/drawable-xxhdpi/ic_widget_pressed.png b/res/drawable-xxhdpi/ic_widget_pressed.png Binary files differindex db6765f13..3d3670ed4 100644 --- a/res/drawable-xxhdpi/ic_widget_pressed.png +++ b/res/drawable-xxhdpi/ic_widget_pressed.png diff --git a/res/drawable/above_shadow.xml b/res/drawable/above_shadow.xml new file mode 100644 index 000000000..5965c971e --- /dev/null +++ b/res/drawable/above_shadow.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <gradient + android:startColor="#20000000" + android:endColor="@android:color/transparent" + android:angle="90" > + </gradient> +</shape>
\ No newline at end of file diff --git a/res/drawable/acordian_00000.png b/res/drawable/acordian_00000.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00000.png diff --git a/res/drawable/acordian_00001.png b/res/drawable/acordian_00001.png Binary files differnew file mode 100644 index 000000000..48f07492b --- /dev/null +++ b/res/drawable/acordian_00001.png diff --git a/res/drawable/acordian_00002.png b/res/drawable/acordian_00002.png Binary files differnew file mode 100644 index 000000000..3ae1b69ca --- /dev/null +++ b/res/drawable/acordian_00002.png diff --git a/res/drawable/acordian_00003.png b/res/drawable/acordian_00003.png Binary files differnew file mode 100644 index 000000000..da2ffe0bf --- /dev/null +++ b/res/drawable/acordian_00003.png diff --git a/res/drawable/acordian_00004.png b/res/drawable/acordian_00004.png Binary files differnew file mode 100644 index 000000000..66f0a26f7 --- /dev/null +++ b/res/drawable/acordian_00004.png diff --git a/res/drawable/acordian_00005.png b/res/drawable/acordian_00005.png Binary files differnew file mode 100644 index 000000000..475060766 --- /dev/null +++ b/res/drawable/acordian_00005.png diff --git a/res/drawable/acordian_00006.png b/res/drawable/acordian_00006.png Binary files differnew file mode 100644 index 000000000..b52388848 --- /dev/null +++ b/res/drawable/acordian_00006.png diff --git a/res/drawable/acordian_00007.png b/res/drawable/acordian_00007.png Binary files differnew file mode 100644 index 000000000..053036747 --- /dev/null +++ b/res/drawable/acordian_00007.png diff --git a/res/drawable/acordian_00008.png b/res/drawable/acordian_00008.png Binary files differnew file mode 100644 index 000000000..11c23fe1f --- /dev/null +++ b/res/drawable/acordian_00008.png diff --git a/res/drawable/acordian_00009.png b/res/drawable/acordian_00009.png Binary files differnew file mode 100644 index 000000000..2fd060a03 --- /dev/null +++ b/res/drawable/acordian_00009.png diff --git a/res/drawable/acordian_00010.png b/res/drawable/acordian_00010.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00010.png diff --git a/res/drawable/acordian_00011.png b/res/drawable/acordian_00011.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00011.png diff --git a/res/drawable/acordian_00012.png b/res/drawable/acordian_00012.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00012.png diff --git a/res/drawable/acordian_00013.png b/res/drawable/acordian_00013.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00013.png diff --git a/res/drawable/acordian_00014.png b/res/drawable/acordian_00014.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00014.png diff --git a/res/drawable/acordian_00015.png b/res/drawable/acordian_00015.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00015.png diff --git a/res/drawable/acordian_00016.png b/res/drawable/acordian_00016.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00016.png diff --git a/res/drawable/acordian_00017.png b/res/drawable/acordian_00017.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00017.png diff --git a/res/drawable/acordian_00018.png b/res/drawable/acordian_00018.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00018.png diff --git a/res/drawable/acordian_00019.png b/res/drawable/acordian_00019.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00019.png diff --git a/res/drawable/acordian_00020.png b/res/drawable/acordian_00020.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00020.png diff --git a/res/drawable/acordian_00021.png b/res/drawable/acordian_00021.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00021.png diff --git a/res/drawable/acordian_00022.png b/res/drawable/acordian_00022.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00022.png diff --git a/res/drawable/acordian_00023.png b/res/drawable/acordian_00023.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00023.png diff --git a/res/drawable/acordian_00024.png b/res/drawable/acordian_00024.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00024.png diff --git a/res/drawable/acordian_00025.png b/res/drawable/acordian_00025.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00025.png diff --git a/res/drawable/acordian_00026.png b/res/drawable/acordian_00026.png Binary files differnew file mode 100644 index 000000000..5debae47a --- /dev/null +++ b/res/drawable/acordian_00026.png diff --git a/res/drawable/acordian_00027.png b/res/drawable/acordian_00027.png Binary files differnew file mode 100644 index 000000000..2fd060a03 --- /dev/null +++ b/res/drawable/acordian_00027.png diff --git a/res/drawable/acordian_00028.png b/res/drawable/acordian_00028.png Binary files differnew file mode 100644 index 000000000..11c23fe1f --- /dev/null +++ b/res/drawable/acordian_00028.png diff --git a/res/drawable/acordian_00029.png b/res/drawable/acordian_00029.png Binary files differnew file mode 100644 index 000000000..053036747 --- /dev/null +++ b/res/drawable/acordian_00029.png diff --git a/res/drawable/acordian_00030.png b/res/drawable/acordian_00030.png Binary files differnew file mode 100644 index 000000000..b52388848 --- /dev/null +++ b/res/drawable/acordian_00030.png diff --git a/res/drawable/acordian_00031.png b/res/drawable/acordian_00031.png Binary files differnew file mode 100644 index 000000000..734bb390d --- /dev/null +++ b/res/drawable/acordian_00031.png diff --git a/res/drawable/acordian_00032.png b/res/drawable/acordian_00032.png Binary files differnew file mode 100644 index 000000000..66f0a26f7 --- /dev/null +++ b/res/drawable/acordian_00032.png diff --git a/res/drawable/acordian_00033.png b/res/drawable/acordian_00033.png Binary files differnew file mode 100644 index 000000000..da2ffe0bf --- /dev/null +++ b/res/drawable/acordian_00033.png diff --git a/res/drawable/acordian_00034.png b/res/drawable/acordian_00034.png Binary files differnew file mode 100644 index 000000000..3ae1b69ca --- /dev/null +++ b/res/drawable/acordian_00034.png diff --git a/res/drawable/acordian_00035.png b/res/drawable/acordian_00035.png Binary files differnew file mode 100644 index 000000000..48f07492b --- /dev/null +++ b/res/drawable/acordian_00035.png diff --git a/res/drawable/acordian_00036.png b/res/drawable/acordian_00036.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00036.png diff --git a/res/drawable/acordian_00037.png b/res/drawable/acordian_00037.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00037.png diff --git a/res/drawable/acordian_00038.png b/res/drawable/acordian_00038.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00038.png diff --git a/res/drawable/acordian_00039.png b/res/drawable/acordian_00039.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00039.png diff --git a/res/drawable/acordian_00040.png b/res/drawable/acordian_00040.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00040.png diff --git a/res/drawable/acordian_00041.png b/res/drawable/acordian_00041.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00041.png diff --git a/res/drawable/acordian_00042.png b/res/drawable/acordian_00042.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00042.png diff --git a/res/drawable/acordian_00043.png b/res/drawable/acordian_00043.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00043.png diff --git a/res/drawable/acordian_00044.png b/res/drawable/acordian_00044.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00044.png diff --git a/res/drawable/acordian_00045.png b/res/drawable/acordian_00045.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00045.png diff --git a/res/drawable/acordian_00046.png b/res/drawable/acordian_00046.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00046.png diff --git a/res/drawable/acordian_00047.png b/res/drawable/acordian_00047.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00047.png diff --git a/res/drawable/acordian_00048.png b/res/drawable/acordian_00048.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00048.png diff --git a/res/drawable/acordian_00049.png b/res/drawable/acordian_00049.png Binary files differnew file mode 100644 index 000000000..72bebb4b3 --- /dev/null +++ b/res/drawable/acordian_00049.png diff --git a/res/drawable/below_shadow.xml b/res/drawable/below_shadow.xml new file mode 100644 index 000000000..c724e27d3 --- /dev/null +++ b/res/drawable/below_shadow.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <gradient + android:startColor="#20000000" + android:endColor="@android:color/transparent" + android:angle="270" > + </gradient> +</shape>
\ No newline at end of file diff --git a/res/drawable/carousel_00000.png b/res/drawable/carousel_00000.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00000.png diff --git a/res/drawable/carousel_00001.png b/res/drawable/carousel_00001.png Binary files differnew file mode 100644 index 000000000..ebd6200a4 --- /dev/null +++ b/res/drawable/carousel_00001.png diff --git a/res/drawable/carousel_00002.png b/res/drawable/carousel_00002.png Binary files differnew file mode 100644 index 000000000..121f26fa6 --- /dev/null +++ b/res/drawable/carousel_00002.png diff --git a/res/drawable/carousel_00003.png b/res/drawable/carousel_00003.png Binary files differnew file mode 100644 index 000000000..9a61cb40b --- /dev/null +++ b/res/drawable/carousel_00003.png diff --git a/res/drawable/carousel_00004.png b/res/drawable/carousel_00004.png Binary files differnew file mode 100644 index 000000000..4f9a741cc --- /dev/null +++ b/res/drawable/carousel_00004.png diff --git a/res/drawable/carousel_00005.png b/res/drawable/carousel_00005.png Binary files differnew file mode 100644 index 000000000..32eadfea5 --- /dev/null +++ b/res/drawable/carousel_00005.png diff --git a/res/drawable/carousel_00006.png b/res/drawable/carousel_00006.png Binary files differnew file mode 100644 index 000000000..e9d8cd625 --- /dev/null +++ b/res/drawable/carousel_00006.png diff --git a/res/drawable/carousel_00007.png b/res/drawable/carousel_00007.png Binary files differnew file mode 100644 index 000000000..d4202b14c --- /dev/null +++ b/res/drawable/carousel_00007.png diff --git a/res/drawable/carousel_00008.png b/res/drawable/carousel_00008.png Binary files differnew file mode 100644 index 000000000..88247f836 --- /dev/null +++ b/res/drawable/carousel_00008.png diff --git a/res/drawable/carousel_00009.png b/res/drawable/carousel_00009.png Binary files differnew file mode 100644 index 000000000..503f791fe --- /dev/null +++ b/res/drawable/carousel_00009.png diff --git a/res/drawable/carousel_00010.png b/res/drawable/carousel_00010.png Binary files differnew file mode 100644 index 000000000..b439edc22 --- /dev/null +++ b/res/drawable/carousel_00010.png diff --git a/res/drawable/carousel_00011.png b/res/drawable/carousel_00011.png Binary files differnew file mode 100644 index 000000000..80a7eca42 --- /dev/null +++ b/res/drawable/carousel_00011.png diff --git a/res/drawable/carousel_00012.png b/res/drawable/carousel_00012.png Binary files differnew file mode 100644 index 000000000..57e72b869 --- /dev/null +++ b/res/drawable/carousel_00012.png diff --git a/res/drawable/carousel_00013.png b/res/drawable/carousel_00013.png Binary files differnew file mode 100644 index 000000000..6211a520e --- /dev/null +++ b/res/drawable/carousel_00013.png diff --git a/res/drawable/carousel_00014.png b/res/drawable/carousel_00014.png Binary files differnew file mode 100644 index 000000000..714466bdd --- /dev/null +++ b/res/drawable/carousel_00014.png diff --git a/res/drawable/carousel_00015.png b/res/drawable/carousel_00015.png Binary files differnew file mode 100644 index 000000000..0b34111c4 --- /dev/null +++ b/res/drawable/carousel_00015.png diff --git a/res/drawable/carousel_00016.png b/res/drawable/carousel_00016.png Binary files differnew file mode 100644 index 000000000..a3c08cd13 --- /dev/null +++ b/res/drawable/carousel_00016.png diff --git a/res/drawable/carousel_00017.png b/res/drawable/carousel_00017.png Binary files differnew file mode 100644 index 000000000..5fa15a7cb --- /dev/null +++ b/res/drawable/carousel_00017.png diff --git a/res/drawable/carousel_00018.png b/res/drawable/carousel_00018.png Binary files differnew file mode 100644 index 000000000..e10df7dd0 --- /dev/null +++ b/res/drawable/carousel_00018.png diff --git a/res/drawable/carousel_00019.png b/res/drawable/carousel_00019.png Binary files differnew file mode 100644 index 000000000..4e3765b40 --- /dev/null +++ b/res/drawable/carousel_00019.png diff --git a/res/drawable/carousel_00020.png b/res/drawable/carousel_00020.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00020.png diff --git a/res/drawable/carousel_00021.png b/res/drawable/carousel_00021.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00021.png diff --git a/res/drawable/carousel_00022.png b/res/drawable/carousel_00022.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00022.png diff --git a/res/drawable/carousel_00023.png b/res/drawable/carousel_00023.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00023.png diff --git a/res/drawable/carousel_00024.png b/res/drawable/carousel_00024.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00024.png diff --git a/res/drawable/carousel_00025.png b/res/drawable/carousel_00025.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00025.png diff --git a/res/drawable/carousel_00026.png b/res/drawable/carousel_00026.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00026.png diff --git a/res/drawable/carousel_00027.png b/res/drawable/carousel_00027.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00027.png diff --git a/res/drawable/carousel_00028.png b/res/drawable/carousel_00028.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00028.png diff --git a/res/drawable/carousel_00029.png b/res/drawable/carousel_00029.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00029.png diff --git a/res/drawable/carousel_00030.png b/res/drawable/carousel_00030.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00030.png diff --git a/res/drawable/carousel_00031.png b/res/drawable/carousel_00031.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00031.png diff --git a/res/drawable/carousel_00032.png b/res/drawable/carousel_00032.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00032.png diff --git a/res/drawable/carousel_00033.png b/res/drawable/carousel_00033.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00033.png diff --git a/res/drawable/carousel_00034.png b/res/drawable/carousel_00034.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00034.png diff --git a/res/drawable/carousel_00035.png b/res/drawable/carousel_00035.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00035.png diff --git a/res/drawable/carousel_00036.png b/res/drawable/carousel_00036.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00036.png diff --git a/res/drawable/carousel_00037.png b/res/drawable/carousel_00037.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00037.png diff --git a/res/drawable/carousel_00038.png b/res/drawable/carousel_00038.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00038.png diff --git a/res/drawable/carousel_00039.png b/res/drawable/carousel_00039.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00039.png diff --git a/res/drawable/carousel_00040.png b/res/drawable/carousel_00040.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00040.png diff --git a/res/drawable/carousel_00041.png b/res/drawable/carousel_00041.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00041.png diff --git a/res/drawable/carousel_00042.png b/res/drawable/carousel_00042.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00042.png diff --git a/res/drawable/carousel_00043.png b/res/drawable/carousel_00043.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00043.png diff --git a/res/drawable/carousel_00044.png b/res/drawable/carousel_00044.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00044.png diff --git a/res/drawable/carousel_00045.png b/res/drawable/carousel_00045.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00045.png diff --git a/res/drawable/carousel_00046.png b/res/drawable/carousel_00046.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00046.png diff --git a/res/drawable/carousel_00047.png b/res/drawable/carousel_00047.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00047.png diff --git a/res/drawable/carousel_00048.png b/res/drawable/carousel_00048.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00048.png diff --git a/res/drawable/carousel_00049.png b/res/drawable/carousel_00049.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/carousel_00049.png diff --git a/res/drawable/cubein_00000.png b/res/drawable/cubein_00000.png Binary files differnew file mode 100644 index 000000000..678a89d23 --- /dev/null +++ b/res/drawable/cubein_00000.png diff --git a/res/drawable/cubein_00001.png b/res/drawable/cubein_00001.png Binary files differnew file mode 100644 index 000000000..322899f46 --- /dev/null +++ b/res/drawable/cubein_00001.png diff --git a/res/drawable/cubein_00002.png b/res/drawable/cubein_00002.png Binary files differnew file mode 100644 index 000000000..3d963c7ee --- /dev/null +++ b/res/drawable/cubein_00002.png diff --git a/res/drawable/cubein_00003.png b/res/drawable/cubein_00003.png Binary files differnew file mode 100644 index 000000000..7dabd0bf3 --- /dev/null +++ b/res/drawable/cubein_00003.png diff --git a/res/drawable/cubein_00004.png b/res/drawable/cubein_00004.png Binary files differnew file mode 100644 index 000000000..b73ce02c8 --- /dev/null +++ b/res/drawable/cubein_00004.png diff --git a/res/drawable/cubein_00005.png b/res/drawable/cubein_00005.png Binary files differnew file mode 100644 index 000000000..d9c7ea1f0 --- /dev/null +++ b/res/drawable/cubein_00005.png diff --git a/res/drawable/cubein_00006.png b/res/drawable/cubein_00006.png Binary files differnew file mode 100644 index 000000000..2b3198bc9 --- /dev/null +++ b/res/drawable/cubein_00006.png diff --git a/res/drawable/cubein_00007.png b/res/drawable/cubein_00007.png Binary files differnew file mode 100644 index 000000000..915fbe71f --- /dev/null +++ b/res/drawable/cubein_00007.png diff --git a/res/drawable/cubein_00008.png b/res/drawable/cubein_00008.png Binary files differnew file mode 100644 index 000000000..4eee981b6 --- /dev/null +++ b/res/drawable/cubein_00008.png diff --git a/res/drawable/cubein_00009.png b/res/drawable/cubein_00009.png Binary files differnew file mode 100644 index 000000000..516661963 --- /dev/null +++ b/res/drawable/cubein_00009.png diff --git a/res/drawable/cubein_00010.png b/res/drawable/cubein_00010.png Binary files differnew file mode 100644 index 000000000..3fdb7af1a --- /dev/null +++ b/res/drawable/cubein_00010.png diff --git a/res/drawable/cubein_00011.png b/res/drawable/cubein_00011.png Binary files differnew file mode 100644 index 000000000..273b70afa --- /dev/null +++ b/res/drawable/cubein_00011.png diff --git a/res/drawable/cubein_00012.png b/res/drawable/cubein_00012.png Binary files differnew file mode 100644 index 000000000..4ed7571c0 --- /dev/null +++ b/res/drawable/cubein_00012.png diff --git a/res/drawable/cubein_00013.png b/res/drawable/cubein_00013.png Binary files differnew file mode 100644 index 000000000..6ec50e73c --- /dev/null +++ b/res/drawable/cubein_00013.png diff --git a/res/drawable/cubein_00014.png b/res/drawable/cubein_00014.png Binary files differnew file mode 100644 index 000000000..78eee8c7f --- /dev/null +++ b/res/drawable/cubein_00014.png diff --git a/res/drawable/cubein_00015.png b/res/drawable/cubein_00015.png Binary files differnew file mode 100644 index 000000000..cbf4bbd53 --- /dev/null +++ b/res/drawable/cubein_00015.png diff --git a/res/drawable/cubein_00016.png b/res/drawable/cubein_00016.png Binary files differnew file mode 100644 index 000000000..3bd56fc2d --- /dev/null +++ b/res/drawable/cubein_00016.png diff --git a/res/drawable/cubein_00017.png b/res/drawable/cubein_00017.png Binary files differnew file mode 100644 index 000000000..2783f73b1 --- /dev/null +++ b/res/drawable/cubein_00017.png diff --git a/res/drawable/cubein_00018.png b/res/drawable/cubein_00018.png Binary files differnew file mode 100644 index 000000000..052c7b22b --- /dev/null +++ b/res/drawable/cubein_00018.png diff --git a/res/drawable/cubein_00019.png b/res/drawable/cubein_00019.png Binary files differnew file mode 100644 index 000000000..7c99a679b --- /dev/null +++ b/res/drawable/cubein_00019.png diff --git a/res/drawable/cubein_00020.png b/res/drawable/cubein_00020.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00020.png diff --git a/res/drawable/cubein_00021.png b/res/drawable/cubein_00021.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00021.png diff --git a/res/drawable/cubein_00022.png b/res/drawable/cubein_00022.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00022.png diff --git a/res/drawable/cubein_00023.png b/res/drawable/cubein_00023.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00023.png diff --git a/res/drawable/cubein_00024.png b/res/drawable/cubein_00024.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00024.png diff --git a/res/drawable/cubein_00025.png b/res/drawable/cubein_00025.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00025.png diff --git a/res/drawable/cubein_00026.png b/res/drawable/cubein_00026.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00026.png diff --git a/res/drawable/cubein_00027.png b/res/drawable/cubein_00027.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00027.png diff --git a/res/drawable/cubein_00028.png b/res/drawable/cubein_00028.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00028.png diff --git a/res/drawable/cubein_00029.png b/res/drawable/cubein_00029.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00029.png diff --git a/res/drawable/cubein_00030.png b/res/drawable/cubein_00030.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00030.png diff --git a/res/drawable/cubein_00031.png b/res/drawable/cubein_00031.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00031.png diff --git a/res/drawable/cubein_00032.png b/res/drawable/cubein_00032.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00032.png diff --git a/res/drawable/cubein_00033.png b/res/drawable/cubein_00033.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00033.png diff --git a/res/drawable/cubein_00034.png b/res/drawable/cubein_00034.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00034.png diff --git a/res/drawable/cubein_00035.png b/res/drawable/cubein_00035.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00035.png diff --git a/res/drawable/cubein_00036.png b/res/drawable/cubein_00036.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00036.png diff --git a/res/drawable/cubein_00037.png b/res/drawable/cubein_00037.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00037.png diff --git a/res/drawable/cubein_00038.png b/res/drawable/cubein_00038.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00038.png diff --git a/res/drawable/cubein_00039.png b/res/drawable/cubein_00039.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00039.png diff --git a/res/drawable/cubein_00040.png b/res/drawable/cubein_00040.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00040.png diff --git a/res/drawable/cubein_00041.png b/res/drawable/cubein_00041.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00041.png diff --git a/res/drawable/cubein_00042.png b/res/drawable/cubein_00042.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00042.png diff --git a/res/drawable/cubein_00043.png b/res/drawable/cubein_00043.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00043.png diff --git a/res/drawable/cubein_00044.png b/res/drawable/cubein_00044.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00044.png diff --git a/res/drawable/cubein_00045.png b/res/drawable/cubein_00045.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00045.png diff --git a/res/drawable/cubein_00046.png b/res/drawable/cubein_00046.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00046.png diff --git a/res/drawable/cubein_00047.png b/res/drawable/cubein_00047.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00047.png diff --git a/res/drawable/cubein_00048.png b/res/drawable/cubein_00048.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00048.png diff --git a/res/drawable/cubein_00049.png b/res/drawable/cubein_00049.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubein_00049.png diff --git a/res/drawable/cubeout_00000.png b/res/drawable/cubeout_00000.png Binary files differnew file mode 100644 index 000000000..d444d1318 --- /dev/null +++ b/res/drawable/cubeout_00000.png diff --git a/res/drawable/cubeout_00001.png b/res/drawable/cubeout_00001.png Binary files differnew file mode 100644 index 000000000..69b57487c --- /dev/null +++ b/res/drawable/cubeout_00001.png diff --git a/res/drawable/cubeout_00002.png b/res/drawable/cubeout_00002.png Binary files differnew file mode 100644 index 000000000..58f4191ae --- /dev/null +++ b/res/drawable/cubeout_00002.png diff --git a/res/drawable/cubeout_00003.png b/res/drawable/cubeout_00003.png Binary files differnew file mode 100644 index 000000000..096771ec5 --- /dev/null +++ b/res/drawable/cubeout_00003.png diff --git a/res/drawable/cubeout_00004.png b/res/drawable/cubeout_00004.png Binary files differnew file mode 100644 index 000000000..2d027ffa5 --- /dev/null +++ b/res/drawable/cubeout_00004.png diff --git a/res/drawable/cubeout_00005.png b/res/drawable/cubeout_00005.png Binary files differnew file mode 100644 index 000000000..bc3876565 --- /dev/null +++ b/res/drawable/cubeout_00005.png diff --git a/res/drawable/cubeout_00006.png b/res/drawable/cubeout_00006.png Binary files differnew file mode 100644 index 000000000..742bebd0e --- /dev/null +++ b/res/drawable/cubeout_00006.png diff --git a/res/drawable/cubeout_00007.png b/res/drawable/cubeout_00007.png Binary files differnew file mode 100644 index 000000000..ec7b63326 --- /dev/null +++ b/res/drawable/cubeout_00007.png diff --git a/res/drawable/cubeout_00008.png b/res/drawable/cubeout_00008.png Binary files differnew file mode 100644 index 000000000..5eb601422 --- /dev/null +++ b/res/drawable/cubeout_00008.png diff --git a/res/drawable/cubeout_00009.png b/res/drawable/cubeout_00009.png Binary files differnew file mode 100644 index 000000000..30559fb95 --- /dev/null +++ b/res/drawable/cubeout_00009.png diff --git a/res/drawable/cubeout_00010.png b/res/drawable/cubeout_00010.png Binary files differnew file mode 100644 index 000000000..fa8b785fd --- /dev/null +++ b/res/drawable/cubeout_00010.png diff --git a/res/drawable/cubeout_00011.png b/res/drawable/cubeout_00011.png Binary files differnew file mode 100644 index 000000000..9de04f3e3 --- /dev/null +++ b/res/drawable/cubeout_00011.png diff --git a/res/drawable/cubeout_00012.png b/res/drawable/cubeout_00012.png Binary files differnew file mode 100644 index 000000000..343901380 --- /dev/null +++ b/res/drawable/cubeout_00012.png diff --git a/res/drawable/cubeout_00013.png b/res/drawable/cubeout_00013.png Binary files differnew file mode 100644 index 000000000..4fcd8444c --- /dev/null +++ b/res/drawable/cubeout_00013.png diff --git a/res/drawable/cubeout_00014.png b/res/drawable/cubeout_00014.png Binary files differnew file mode 100644 index 000000000..df3b99369 --- /dev/null +++ b/res/drawable/cubeout_00014.png diff --git a/res/drawable/cubeout_00015.png b/res/drawable/cubeout_00015.png Binary files differnew file mode 100644 index 000000000..b4f910f3c --- /dev/null +++ b/res/drawable/cubeout_00015.png diff --git a/res/drawable/cubeout_00016.png b/res/drawable/cubeout_00016.png Binary files differnew file mode 100644 index 000000000..262e12942 --- /dev/null +++ b/res/drawable/cubeout_00016.png diff --git a/res/drawable/cubeout_00017.png b/res/drawable/cubeout_00017.png Binary files differnew file mode 100644 index 000000000..873146bc3 --- /dev/null +++ b/res/drawable/cubeout_00017.png diff --git a/res/drawable/cubeout_00018.png b/res/drawable/cubeout_00018.png Binary files differnew file mode 100644 index 000000000..2d52f2343 --- /dev/null +++ b/res/drawable/cubeout_00018.png diff --git a/res/drawable/cubeout_00019.png b/res/drawable/cubeout_00019.png Binary files differnew file mode 100644 index 000000000..1b7bff44a --- /dev/null +++ b/res/drawable/cubeout_00019.png diff --git a/res/drawable/cubeout_00020.png b/res/drawable/cubeout_00020.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00020.png diff --git a/res/drawable/cubeout_00021.png b/res/drawable/cubeout_00021.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00021.png diff --git a/res/drawable/cubeout_00022.png b/res/drawable/cubeout_00022.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00022.png diff --git a/res/drawable/cubeout_00023.png b/res/drawable/cubeout_00023.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00023.png diff --git a/res/drawable/cubeout_00024.png b/res/drawable/cubeout_00024.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00024.png diff --git a/res/drawable/cubeout_00025.png b/res/drawable/cubeout_00025.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00025.png diff --git a/res/drawable/cubeout_00026.png b/res/drawable/cubeout_00026.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00026.png diff --git a/res/drawable/cubeout_00027.png b/res/drawable/cubeout_00027.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00027.png diff --git a/res/drawable/cubeout_00028.png b/res/drawable/cubeout_00028.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00028.png diff --git a/res/drawable/cubeout_00029.png b/res/drawable/cubeout_00029.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00029.png diff --git a/res/drawable/cubeout_00030.png b/res/drawable/cubeout_00030.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00030.png diff --git a/res/drawable/cubeout_00031.png b/res/drawable/cubeout_00031.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00031.png diff --git a/res/drawable/cubeout_00032.png b/res/drawable/cubeout_00032.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00032.png diff --git a/res/drawable/cubeout_00033.png b/res/drawable/cubeout_00033.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00033.png diff --git a/res/drawable/cubeout_00034.png b/res/drawable/cubeout_00034.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00034.png diff --git a/res/drawable/cubeout_00035.png b/res/drawable/cubeout_00035.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00035.png diff --git a/res/drawable/cubeout_00036.png b/res/drawable/cubeout_00036.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00036.png diff --git a/res/drawable/cubeout_00037.png b/res/drawable/cubeout_00037.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00037.png diff --git a/res/drawable/cubeout_00038.png b/res/drawable/cubeout_00038.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00038.png diff --git a/res/drawable/cubeout_00039.png b/res/drawable/cubeout_00039.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00039.png diff --git a/res/drawable/cubeout_00040.png b/res/drawable/cubeout_00040.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00040.png diff --git a/res/drawable/cubeout_00041.png b/res/drawable/cubeout_00041.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00041.png diff --git a/res/drawable/cubeout_00042.png b/res/drawable/cubeout_00042.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00042.png diff --git a/res/drawable/cubeout_00043.png b/res/drawable/cubeout_00043.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00043.png diff --git a/res/drawable/cubeout_00044.png b/res/drawable/cubeout_00044.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00044.png diff --git a/res/drawable/cubeout_00045.png b/res/drawable/cubeout_00045.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00045.png diff --git a/res/drawable/cubeout_00046.png b/res/drawable/cubeout_00046.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00046.png diff --git a/res/drawable/cubeout_00047.png b/res/drawable/cubeout_00047.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00047.png diff --git a/res/drawable/cubeout_00048.png b/res/drawable/cubeout_00048.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00048.png diff --git a/res/drawable/cubeout_00049.png b/res/drawable/cubeout_00049.png Binary files differnew file mode 100644 index 000000000..1662df8dc --- /dev/null +++ b/res/drawable/cubeout_00049.png diff --git a/res/drawable/cylinderin_00000.png b/res/drawable/cylinderin_00000.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00000.png diff --git a/res/drawable/cylinderin_00001.png b/res/drawable/cylinderin_00001.png Binary files differnew file mode 100644 index 000000000..bfc597a49 --- /dev/null +++ b/res/drawable/cylinderin_00001.png diff --git a/res/drawable/cylinderin_00002.png b/res/drawable/cylinderin_00002.png Binary files differnew file mode 100644 index 000000000..88114b7e2 --- /dev/null +++ b/res/drawable/cylinderin_00002.png diff --git a/res/drawable/cylinderin_00003.png b/res/drawable/cylinderin_00003.png Binary files differnew file mode 100644 index 000000000..fe24f3f22 --- /dev/null +++ b/res/drawable/cylinderin_00003.png diff --git a/res/drawable/cylinderin_00004.png b/res/drawable/cylinderin_00004.png Binary files differnew file mode 100644 index 000000000..c3a655b23 --- /dev/null +++ b/res/drawable/cylinderin_00004.png diff --git a/res/drawable/cylinderin_00005.png b/res/drawable/cylinderin_00005.png Binary files differnew file mode 100644 index 000000000..e34b658e8 --- /dev/null +++ b/res/drawable/cylinderin_00005.png diff --git a/res/drawable/cylinderin_00006.png b/res/drawable/cylinderin_00006.png Binary files differnew file mode 100644 index 000000000..7f4d7b9db --- /dev/null +++ b/res/drawable/cylinderin_00006.png diff --git a/res/drawable/cylinderin_00007.png b/res/drawable/cylinderin_00007.png Binary files differnew file mode 100644 index 000000000..bef4a2d11 --- /dev/null +++ b/res/drawable/cylinderin_00007.png diff --git a/res/drawable/cylinderin_00008.png b/res/drawable/cylinderin_00008.png Binary files differnew file mode 100644 index 000000000..3ed252efa --- /dev/null +++ b/res/drawable/cylinderin_00008.png diff --git a/res/drawable/cylinderin_00009.png b/res/drawable/cylinderin_00009.png Binary files differnew file mode 100644 index 000000000..6b47c400e --- /dev/null +++ b/res/drawable/cylinderin_00009.png diff --git a/res/drawable/cylinderin_00010.png b/res/drawable/cylinderin_00010.png Binary files differnew file mode 100644 index 000000000..5ffd650ed --- /dev/null +++ b/res/drawable/cylinderin_00010.png diff --git a/res/drawable/cylinderin_00011.png b/res/drawable/cylinderin_00011.png Binary files differnew file mode 100644 index 000000000..f6ad8cc80 --- /dev/null +++ b/res/drawable/cylinderin_00011.png diff --git a/res/drawable/cylinderin_00012.png b/res/drawable/cylinderin_00012.png Binary files differnew file mode 100644 index 000000000..27c7d6945 --- /dev/null +++ b/res/drawable/cylinderin_00012.png diff --git a/res/drawable/cylinderin_00013.png b/res/drawable/cylinderin_00013.png Binary files differnew file mode 100644 index 000000000..a78a4359d --- /dev/null +++ b/res/drawable/cylinderin_00013.png diff --git a/res/drawable/cylinderin_00014.png b/res/drawable/cylinderin_00014.png Binary files differnew file mode 100644 index 000000000..4eda97009 --- /dev/null +++ b/res/drawable/cylinderin_00014.png diff --git a/res/drawable/cylinderin_00015.png b/res/drawable/cylinderin_00015.png Binary files differnew file mode 100644 index 000000000..e3ddc7e98 --- /dev/null +++ b/res/drawable/cylinderin_00015.png diff --git a/res/drawable/cylinderin_00016.png b/res/drawable/cylinderin_00016.png Binary files differnew file mode 100644 index 000000000..eb48e294c --- /dev/null +++ b/res/drawable/cylinderin_00016.png diff --git a/res/drawable/cylinderin_00017.png b/res/drawable/cylinderin_00017.png Binary files differnew file mode 100644 index 000000000..fb7b3aff9 --- /dev/null +++ b/res/drawable/cylinderin_00017.png diff --git a/res/drawable/cylinderin_00018.png b/res/drawable/cylinderin_00018.png Binary files differnew file mode 100644 index 000000000..5c73e4d98 --- /dev/null +++ b/res/drawable/cylinderin_00018.png diff --git a/res/drawable/cylinderin_00019.png b/res/drawable/cylinderin_00019.png Binary files differnew file mode 100644 index 000000000..967423915 --- /dev/null +++ b/res/drawable/cylinderin_00019.png diff --git a/res/drawable/cylinderin_00020.png b/res/drawable/cylinderin_00020.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00020.png diff --git a/res/drawable/cylinderin_00021.png b/res/drawable/cylinderin_00021.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00021.png diff --git a/res/drawable/cylinderin_00022.png b/res/drawable/cylinderin_00022.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00022.png diff --git a/res/drawable/cylinderin_00023.png b/res/drawable/cylinderin_00023.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00023.png diff --git a/res/drawable/cylinderin_00024.png b/res/drawable/cylinderin_00024.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00024.png diff --git a/res/drawable/cylinderin_00025.png b/res/drawable/cylinderin_00025.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00025.png diff --git a/res/drawable/cylinderin_00026.png b/res/drawable/cylinderin_00026.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00026.png diff --git a/res/drawable/cylinderin_00027.png b/res/drawable/cylinderin_00027.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00027.png diff --git a/res/drawable/cylinderin_00028.png b/res/drawable/cylinderin_00028.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00028.png diff --git a/res/drawable/cylinderin_00029.png b/res/drawable/cylinderin_00029.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00029.png diff --git a/res/drawable/cylinderin_00030.png b/res/drawable/cylinderin_00030.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00030.png diff --git a/res/drawable/cylinderin_00031.png b/res/drawable/cylinderin_00031.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00031.png diff --git a/res/drawable/cylinderin_00032.png b/res/drawable/cylinderin_00032.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00032.png diff --git a/res/drawable/cylinderin_00033.png b/res/drawable/cylinderin_00033.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00033.png diff --git a/res/drawable/cylinderin_00034.png b/res/drawable/cylinderin_00034.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00034.png diff --git a/res/drawable/cylinderin_00035.png b/res/drawable/cylinderin_00035.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00035.png diff --git a/res/drawable/cylinderin_00036.png b/res/drawable/cylinderin_00036.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00036.png diff --git a/res/drawable/cylinderin_00037.png b/res/drawable/cylinderin_00037.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00037.png diff --git a/res/drawable/cylinderin_00038.png b/res/drawable/cylinderin_00038.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00038.png diff --git a/res/drawable/cylinderin_00039.png b/res/drawable/cylinderin_00039.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00039.png diff --git a/res/drawable/cylinderin_00040.png b/res/drawable/cylinderin_00040.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00040.png diff --git a/res/drawable/cylinderin_00041.png b/res/drawable/cylinderin_00041.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00041.png diff --git a/res/drawable/cylinderin_00042.png b/res/drawable/cylinderin_00042.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00042.png diff --git a/res/drawable/cylinderin_00043.png b/res/drawable/cylinderin_00043.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00043.png diff --git a/res/drawable/cylinderin_00044.png b/res/drawable/cylinderin_00044.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00044.png diff --git a/res/drawable/cylinderin_00045.png b/res/drawable/cylinderin_00045.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00045.png diff --git a/res/drawable/cylinderin_00046.png b/res/drawable/cylinderin_00046.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00046.png diff --git a/res/drawable/cylinderin_00047.png b/res/drawable/cylinderin_00047.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00047.png diff --git a/res/drawable/cylinderin_00048.png b/res/drawable/cylinderin_00048.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00048.png diff --git a/res/drawable/cylinderin_00049.png b/res/drawable/cylinderin_00049.png Binary files differnew file mode 100644 index 000000000..c5eeb55a0 --- /dev/null +++ b/res/drawable/cylinderin_00049.png diff --git a/res/drawable/cylinderout_00000.png b/res/drawable/cylinderout_00000.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00000.png diff --git a/res/drawable/cylinderout_00001.png b/res/drawable/cylinderout_00001.png Binary files differnew file mode 100644 index 000000000..ba768d300 --- /dev/null +++ b/res/drawable/cylinderout_00001.png diff --git a/res/drawable/cylinderout_00002.png b/res/drawable/cylinderout_00002.png Binary files differnew file mode 100644 index 000000000..c753c3b02 --- /dev/null +++ b/res/drawable/cylinderout_00002.png diff --git a/res/drawable/cylinderout_00003.png b/res/drawable/cylinderout_00003.png Binary files differnew file mode 100644 index 000000000..903d16029 --- /dev/null +++ b/res/drawable/cylinderout_00003.png diff --git a/res/drawable/cylinderout_00004.png b/res/drawable/cylinderout_00004.png Binary files differnew file mode 100644 index 000000000..803ba23be --- /dev/null +++ b/res/drawable/cylinderout_00004.png diff --git a/res/drawable/cylinderout_00005.png b/res/drawable/cylinderout_00005.png Binary files differnew file mode 100644 index 000000000..ccfb96d48 --- /dev/null +++ b/res/drawable/cylinderout_00005.png diff --git a/res/drawable/cylinderout_00006.png b/res/drawable/cylinderout_00006.png Binary files differnew file mode 100644 index 000000000..1b7a4c899 --- /dev/null +++ b/res/drawable/cylinderout_00006.png diff --git a/res/drawable/cylinderout_00007.png b/res/drawable/cylinderout_00007.png Binary files differnew file mode 100644 index 000000000..5366845fa --- /dev/null +++ b/res/drawable/cylinderout_00007.png diff --git a/res/drawable/cylinderout_00008.png b/res/drawable/cylinderout_00008.png Binary files differnew file mode 100644 index 000000000..325574a27 --- /dev/null +++ b/res/drawable/cylinderout_00008.png diff --git a/res/drawable/cylinderout_00009.png b/res/drawable/cylinderout_00009.png Binary files differnew file mode 100644 index 000000000..9280ff34b --- /dev/null +++ b/res/drawable/cylinderout_00009.png diff --git a/res/drawable/cylinderout_00010.png b/res/drawable/cylinderout_00010.png Binary files differnew file mode 100644 index 000000000..f667a3261 --- /dev/null +++ b/res/drawable/cylinderout_00010.png diff --git a/res/drawable/cylinderout_00011.png b/res/drawable/cylinderout_00011.png Binary files differnew file mode 100644 index 000000000..8d38ecf7e --- /dev/null +++ b/res/drawable/cylinderout_00011.png diff --git a/res/drawable/cylinderout_00012.png b/res/drawable/cylinderout_00012.png Binary files differnew file mode 100644 index 000000000..80359d12a --- /dev/null +++ b/res/drawable/cylinderout_00012.png diff --git a/res/drawable/cylinderout_00013.png b/res/drawable/cylinderout_00013.png Binary files differnew file mode 100644 index 000000000..087953e6c --- /dev/null +++ b/res/drawable/cylinderout_00013.png diff --git a/res/drawable/cylinderout_00014.png b/res/drawable/cylinderout_00014.png Binary files differnew file mode 100644 index 000000000..083009a08 --- /dev/null +++ b/res/drawable/cylinderout_00014.png diff --git a/res/drawable/cylinderout_00015.png b/res/drawable/cylinderout_00015.png Binary files differnew file mode 100644 index 000000000..c5cfb7eb9 --- /dev/null +++ b/res/drawable/cylinderout_00015.png diff --git a/res/drawable/cylinderout_00016.png b/res/drawable/cylinderout_00016.png Binary files differnew file mode 100644 index 000000000..c1e9eea70 --- /dev/null +++ b/res/drawable/cylinderout_00016.png diff --git a/res/drawable/cylinderout_00017.png b/res/drawable/cylinderout_00017.png Binary files differnew file mode 100644 index 000000000..cca8ec06e --- /dev/null +++ b/res/drawable/cylinderout_00017.png diff --git a/res/drawable/cylinderout_00018.png b/res/drawable/cylinderout_00018.png Binary files differnew file mode 100644 index 000000000..13c2a8ce6 --- /dev/null +++ b/res/drawable/cylinderout_00018.png diff --git a/res/drawable/cylinderout_00019.png b/res/drawable/cylinderout_00019.png Binary files differnew file mode 100644 index 000000000..3e806b910 --- /dev/null +++ b/res/drawable/cylinderout_00019.png diff --git a/res/drawable/cylinderout_00020.png b/res/drawable/cylinderout_00020.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00020.png diff --git a/res/drawable/cylinderout_00021.png b/res/drawable/cylinderout_00021.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00021.png diff --git a/res/drawable/cylinderout_00022.png b/res/drawable/cylinderout_00022.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00022.png diff --git a/res/drawable/cylinderout_00023.png b/res/drawable/cylinderout_00023.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00023.png diff --git a/res/drawable/cylinderout_00024.png b/res/drawable/cylinderout_00024.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00024.png diff --git a/res/drawable/cylinderout_00025.png b/res/drawable/cylinderout_00025.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00025.png diff --git a/res/drawable/cylinderout_00026.png b/res/drawable/cylinderout_00026.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00026.png diff --git a/res/drawable/cylinderout_00027.png b/res/drawable/cylinderout_00027.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00027.png diff --git a/res/drawable/cylinderout_00028.png b/res/drawable/cylinderout_00028.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00028.png diff --git a/res/drawable/cylinderout_00029.png b/res/drawable/cylinderout_00029.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00029.png diff --git a/res/drawable/cylinderout_00030.png b/res/drawable/cylinderout_00030.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00030.png diff --git a/res/drawable/cylinderout_00031.png b/res/drawable/cylinderout_00031.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00031.png diff --git a/res/drawable/cylinderout_00032.png b/res/drawable/cylinderout_00032.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00032.png diff --git a/res/drawable/cylinderout_00033.png b/res/drawable/cylinderout_00033.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00033.png diff --git a/res/drawable/cylinderout_00034.png b/res/drawable/cylinderout_00034.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00034.png diff --git a/res/drawable/cylinderout_00035.png b/res/drawable/cylinderout_00035.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00035.png diff --git a/res/drawable/cylinderout_00036.png b/res/drawable/cylinderout_00036.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00036.png diff --git a/res/drawable/cylinderout_00037.png b/res/drawable/cylinderout_00037.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00037.png diff --git a/res/drawable/cylinderout_00038.png b/res/drawable/cylinderout_00038.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00038.png diff --git a/res/drawable/cylinderout_00039.png b/res/drawable/cylinderout_00039.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00039.png diff --git a/res/drawable/cylinderout_00040.png b/res/drawable/cylinderout_00040.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00040.png diff --git a/res/drawable/cylinderout_00041.png b/res/drawable/cylinderout_00041.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00041.png diff --git a/res/drawable/cylinderout_00042.png b/res/drawable/cylinderout_00042.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00042.png diff --git a/res/drawable/cylinderout_00043.png b/res/drawable/cylinderout_00043.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00043.png diff --git a/res/drawable/cylinderout_00044.png b/res/drawable/cylinderout_00044.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00044.png diff --git a/res/drawable/cylinderout_00045.png b/res/drawable/cylinderout_00045.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00045.png diff --git a/res/drawable/cylinderout_00046.png b/res/drawable/cylinderout_00046.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00046.png diff --git a/res/drawable/cylinderout_00047.png b/res/drawable/cylinderout_00047.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00047.png diff --git a/res/drawable/cylinderout_00048.png b/res/drawable/cylinderout_00048.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00048.png diff --git a/res/drawable/cylinderout_00049.png b/res/drawable/cylinderout_00049.png Binary files differnew file mode 100644 index 000000000..d53161c2b --- /dev/null +++ b/res/drawable/cylinderout_00049.png diff --git a/res/drawable/flip_00000.png b/res/drawable/flip_00000.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00000.png diff --git a/res/drawable/flip_00001.png b/res/drawable/flip_00001.png Binary files differnew file mode 100644 index 000000000..086511876 --- /dev/null +++ b/res/drawable/flip_00001.png diff --git a/res/drawable/flip_00002.png b/res/drawable/flip_00002.png Binary files differnew file mode 100644 index 000000000..ae9f255f7 --- /dev/null +++ b/res/drawable/flip_00002.png diff --git a/res/drawable/flip_00003.png b/res/drawable/flip_00003.png Binary files differnew file mode 100644 index 000000000..62846c7d1 --- /dev/null +++ b/res/drawable/flip_00003.png diff --git a/res/drawable/flip_00004.png b/res/drawable/flip_00004.png Binary files differnew file mode 100644 index 000000000..ae70cb81b --- /dev/null +++ b/res/drawable/flip_00004.png diff --git a/res/drawable/flip_00005.png b/res/drawable/flip_00005.png Binary files differnew file mode 100644 index 000000000..ccef96be3 --- /dev/null +++ b/res/drawable/flip_00005.png diff --git a/res/drawable/flip_00006.png b/res/drawable/flip_00006.png Binary files differnew file mode 100644 index 000000000..ce8819c6a --- /dev/null +++ b/res/drawable/flip_00006.png diff --git a/res/drawable/flip_00007.png b/res/drawable/flip_00007.png Binary files differnew file mode 100644 index 000000000..b502e2d4a --- /dev/null +++ b/res/drawable/flip_00007.png diff --git a/res/drawable/flip_00008.png b/res/drawable/flip_00008.png Binary files differnew file mode 100644 index 000000000..bfaae1d36 --- /dev/null +++ b/res/drawable/flip_00008.png diff --git a/res/drawable/flip_00009.png b/res/drawable/flip_00009.png Binary files differnew file mode 100644 index 000000000..f974cd4c6 --- /dev/null +++ b/res/drawable/flip_00009.png diff --git a/res/drawable/flip_00010.png b/res/drawable/flip_00010.png Binary files differnew file mode 100644 index 000000000..9b298a83f --- /dev/null +++ b/res/drawable/flip_00010.png diff --git a/res/drawable/flip_00011.png b/res/drawable/flip_00011.png Binary files differnew file mode 100644 index 000000000..27accf584 --- /dev/null +++ b/res/drawable/flip_00011.png diff --git a/res/drawable/flip_00012.png b/res/drawable/flip_00012.png Binary files differnew file mode 100644 index 000000000..48f3d37b4 --- /dev/null +++ b/res/drawable/flip_00012.png diff --git a/res/drawable/flip_00013.png b/res/drawable/flip_00013.png Binary files differnew file mode 100644 index 000000000..ed3273f80 --- /dev/null +++ b/res/drawable/flip_00013.png diff --git a/res/drawable/flip_00014.png b/res/drawable/flip_00014.png Binary files differnew file mode 100644 index 000000000..24cfa1787 --- /dev/null +++ b/res/drawable/flip_00014.png diff --git a/res/drawable/flip_00015.png b/res/drawable/flip_00015.png Binary files differnew file mode 100644 index 000000000..dc8483e48 --- /dev/null +++ b/res/drawable/flip_00015.png diff --git a/res/drawable/flip_00016.png b/res/drawable/flip_00016.png Binary files differnew file mode 100644 index 000000000..c445a5b87 --- /dev/null +++ b/res/drawable/flip_00016.png diff --git a/res/drawable/flip_00017.png b/res/drawable/flip_00017.png Binary files differnew file mode 100644 index 000000000..0d269886a --- /dev/null +++ b/res/drawable/flip_00017.png diff --git a/res/drawable/flip_00018.png b/res/drawable/flip_00018.png Binary files differnew file mode 100644 index 000000000..39762fa11 --- /dev/null +++ b/res/drawable/flip_00018.png diff --git a/res/drawable/flip_00019.png b/res/drawable/flip_00019.png Binary files differnew file mode 100644 index 000000000..02f160ab3 --- /dev/null +++ b/res/drawable/flip_00019.png diff --git a/res/drawable/flip_00020.png b/res/drawable/flip_00020.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00020.png diff --git a/res/drawable/flip_00021.png b/res/drawable/flip_00021.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00021.png diff --git a/res/drawable/flip_00022.png b/res/drawable/flip_00022.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00022.png diff --git a/res/drawable/flip_00023.png b/res/drawable/flip_00023.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00023.png diff --git a/res/drawable/flip_00024.png b/res/drawable/flip_00024.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00024.png diff --git a/res/drawable/flip_00025.png b/res/drawable/flip_00025.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00025.png diff --git a/res/drawable/flip_00026.png b/res/drawable/flip_00026.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00026.png diff --git a/res/drawable/flip_00027.png b/res/drawable/flip_00027.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00027.png diff --git a/res/drawable/flip_00028.png b/res/drawable/flip_00028.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00028.png diff --git a/res/drawable/flip_00029.png b/res/drawable/flip_00029.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00029.png diff --git a/res/drawable/flip_00030.png b/res/drawable/flip_00030.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00030.png diff --git a/res/drawable/flip_00031.png b/res/drawable/flip_00031.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00031.png diff --git a/res/drawable/flip_00032.png b/res/drawable/flip_00032.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00032.png diff --git a/res/drawable/flip_00033.png b/res/drawable/flip_00033.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00033.png diff --git a/res/drawable/flip_00034.png b/res/drawable/flip_00034.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00034.png diff --git a/res/drawable/flip_00035.png b/res/drawable/flip_00035.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00035.png diff --git a/res/drawable/flip_00036.png b/res/drawable/flip_00036.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00036.png diff --git a/res/drawable/flip_00037.png b/res/drawable/flip_00037.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00037.png diff --git a/res/drawable/flip_00038.png b/res/drawable/flip_00038.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00038.png diff --git a/res/drawable/flip_00039.png b/res/drawable/flip_00039.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00039.png diff --git a/res/drawable/flip_00040.png b/res/drawable/flip_00040.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00040.png diff --git a/res/drawable/flip_00041.png b/res/drawable/flip_00041.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00041.png diff --git a/res/drawable/flip_00042.png b/res/drawable/flip_00042.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00042.png diff --git a/res/drawable/flip_00043.png b/res/drawable/flip_00043.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00043.png diff --git a/res/drawable/flip_00044.png b/res/drawable/flip_00044.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00044.png diff --git a/res/drawable/flip_00045.png b/res/drawable/flip_00045.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00045.png diff --git a/res/drawable/flip_00046.png b/res/drawable/flip_00046.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00046.png diff --git a/res/drawable/flip_00047.png b/res/drawable/flip_00047.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00047.png diff --git a/res/drawable/flip_00048.png b/res/drawable/flip_00048.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00048.png diff --git a/res/drawable/flip_00049.png b/res/drawable/flip_00049.png Binary files differnew file mode 100644 index 000000000..cbe7f859b --- /dev/null +++ b/res/drawable/flip_00049.png diff --git a/res/drawable/handle.png b/res/drawable/handle.png Binary files differnew file mode 100644 index 000000000..6e943f0da --- /dev/null +++ b/res/drawable/handle.png diff --git a/res/drawable/handle_left.png b/res/drawable/handle_left.png Binary files differnew file mode 100644 index 000000000..b78889ec0 --- /dev/null +++ b/res/drawable/handle_left.png diff --git a/res/drawable/handle_reversed.png b/res/drawable/handle_reversed.png Binary files differnew file mode 100644 index 000000000..6e943f0da --- /dev/null +++ b/res/drawable/handle_reversed.png diff --git a/res/drawable/launcheranimatedarrow_00000.png b/res/drawable/launcheranimatedarrow_00000.png Binary files differnew file mode 100644 index 000000000..2ed7fe9a7 --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00000.png diff --git a/res/drawable/launcheranimatedarrow_00001.png b/res/drawable/launcheranimatedarrow_00001.png Binary files differnew file mode 100644 index 000000000..f3707e07c --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00001.png diff --git a/res/drawable/launcheranimatedarrow_00002.png b/res/drawable/launcheranimatedarrow_00002.png Binary files differnew file mode 100644 index 000000000..3549389d0 --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00002.png diff --git a/res/drawable/launcheranimatedarrow_00003.png b/res/drawable/launcheranimatedarrow_00003.png Binary files differnew file mode 100644 index 000000000..891e86c42 --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00003.png diff --git a/res/drawable/launcheranimatedarrow_00004.png b/res/drawable/launcheranimatedarrow_00004.png Binary files differnew file mode 100644 index 000000000..7cfb1ef8c --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00004.png diff --git a/res/drawable/launcheranimatedarrow_00005.png b/res/drawable/launcheranimatedarrow_00005.png Binary files differnew file mode 100644 index 000000000..121f4d516 --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00005.png diff --git a/res/drawable/launcheranimatedarrow_00006.png b/res/drawable/launcheranimatedarrow_00006.png Binary files differnew file mode 100644 index 000000000..3a38e71f7 --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00006.png diff --git a/res/drawable/launcheranimatedarrow_00007.png b/res/drawable/launcheranimatedarrow_00007.png Binary files differnew file mode 100644 index 000000000..e81a719fd --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00007.png diff --git a/res/drawable/launcheranimatedarrow_00008.png b/res/drawable/launcheranimatedarrow_00008.png Binary files differnew file mode 100644 index 000000000..bd6f40981 --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00008.png diff --git a/res/drawable/launcheranimatedarrow_00009.png b/res/drawable/launcheranimatedarrow_00009.png Binary files differnew file mode 100644 index 000000000..c7cb60daf --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00009.png diff --git a/res/drawable/launcheranimatedarrow_00010.png b/res/drawable/launcheranimatedarrow_00010.png Binary files differnew file mode 100644 index 000000000..1bf30dcc3 --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00010.png diff --git a/res/drawable/launcheranimatedarrow_00011.png b/res/drawable/launcheranimatedarrow_00011.png Binary files differnew file mode 100644 index 000000000..3cb598806 --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00011.png diff --git a/res/drawable/launcheranimatedarrow_00012.png b/res/drawable/launcheranimatedarrow_00012.png Binary files differnew file mode 100644 index 000000000..58070de06 --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00012.png diff --git a/res/drawable/launcheranimatedarrow_00013.png b/res/drawable/launcheranimatedarrow_00013.png Binary files differnew file mode 100644 index 000000000..810d0a229 --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00013.png diff --git a/res/drawable/launcheranimatedarrow_00014.png b/res/drawable/launcheranimatedarrow_00014.png Binary files differnew file mode 100644 index 000000000..3f9e51861 --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00014.png diff --git a/res/drawable/launcheranimatedarrow_00015.png b/res/drawable/launcheranimatedarrow_00015.png Binary files differnew file mode 100644 index 000000000..348bfbbc6 --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00015.png diff --git a/res/drawable/launcheranimatedarrow_00016.png b/res/drawable/launcheranimatedarrow_00016.png Binary files differnew file mode 100644 index 000000000..5b0b28649 --- /dev/null +++ b/res/drawable/launcheranimatedarrow_00016.png diff --git a/res/drawable/listitem_bg.xml b/res/drawable/listitem_bg.xml new file mode 100644 index 000000000..b81e995f8 --- /dev/null +++ b/res/drawable/listitem_bg.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android" > + <item android:state_enabled="true" + android:state_pressed="true" android:drawable="@android:color/white" /> + <item android:drawable="@color/settings_bg_color" /> +</selector>
\ No newline at end of file diff --git a/res/drawable/listitem_selector.xml b/res/drawable/listitem_selector.xml new file mode 100644 index 000000000..b81e995f8 --- /dev/null +++ b/res/drawable/listitem_selector.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android" > + <item android:state_enabled="true" + android:state_pressed="true" android:drawable="@android:color/white" /> + <item android:drawable="@color/settings_bg_color" /> +</selector>
\ No newline at end of file diff --git a/res/drawable/lock.png b/res/drawable/lock.png Binary files differnew file mode 100644 index 000000000..132ad858a --- /dev/null +++ b/res/drawable/lock.png diff --git a/res/drawable/none_00000.png b/res/drawable/none_00000.png Binary files differnew file mode 100644 index 000000000..280dbde5c --- /dev/null +++ b/res/drawable/none_00000.png diff --git a/res/drawable/none_00001.png b/res/drawable/none_00001.png Binary files differnew file mode 100644 index 000000000..9318c29d5 --- /dev/null +++ b/res/drawable/none_00001.png diff --git a/res/drawable/none_00002.png b/res/drawable/none_00002.png Binary files differnew file mode 100644 index 000000000..41288e9bf --- /dev/null +++ b/res/drawable/none_00002.png diff --git a/res/drawable/none_00003.png b/res/drawable/none_00003.png Binary files differnew file mode 100644 index 000000000..831375e36 --- /dev/null +++ b/res/drawable/none_00003.png diff --git a/res/drawable/none_00004.png b/res/drawable/none_00004.png Binary files differnew file mode 100644 index 000000000..0ab2c45ac --- /dev/null +++ b/res/drawable/none_00004.png diff --git a/res/drawable/none_00005.png b/res/drawable/none_00005.png Binary files differnew file mode 100644 index 000000000..3a3904cad --- /dev/null +++ b/res/drawable/none_00005.png diff --git a/res/drawable/none_00006.png b/res/drawable/none_00006.png Binary files differnew file mode 100644 index 000000000..012ed8a6a --- /dev/null +++ b/res/drawable/none_00006.png diff --git a/res/drawable/none_00007.png b/res/drawable/none_00007.png Binary files differnew file mode 100644 index 000000000..f72aa33a4 --- /dev/null +++ b/res/drawable/none_00007.png diff --git a/res/drawable/none_00008.png b/res/drawable/none_00008.png Binary files differnew file mode 100644 index 000000000..520df34dc --- /dev/null +++ b/res/drawable/none_00008.png diff --git a/res/drawable/none_00009.png b/res/drawable/none_00009.png Binary files differnew file mode 100644 index 000000000..d8ce1ca76 --- /dev/null +++ b/res/drawable/none_00009.png diff --git a/res/drawable/none_00010.png b/res/drawable/none_00010.png Binary files differnew file mode 100644 index 000000000..50ea44727 --- /dev/null +++ b/res/drawable/none_00010.png diff --git a/res/drawable/none_00011.png b/res/drawable/none_00011.png Binary files differnew file mode 100644 index 000000000..bb664bb06 --- /dev/null +++ b/res/drawable/none_00011.png diff --git a/res/drawable/none_00012.png b/res/drawable/none_00012.png Binary files differnew file mode 100644 index 000000000..ba415ccdb --- /dev/null +++ b/res/drawable/none_00012.png diff --git a/res/drawable/none_00013.png b/res/drawable/none_00013.png Binary files differnew file mode 100644 index 000000000..5727430ea --- /dev/null +++ b/res/drawable/none_00013.png diff --git a/res/drawable/none_00014.png b/res/drawable/none_00014.png Binary files differnew file mode 100644 index 000000000..8791adc7e --- /dev/null +++ b/res/drawable/none_00014.png diff --git a/res/drawable/none_00015.png b/res/drawable/none_00015.png Binary files differnew file mode 100644 index 000000000..07ae898fa --- /dev/null +++ b/res/drawable/none_00015.png diff --git a/res/drawable/none_00016.png b/res/drawable/none_00016.png Binary files differnew file mode 100644 index 000000000..61954a175 --- /dev/null +++ b/res/drawable/none_00016.png diff --git a/res/drawable/none_00017.png b/res/drawable/none_00017.png Binary files differnew file mode 100644 index 000000000..38d3b8c3a --- /dev/null +++ b/res/drawable/none_00017.png diff --git a/res/drawable/none_00018.png b/res/drawable/none_00018.png Binary files differnew file mode 100644 index 000000000..59af03174 --- /dev/null +++ b/res/drawable/none_00018.png diff --git a/res/drawable/none_00019.png b/res/drawable/none_00019.png Binary files differnew file mode 100644 index 000000000..6dbff8983 --- /dev/null +++ b/res/drawable/none_00019.png diff --git a/res/drawable/none_00020.png b/res/drawable/none_00020.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00020.png diff --git a/res/drawable/none_00021.png b/res/drawable/none_00021.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00021.png diff --git a/res/drawable/none_00022.png b/res/drawable/none_00022.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00022.png diff --git a/res/drawable/none_00023.png b/res/drawable/none_00023.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00023.png diff --git a/res/drawable/none_00024.png b/res/drawable/none_00024.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00024.png diff --git a/res/drawable/none_00025.png b/res/drawable/none_00025.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00025.png diff --git a/res/drawable/none_00026.png b/res/drawable/none_00026.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00026.png diff --git a/res/drawable/none_00027.png b/res/drawable/none_00027.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00027.png diff --git a/res/drawable/none_00028.png b/res/drawable/none_00028.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00028.png diff --git a/res/drawable/none_00029.png b/res/drawable/none_00029.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00029.png diff --git a/res/drawable/none_00030.png b/res/drawable/none_00030.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00030.png diff --git a/res/drawable/none_00031.png b/res/drawable/none_00031.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00031.png diff --git a/res/drawable/none_00032.png b/res/drawable/none_00032.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00032.png diff --git a/res/drawable/none_00033.png b/res/drawable/none_00033.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00033.png diff --git a/res/drawable/none_00034.png b/res/drawable/none_00034.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00034.png diff --git a/res/drawable/none_00035.png b/res/drawable/none_00035.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00035.png diff --git a/res/drawable/none_00036.png b/res/drawable/none_00036.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00036.png diff --git a/res/drawable/none_00037.png b/res/drawable/none_00037.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00037.png diff --git a/res/drawable/none_00038.png b/res/drawable/none_00038.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00038.png diff --git a/res/drawable/none_00039.png b/res/drawable/none_00039.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00039.png diff --git a/res/drawable/none_00040.png b/res/drawable/none_00040.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00040.png diff --git a/res/drawable/none_00041.png b/res/drawable/none_00041.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00041.png diff --git a/res/drawable/none_00042.png b/res/drawable/none_00042.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00042.png diff --git a/res/drawable/none_00043.png b/res/drawable/none_00043.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00043.png diff --git a/res/drawable/none_00044.png b/res/drawable/none_00044.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00044.png diff --git a/res/drawable/none_00045.png b/res/drawable/none_00045.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00045.png diff --git a/res/drawable/none_00046.png b/res/drawable/none_00046.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00046.png diff --git a/res/drawable/none_00047.png b/res/drawable/none_00047.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00047.png diff --git a/res/drawable/none_00048.png b/res/drawable/none_00048.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00048.png diff --git a/res/drawable/none_00049.png b/res/drawable/none_00049.png Binary files differnew file mode 100644 index 000000000..cbcff0391 --- /dev/null +++ b/res/drawable/none_00049.png diff --git a/res/drawable/overview_00000.png b/res/drawable/overview_00000.png Binary files differnew file mode 100644 index 000000000..e000c6108 --- /dev/null +++ b/res/drawable/overview_00000.png diff --git a/res/drawable/overview_00001.png b/res/drawable/overview_00001.png Binary files differnew file mode 100644 index 000000000..ee52cae5e --- /dev/null +++ b/res/drawable/overview_00001.png diff --git a/res/drawable/overview_00002.png b/res/drawable/overview_00002.png Binary files differnew file mode 100644 index 000000000..401629303 --- /dev/null +++ b/res/drawable/overview_00002.png diff --git a/res/drawable/overview_00003.png b/res/drawable/overview_00003.png Binary files differnew file mode 100644 index 000000000..9fce3248f --- /dev/null +++ b/res/drawable/overview_00003.png diff --git a/res/drawable/overview_00004.png b/res/drawable/overview_00004.png Binary files differnew file mode 100644 index 000000000..6089f3611 --- /dev/null +++ b/res/drawable/overview_00004.png diff --git a/res/drawable/overview_00005.png b/res/drawable/overview_00005.png Binary files differnew file mode 100644 index 000000000..0195e61d5 --- /dev/null +++ b/res/drawable/overview_00005.png diff --git a/res/drawable/overview_00006.png b/res/drawable/overview_00006.png Binary files differnew file mode 100644 index 000000000..c91cc1ede --- /dev/null +++ b/res/drawable/overview_00006.png diff --git a/res/drawable/overview_00007.png b/res/drawable/overview_00007.png Binary files differnew file mode 100644 index 000000000..ca57ff22c --- /dev/null +++ b/res/drawable/overview_00007.png diff --git a/res/drawable/overview_00008.png b/res/drawable/overview_00008.png Binary files differnew file mode 100644 index 000000000..c42692f20 --- /dev/null +++ b/res/drawable/overview_00008.png diff --git a/res/drawable/overview_00009.png b/res/drawable/overview_00009.png Binary files differnew file mode 100644 index 000000000..e38b36827 --- /dev/null +++ b/res/drawable/overview_00009.png diff --git a/res/drawable/overview_00010.png b/res/drawable/overview_00010.png Binary files differnew file mode 100644 index 000000000..4416302f8 --- /dev/null +++ b/res/drawable/overview_00010.png diff --git a/res/drawable/overview_00011.png b/res/drawable/overview_00011.png Binary files differnew file mode 100644 index 000000000..013cdec94 --- /dev/null +++ b/res/drawable/overview_00011.png diff --git a/res/drawable/overview_00012.png b/res/drawable/overview_00012.png Binary files differnew file mode 100644 index 000000000..fe08ca75d --- /dev/null +++ b/res/drawable/overview_00012.png diff --git a/res/drawable/overview_00013.png b/res/drawable/overview_00013.png Binary files differnew file mode 100644 index 000000000..4907c3715 --- /dev/null +++ b/res/drawable/overview_00013.png diff --git a/res/drawable/overview_00014.png b/res/drawable/overview_00014.png Binary files differnew file mode 100644 index 000000000..26acf47bc --- /dev/null +++ b/res/drawable/overview_00014.png diff --git a/res/drawable/overview_00015.png b/res/drawable/overview_00015.png Binary files differnew file mode 100644 index 000000000..258059ae2 --- /dev/null +++ b/res/drawable/overview_00015.png diff --git a/res/drawable/overview_00016.png b/res/drawable/overview_00016.png Binary files differnew file mode 100644 index 000000000..8c164c139 --- /dev/null +++ b/res/drawable/overview_00016.png diff --git a/res/drawable/overview_00017.png b/res/drawable/overview_00017.png Binary files differnew file mode 100644 index 000000000..dd1df3330 --- /dev/null +++ b/res/drawable/overview_00017.png diff --git a/res/drawable/overview_00018.png b/res/drawable/overview_00018.png Binary files differnew file mode 100644 index 000000000..b3e54a3e6 --- /dev/null +++ b/res/drawable/overview_00018.png diff --git a/res/drawable/overview_00019.png b/res/drawable/overview_00019.png Binary files differnew file mode 100644 index 000000000..5a0b1cbc1 --- /dev/null +++ b/res/drawable/overview_00019.png diff --git a/res/drawable/overview_00020.png b/res/drawable/overview_00020.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00020.png diff --git a/res/drawable/overview_00021.png b/res/drawable/overview_00021.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00021.png diff --git a/res/drawable/overview_00022.png b/res/drawable/overview_00022.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00022.png diff --git a/res/drawable/overview_00023.png b/res/drawable/overview_00023.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00023.png diff --git a/res/drawable/overview_00024.png b/res/drawable/overview_00024.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00024.png diff --git a/res/drawable/overview_00025.png b/res/drawable/overview_00025.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00025.png diff --git a/res/drawable/overview_00026.png b/res/drawable/overview_00026.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00026.png diff --git a/res/drawable/overview_00027.png b/res/drawable/overview_00027.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00027.png diff --git a/res/drawable/overview_00028.png b/res/drawable/overview_00028.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00028.png diff --git a/res/drawable/overview_00029.png b/res/drawable/overview_00029.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00029.png diff --git a/res/drawable/overview_00030.png b/res/drawable/overview_00030.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00030.png diff --git a/res/drawable/overview_00031.png b/res/drawable/overview_00031.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00031.png diff --git a/res/drawable/overview_00032.png b/res/drawable/overview_00032.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00032.png diff --git a/res/drawable/overview_00033.png b/res/drawable/overview_00033.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00033.png diff --git a/res/drawable/overview_00034.png b/res/drawable/overview_00034.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00034.png diff --git a/res/drawable/overview_00035.png b/res/drawable/overview_00035.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00035.png diff --git a/res/drawable/overview_00036.png b/res/drawable/overview_00036.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00036.png diff --git a/res/drawable/overview_00037.png b/res/drawable/overview_00037.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00037.png diff --git a/res/drawable/overview_00038.png b/res/drawable/overview_00038.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00038.png diff --git a/res/drawable/overview_00039.png b/res/drawable/overview_00039.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00039.png diff --git a/res/drawable/overview_00040.png b/res/drawable/overview_00040.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00040.png diff --git a/res/drawable/overview_00041.png b/res/drawable/overview_00041.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00041.png diff --git a/res/drawable/overview_00042.png b/res/drawable/overview_00042.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00042.png diff --git a/res/drawable/overview_00043.png b/res/drawable/overview_00043.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00043.png diff --git a/res/drawable/overview_00044.png b/res/drawable/overview_00044.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00044.png diff --git a/res/drawable/overview_00045.png b/res/drawable/overview_00045.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00045.png diff --git a/res/drawable/overview_00046.png b/res/drawable/overview_00046.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00046.png diff --git a/res/drawable/overview_00047.png b/res/drawable/overview_00047.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00047.png diff --git a/res/drawable/overview_00048.png b/res/drawable/overview_00048.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00048.png diff --git a/res/drawable/overview_00049.png b/res/drawable/overview_00049.png Binary files differnew file mode 100644 index 000000000..a54f07a80 --- /dev/null +++ b/res/drawable/overview_00049.png diff --git a/res/drawable/rotatedown_00000.png b/res/drawable/rotatedown_00000.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00000.png diff --git a/res/drawable/rotatedown_00001.png b/res/drawable/rotatedown_00001.png Binary files differnew file mode 100644 index 000000000..98f1b6761 --- /dev/null +++ b/res/drawable/rotatedown_00001.png diff --git a/res/drawable/rotatedown_00002.png b/res/drawable/rotatedown_00002.png Binary files differnew file mode 100644 index 000000000..927f5d1a5 --- /dev/null +++ b/res/drawable/rotatedown_00002.png diff --git a/res/drawable/rotatedown_00003.png b/res/drawable/rotatedown_00003.png Binary files differnew file mode 100644 index 000000000..fcb6f47e3 --- /dev/null +++ b/res/drawable/rotatedown_00003.png diff --git a/res/drawable/rotatedown_00004.png b/res/drawable/rotatedown_00004.png Binary files differnew file mode 100644 index 000000000..16797d611 --- /dev/null +++ b/res/drawable/rotatedown_00004.png diff --git a/res/drawable/rotatedown_00005.png b/res/drawable/rotatedown_00005.png Binary files differnew file mode 100644 index 000000000..4c43eb8b6 --- /dev/null +++ b/res/drawable/rotatedown_00005.png diff --git a/res/drawable/rotatedown_00006.png b/res/drawable/rotatedown_00006.png Binary files differnew file mode 100644 index 000000000..2f03ec42b --- /dev/null +++ b/res/drawable/rotatedown_00006.png diff --git a/res/drawable/rotatedown_00007.png b/res/drawable/rotatedown_00007.png Binary files differnew file mode 100644 index 000000000..6a6d080b8 --- /dev/null +++ b/res/drawable/rotatedown_00007.png diff --git a/res/drawable/rotatedown_00008.png b/res/drawable/rotatedown_00008.png Binary files differnew file mode 100644 index 000000000..bf9f3103f --- /dev/null +++ b/res/drawable/rotatedown_00008.png diff --git a/res/drawable/rotatedown_00009.png b/res/drawable/rotatedown_00009.png Binary files differnew file mode 100644 index 000000000..f911bf4bc --- /dev/null +++ b/res/drawable/rotatedown_00009.png diff --git a/res/drawable/rotatedown_00010.png b/res/drawable/rotatedown_00010.png Binary files differnew file mode 100644 index 000000000..f84dd2051 --- /dev/null +++ b/res/drawable/rotatedown_00010.png diff --git a/res/drawable/rotatedown_00011.png b/res/drawable/rotatedown_00011.png Binary files differnew file mode 100644 index 000000000..7106a7db8 --- /dev/null +++ b/res/drawable/rotatedown_00011.png diff --git a/res/drawable/rotatedown_00012.png b/res/drawable/rotatedown_00012.png Binary files differnew file mode 100644 index 000000000..13cd0b2c6 --- /dev/null +++ b/res/drawable/rotatedown_00012.png diff --git a/res/drawable/rotatedown_00013.png b/res/drawable/rotatedown_00013.png Binary files differnew file mode 100644 index 000000000..4589bf263 --- /dev/null +++ b/res/drawable/rotatedown_00013.png diff --git a/res/drawable/rotatedown_00014.png b/res/drawable/rotatedown_00014.png Binary files differnew file mode 100644 index 000000000..6b59e5d07 --- /dev/null +++ b/res/drawable/rotatedown_00014.png diff --git a/res/drawable/rotatedown_00015.png b/res/drawable/rotatedown_00015.png Binary files differnew file mode 100644 index 000000000..890746b83 --- /dev/null +++ b/res/drawable/rotatedown_00015.png diff --git a/res/drawable/rotatedown_00016.png b/res/drawable/rotatedown_00016.png Binary files differnew file mode 100644 index 000000000..56d9e2343 --- /dev/null +++ b/res/drawable/rotatedown_00016.png diff --git a/res/drawable/rotatedown_00017.png b/res/drawable/rotatedown_00017.png Binary files differnew file mode 100644 index 000000000..d2d80406c --- /dev/null +++ b/res/drawable/rotatedown_00017.png diff --git a/res/drawable/rotatedown_00018.png b/res/drawable/rotatedown_00018.png Binary files differnew file mode 100644 index 000000000..43afa3ed8 --- /dev/null +++ b/res/drawable/rotatedown_00018.png diff --git a/res/drawable/rotatedown_00019.png b/res/drawable/rotatedown_00019.png Binary files differnew file mode 100644 index 000000000..4c6ec9095 --- /dev/null +++ b/res/drawable/rotatedown_00019.png diff --git a/res/drawable/rotatedown_00020.png b/res/drawable/rotatedown_00020.png Binary files differnew file mode 100644 index 000000000..2cfdd90ee --- /dev/null +++ b/res/drawable/rotatedown_00020.png diff --git a/res/drawable/rotatedown_00021.png b/res/drawable/rotatedown_00021.png Binary files differnew file mode 100644 index 000000000..a54e05333 --- /dev/null +++ b/res/drawable/rotatedown_00021.png diff --git a/res/drawable/rotatedown_00022.png b/res/drawable/rotatedown_00022.png Binary files differnew file mode 100644 index 000000000..7f9c0214c --- /dev/null +++ b/res/drawable/rotatedown_00022.png diff --git a/res/drawable/rotatedown_00023.png b/res/drawable/rotatedown_00023.png Binary files differnew file mode 100644 index 000000000..86c20dfbd --- /dev/null +++ b/res/drawable/rotatedown_00023.png diff --git a/res/drawable/rotatedown_00024.png b/res/drawable/rotatedown_00024.png Binary files differnew file mode 100644 index 000000000..cacf6274b --- /dev/null +++ b/res/drawable/rotatedown_00024.png diff --git a/res/drawable/rotatedown_00025.png b/res/drawable/rotatedown_00025.png Binary files differnew file mode 100644 index 000000000..f80765d5b --- /dev/null +++ b/res/drawable/rotatedown_00025.png diff --git a/res/drawable/rotatedown_00026.png b/res/drawable/rotatedown_00026.png Binary files differnew file mode 100644 index 000000000..cb0714379 --- /dev/null +++ b/res/drawable/rotatedown_00026.png diff --git a/res/drawable/rotatedown_00027.png b/res/drawable/rotatedown_00027.png Binary files differnew file mode 100644 index 000000000..4f5639729 --- /dev/null +++ b/res/drawable/rotatedown_00027.png diff --git a/res/drawable/rotatedown_00028.png b/res/drawable/rotatedown_00028.png Binary files differnew file mode 100644 index 000000000..b1b114e5c --- /dev/null +++ b/res/drawable/rotatedown_00028.png diff --git a/res/drawable/rotatedown_00029.png b/res/drawable/rotatedown_00029.png Binary files differnew file mode 100644 index 000000000..b20104e93 --- /dev/null +++ b/res/drawable/rotatedown_00029.png diff --git a/res/drawable/rotatedown_00030.png b/res/drawable/rotatedown_00030.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00030.png diff --git a/res/drawable/rotatedown_00031.png b/res/drawable/rotatedown_00031.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00031.png diff --git a/res/drawable/rotatedown_00032.png b/res/drawable/rotatedown_00032.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00032.png diff --git a/res/drawable/rotatedown_00033.png b/res/drawable/rotatedown_00033.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00033.png diff --git a/res/drawable/rotatedown_00034.png b/res/drawable/rotatedown_00034.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00034.png diff --git a/res/drawable/rotatedown_00035.png b/res/drawable/rotatedown_00035.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00035.png diff --git a/res/drawable/rotatedown_00036.png b/res/drawable/rotatedown_00036.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00036.png diff --git a/res/drawable/rotatedown_00037.png b/res/drawable/rotatedown_00037.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00037.png diff --git a/res/drawable/rotatedown_00038.png b/res/drawable/rotatedown_00038.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00038.png diff --git a/res/drawable/rotatedown_00039.png b/res/drawable/rotatedown_00039.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00039.png diff --git a/res/drawable/rotatedown_00040.png b/res/drawable/rotatedown_00040.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00040.png diff --git a/res/drawable/rotatedown_00041.png b/res/drawable/rotatedown_00041.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00041.png diff --git a/res/drawable/rotatedown_00042.png b/res/drawable/rotatedown_00042.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00042.png diff --git a/res/drawable/rotatedown_00043.png b/res/drawable/rotatedown_00043.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00043.png diff --git a/res/drawable/rotatedown_00044.png b/res/drawable/rotatedown_00044.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00044.png diff --git a/res/drawable/rotatedown_00045.png b/res/drawable/rotatedown_00045.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00045.png diff --git a/res/drawable/rotatedown_00046.png b/res/drawable/rotatedown_00046.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00046.png diff --git a/res/drawable/rotatedown_00047.png b/res/drawable/rotatedown_00047.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00047.png diff --git a/res/drawable/rotatedown_00048.png b/res/drawable/rotatedown_00048.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00048.png diff --git a/res/drawable/rotatedown_00049.png b/res/drawable/rotatedown_00049.png Binary files differnew file mode 100644 index 000000000..07ccb92e0 --- /dev/null +++ b/res/drawable/rotatedown_00049.png diff --git a/res/drawable/rotateup_00000.png b/res/drawable/rotateup_00000.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00000.png diff --git a/res/drawable/rotateup_00001.png b/res/drawable/rotateup_00001.png Binary files differnew file mode 100644 index 000000000..d43792b1d --- /dev/null +++ b/res/drawable/rotateup_00001.png diff --git a/res/drawable/rotateup_00002.png b/res/drawable/rotateup_00002.png Binary files differnew file mode 100644 index 000000000..f77000771 --- /dev/null +++ b/res/drawable/rotateup_00002.png diff --git a/res/drawable/rotateup_00003.png b/res/drawable/rotateup_00003.png Binary files differnew file mode 100644 index 000000000..f5c2493b6 --- /dev/null +++ b/res/drawable/rotateup_00003.png diff --git a/res/drawable/rotateup_00004.png b/res/drawable/rotateup_00004.png Binary files differnew file mode 100644 index 000000000..b84318252 --- /dev/null +++ b/res/drawable/rotateup_00004.png diff --git a/res/drawable/rotateup_00005.png b/res/drawable/rotateup_00005.png Binary files differnew file mode 100644 index 000000000..342b3f9ae --- /dev/null +++ b/res/drawable/rotateup_00005.png diff --git a/res/drawable/rotateup_00006.png b/res/drawable/rotateup_00006.png Binary files differnew file mode 100644 index 000000000..cbf69d75e --- /dev/null +++ b/res/drawable/rotateup_00006.png diff --git a/res/drawable/rotateup_00007.png b/res/drawable/rotateup_00007.png Binary files differnew file mode 100644 index 000000000..8826db503 --- /dev/null +++ b/res/drawable/rotateup_00007.png diff --git a/res/drawable/rotateup_00008.png b/res/drawable/rotateup_00008.png Binary files differnew file mode 100644 index 000000000..6c363edaa --- /dev/null +++ b/res/drawable/rotateup_00008.png diff --git a/res/drawable/rotateup_00009.png b/res/drawable/rotateup_00009.png Binary files differnew file mode 100644 index 000000000..48e289034 --- /dev/null +++ b/res/drawable/rotateup_00009.png diff --git a/res/drawable/rotateup_00010.png b/res/drawable/rotateup_00010.png Binary files differnew file mode 100644 index 000000000..5749ccd29 --- /dev/null +++ b/res/drawable/rotateup_00010.png diff --git a/res/drawable/rotateup_00011.png b/res/drawable/rotateup_00011.png Binary files differnew file mode 100644 index 000000000..2a0463c92 --- /dev/null +++ b/res/drawable/rotateup_00011.png diff --git a/res/drawable/rotateup_00012.png b/res/drawable/rotateup_00012.png Binary files differnew file mode 100644 index 000000000..9bcfa09d4 --- /dev/null +++ b/res/drawable/rotateup_00012.png diff --git a/res/drawable/rotateup_00013.png b/res/drawable/rotateup_00013.png Binary files differnew file mode 100644 index 000000000..bc4ebb9db --- /dev/null +++ b/res/drawable/rotateup_00013.png diff --git a/res/drawable/rotateup_00014.png b/res/drawable/rotateup_00014.png Binary files differnew file mode 100644 index 000000000..181456805 --- /dev/null +++ b/res/drawable/rotateup_00014.png diff --git a/res/drawable/rotateup_00015.png b/res/drawable/rotateup_00015.png Binary files differnew file mode 100644 index 000000000..48c34408b --- /dev/null +++ b/res/drawable/rotateup_00015.png diff --git a/res/drawable/rotateup_00016.png b/res/drawable/rotateup_00016.png Binary files differnew file mode 100644 index 000000000..772a31d6a --- /dev/null +++ b/res/drawable/rotateup_00016.png diff --git a/res/drawable/rotateup_00017.png b/res/drawable/rotateup_00017.png Binary files differnew file mode 100644 index 000000000..ddad38c9e --- /dev/null +++ b/res/drawable/rotateup_00017.png diff --git a/res/drawable/rotateup_00018.png b/res/drawable/rotateup_00018.png Binary files differnew file mode 100644 index 000000000..a401751be --- /dev/null +++ b/res/drawable/rotateup_00018.png diff --git a/res/drawable/rotateup_00019.png b/res/drawable/rotateup_00019.png Binary files differnew file mode 100644 index 000000000..2091c5e6e --- /dev/null +++ b/res/drawable/rotateup_00019.png diff --git a/res/drawable/rotateup_00020.png b/res/drawable/rotateup_00020.png Binary files differnew file mode 100644 index 000000000..61ca3b246 --- /dev/null +++ b/res/drawable/rotateup_00020.png diff --git a/res/drawable/rotateup_00021.png b/res/drawable/rotateup_00021.png Binary files differnew file mode 100644 index 000000000..27c4258f3 --- /dev/null +++ b/res/drawable/rotateup_00021.png diff --git a/res/drawable/rotateup_00022.png b/res/drawable/rotateup_00022.png Binary files differnew file mode 100644 index 000000000..6f158ba2f --- /dev/null +++ b/res/drawable/rotateup_00022.png diff --git a/res/drawable/rotateup_00023.png b/res/drawable/rotateup_00023.png Binary files differnew file mode 100644 index 000000000..6a0a4dae0 --- /dev/null +++ b/res/drawable/rotateup_00023.png diff --git a/res/drawable/rotateup_00024.png b/res/drawable/rotateup_00024.png Binary files differnew file mode 100644 index 000000000..cdfde2a76 --- /dev/null +++ b/res/drawable/rotateup_00024.png diff --git a/res/drawable/rotateup_00025.png b/res/drawable/rotateup_00025.png Binary files differnew file mode 100644 index 000000000..2ac9ffa0e --- /dev/null +++ b/res/drawable/rotateup_00025.png diff --git a/res/drawable/rotateup_00026.png b/res/drawable/rotateup_00026.png Binary files differnew file mode 100644 index 000000000..2e41a9719 --- /dev/null +++ b/res/drawable/rotateup_00026.png diff --git a/res/drawable/rotateup_00027.png b/res/drawable/rotateup_00027.png Binary files differnew file mode 100644 index 000000000..fc68c10aa --- /dev/null +++ b/res/drawable/rotateup_00027.png diff --git a/res/drawable/rotateup_00028.png b/res/drawable/rotateup_00028.png Binary files differnew file mode 100644 index 000000000..cc5fb9c28 --- /dev/null +++ b/res/drawable/rotateup_00028.png diff --git a/res/drawable/rotateup_00029.png b/res/drawable/rotateup_00029.png Binary files differnew file mode 100644 index 000000000..43ef7a180 --- /dev/null +++ b/res/drawable/rotateup_00029.png diff --git a/res/drawable/rotateup_00030.png b/res/drawable/rotateup_00030.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00030.png diff --git a/res/drawable/rotateup_00031.png b/res/drawable/rotateup_00031.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00031.png diff --git a/res/drawable/rotateup_00032.png b/res/drawable/rotateup_00032.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00032.png diff --git a/res/drawable/rotateup_00033.png b/res/drawable/rotateup_00033.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00033.png diff --git a/res/drawable/rotateup_00034.png b/res/drawable/rotateup_00034.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00034.png diff --git a/res/drawable/rotateup_00035.png b/res/drawable/rotateup_00035.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00035.png diff --git a/res/drawable/rotateup_00036.png b/res/drawable/rotateup_00036.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00036.png diff --git a/res/drawable/rotateup_00037.png b/res/drawable/rotateup_00037.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00037.png diff --git a/res/drawable/rotateup_00038.png b/res/drawable/rotateup_00038.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00038.png diff --git a/res/drawable/rotateup_00039.png b/res/drawable/rotateup_00039.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00039.png diff --git a/res/drawable/rotateup_00040.png b/res/drawable/rotateup_00040.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00040.png diff --git a/res/drawable/rotateup_00041.png b/res/drawable/rotateup_00041.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00041.png diff --git a/res/drawable/rotateup_00042.png b/res/drawable/rotateup_00042.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00042.png diff --git a/res/drawable/rotateup_00043.png b/res/drawable/rotateup_00043.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00043.png diff --git a/res/drawable/rotateup_00044.png b/res/drawable/rotateup_00044.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00044.png diff --git a/res/drawable/rotateup_00045.png b/res/drawable/rotateup_00045.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00045.png diff --git a/res/drawable/rotateup_00046.png b/res/drawable/rotateup_00046.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00046.png diff --git a/res/drawable/rotateup_00047.png b/res/drawable/rotateup_00047.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00047.png diff --git a/res/drawable/rotateup_00048.png b/res/drawable/rotateup_00048.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00048.png diff --git a/res/drawable/rotateup_00049.png b/res/drawable/rotateup_00049.png Binary files differnew file mode 100644 index 000000000..75e575f94 --- /dev/null +++ b/res/drawable/rotateup_00049.png diff --git a/res/drawable/stack_00000.png b/res/drawable/stack_00000.png Binary files differnew file mode 100644 index 000000000..b7e7f0bd2 --- /dev/null +++ b/res/drawable/stack_00000.png diff --git a/res/drawable/stack_00001.png b/res/drawable/stack_00001.png Binary files differnew file mode 100644 index 000000000..8b7f3a564 --- /dev/null +++ b/res/drawable/stack_00001.png diff --git a/res/drawable/stack_00002.png b/res/drawable/stack_00002.png Binary files differnew file mode 100644 index 000000000..c9e3aed80 --- /dev/null +++ b/res/drawable/stack_00002.png diff --git a/res/drawable/stack_00003.png b/res/drawable/stack_00003.png Binary files differnew file mode 100644 index 000000000..565f69b99 --- /dev/null +++ b/res/drawable/stack_00003.png diff --git a/res/drawable/stack_00004.png b/res/drawable/stack_00004.png Binary files differnew file mode 100644 index 000000000..2726dacc4 --- /dev/null +++ b/res/drawable/stack_00004.png diff --git a/res/drawable/stack_00005.png b/res/drawable/stack_00005.png Binary files differnew file mode 100644 index 000000000..266f1dcc0 --- /dev/null +++ b/res/drawable/stack_00005.png diff --git a/res/drawable/stack_00006.png b/res/drawable/stack_00006.png Binary files differnew file mode 100644 index 000000000..f26c0d042 --- /dev/null +++ b/res/drawable/stack_00006.png diff --git a/res/drawable/stack_00007.png b/res/drawable/stack_00007.png Binary files differnew file mode 100644 index 000000000..f6bd36217 --- /dev/null +++ b/res/drawable/stack_00007.png diff --git a/res/drawable/stack_00008.png b/res/drawable/stack_00008.png Binary files differnew file mode 100644 index 000000000..d9c20d803 --- /dev/null +++ b/res/drawable/stack_00008.png diff --git a/res/drawable/stack_00009.png b/res/drawable/stack_00009.png Binary files differnew file mode 100644 index 000000000..54620e210 --- /dev/null +++ b/res/drawable/stack_00009.png diff --git a/res/drawable/stack_00010.png b/res/drawable/stack_00010.png Binary files differnew file mode 100644 index 000000000..7ec4b8719 --- /dev/null +++ b/res/drawable/stack_00010.png diff --git a/res/drawable/stack_00011.png b/res/drawable/stack_00011.png Binary files differnew file mode 100644 index 000000000..300b98ac6 --- /dev/null +++ b/res/drawable/stack_00011.png diff --git a/res/drawable/stack_00012.png b/res/drawable/stack_00012.png Binary files differnew file mode 100644 index 000000000..eae0e919a --- /dev/null +++ b/res/drawable/stack_00012.png diff --git a/res/drawable/stack_00013.png b/res/drawable/stack_00013.png Binary files differnew file mode 100644 index 000000000..fa24d7461 --- /dev/null +++ b/res/drawable/stack_00013.png diff --git a/res/drawable/stack_00014.png b/res/drawable/stack_00014.png Binary files differnew file mode 100644 index 000000000..ad0a8108c --- /dev/null +++ b/res/drawable/stack_00014.png diff --git a/res/drawable/stack_00015.png b/res/drawable/stack_00015.png Binary files differnew file mode 100644 index 000000000..125950961 --- /dev/null +++ b/res/drawable/stack_00015.png diff --git a/res/drawable/stack_00016.png b/res/drawable/stack_00016.png Binary files differnew file mode 100644 index 000000000..cc0e9076b --- /dev/null +++ b/res/drawable/stack_00016.png diff --git a/res/drawable/stack_00017.png b/res/drawable/stack_00017.png Binary files differnew file mode 100644 index 000000000..174165b54 --- /dev/null +++ b/res/drawable/stack_00017.png diff --git a/res/drawable/stack_00018.png b/res/drawable/stack_00018.png Binary files differnew file mode 100644 index 000000000..0fb9cea69 --- /dev/null +++ b/res/drawable/stack_00018.png diff --git a/res/drawable/stack_00019.png b/res/drawable/stack_00019.png Binary files differnew file mode 100644 index 000000000..4a66a8fda --- /dev/null +++ b/res/drawable/stack_00019.png diff --git a/res/drawable/stack_00020.png b/res/drawable/stack_00020.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00020.png diff --git a/res/drawable/stack_00021.png b/res/drawable/stack_00021.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00021.png diff --git a/res/drawable/stack_00022.png b/res/drawable/stack_00022.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00022.png diff --git a/res/drawable/stack_00023.png b/res/drawable/stack_00023.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00023.png diff --git a/res/drawable/stack_00024.png b/res/drawable/stack_00024.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00024.png diff --git a/res/drawable/stack_00025.png b/res/drawable/stack_00025.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00025.png diff --git a/res/drawable/stack_00026.png b/res/drawable/stack_00026.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00026.png diff --git a/res/drawable/stack_00027.png b/res/drawable/stack_00027.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00027.png diff --git a/res/drawable/stack_00028.png b/res/drawable/stack_00028.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00028.png diff --git a/res/drawable/stack_00029.png b/res/drawable/stack_00029.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00029.png diff --git a/res/drawable/stack_00030.png b/res/drawable/stack_00030.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00030.png diff --git a/res/drawable/stack_00031.png b/res/drawable/stack_00031.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00031.png diff --git a/res/drawable/stack_00032.png b/res/drawable/stack_00032.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00032.png diff --git a/res/drawable/stack_00033.png b/res/drawable/stack_00033.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00033.png diff --git a/res/drawable/stack_00034.png b/res/drawable/stack_00034.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00034.png diff --git a/res/drawable/stack_00035.png b/res/drawable/stack_00035.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00035.png diff --git a/res/drawable/stack_00036.png b/res/drawable/stack_00036.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00036.png diff --git a/res/drawable/stack_00037.png b/res/drawable/stack_00037.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00037.png diff --git a/res/drawable/stack_00038.png b/res/drawable/stack_00038.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00038.png diff --git a/res/drawable/stack_00039.png b/res/drawable/stack_00039.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00039.png diff --git a/res/drawable/stack_00040.png b/res/drawable/stack_00040.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00040.png diff --git a/res/drawable/stack_00041.png b/res/drawable/stack_00041.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00041.png diff --git a/res/drawable/stack_00042.png b/res/drawable/stack_00042.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00042.png diff --git a/res/drawable/stack_00043.png b/res/drawable/stack_00043.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00043.png diff --git a/res/drawable/stack_00044.png b/res/drawable/stack_00044.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00044.png diff --git a/res/drawable/stack_00045.png b/res/drawable/stack_00045.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00045.png diff --git a/res/drawable/stack_00046.png b/res/drawable/stack_00046.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00046.png diff --git a/res/drawable/stack_00047.png b/res/drawable/stack_00047.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00047.png diff --git a/res/drawable/stack_00048.png b/res/drawable/stack_00048.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00048.png diff --git a/res/drawable/stack_00049.png b/res/drawable/stack_00049.png Binary files differnew file mode 100644 index 000000000..ebe970d76 --- /dev/null +++ b/res/drawable/stack_00049.png diff --git a/res/drawable/themes_button.xml b/res/drawable/themes_button.xml new file mode 100644 index 000000000..3006b9a6e --- /dev/null +++ b/res/drawable/themes_button.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2013 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. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_focused="true" android:drawable="@drawable/ic_themes_pressed" /> + <item android:state_pressed="true" android:drawable="@drawable/ic_themes_pressed" /> + <item android:drawable="@drawable/ic_themes" /> +</selector> diff --git a/res/drawable/transition_accordion.xml b/res/drawable/transition_accordion.xml new file mode 100644 index 000000000..5650ba2e6 --- /dev/null +++ b/res/drawable/transition_accordion.xml @@ -0,0 +1,54 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_accordian" android:oneshot="false"> + <item android:drawable="@drawable/acordian_00000" android:duration="30" /> + <item android:drawable="@drawable/acordian_00001" android:duration="30" /> + <item android:drawable="@drawable/acordian_00002" android:duration="30" /> + <item android:drawable="@drawable/acordian_00003" android:duration="30" /> + <item android:drawable="@drawable/acordian_00004" android:duration="30" /> + <item android:drawable="@drawable/acordian_00005" android:duration="30" /> + <item android:drawable="@drawable/acordian_00006" android:duration="30" /> + <item android:drawable="@drawable/acordian_00007" android:duration="30" /> + <item android:drawable="@drawable/acordian_00008" android:duration="30" /> + <item android:drawable="@drawable/acordian_00009" android:duration="30" /> + <item android:drawable="@drawable/acordian_00010" android:duration="30" /> + <item android:drawable="@drawable/acordian_00011" android:duration="30" /> + <item android:drawable="@drawable/acordian_00012" android:duration="30" /> + <item android:drawable="@drawable/acordian_00013" android:duration="30" /> + <item android:drawable="@drawable/acordian_00014" android:duration="30" /> + <item android:drawable="@drawable/acordian_00015" android:duration="30" /> + <item android:drawable="@drawable/acordian_00016" android:duration="30" /> + <item android:drawable="@drawable/acordian_00017" android:duration="30" /> + <item android:drawable="@drawable/acordian_00018" android:duration="30" /> + <item android:drawable="@drawable/acordian_00019" android:duration="30" /> + <item android:drawable="@drawable/acordian_00020" android:duration="30" /> + <item android:drawable="@drawable/acordian_00021" android:duration="30" /> + <item android:drawable="@drawable/acordian_00022" android:duration="30" /> + <item android:drawable="@drawable/acordian_00023" android:duration="30" /> + <item android:drawable="@drawable/acordian_00024" android:duration="30" /> + <item android:drawable="@drawable/acordian_00025" android:duration="30" /> + <item android:drawable="@drawable/acordian_00026" android:duration="30" /> + <item android:drawable="@drawable/acordian_00027" android:duration="30" /> + <item android:drawable="@drawable/acordian_00028" android:duration="30" /> + <item android:drawable="@drawable/acordian_00029" android:duration="30" /> + <item android:drawable="@drawable/acordian_00030" android:duration="30" /> + <item android:drawable="@drawable/acordian_00031" android:duration="30" /> + <item android:drawable="@drawable/acordian_00032" android:duration="30" /> + <item android:drawable="@drawable/acordian_00033" android:duration="30" /> + <item android:drawable="@drawable/acordian_00034" android:duration="30" /> + <item android:drawable="@drawable/acordian_00035" android:duration="30" /> + <item android:drawable="@drawable/acordian_00036" android:duration="30" /> + <item android:drawable="@drawable/acordian_00037" android:duration="30" /> + <item android:drawable="@drawable/acordian_00038" android:duration="30" /> + <item android:drawable="@drawable/acordian_00039" android:duration="30" /> + <item android:drawable="@drawable/acordian_00040" android:duration="30" /> + <item android:drawable="@drawable/acordian_00041" android:duration="30" /> + <item android:drawable="@drawable/acordian_00042" android:duration="30" /> + <item android:drawable="@drawable/acordian_00043" android:duration="30" /> + <item android:drawable="@drawable/acordian_00044" android:duration="30" /> + <item android:drawable="@drawable/acordian_00045" android:duration="30" /> + <item android:drawable="@drawable/acordian_00046" android:duration="30" /> + <item android:drawable="@drawable/acordian_00047" android:duration="30" /> + <item android:drawable="@drawable/acordian_00048" android:duration="30" /> + <item android:drawable="@drawable/acordian_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_arrow.xml b/res/drawable/transition_arrow.xml new file mode 100644 index 000000000..540db93d8 --- /dev/null +++ b/res/drawable/transition_arrow.xml @@ -0,0 +1,21 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_arrow" android:oneshot="true"> + <item android:drawable="@drawable/launcheranimatedarrow_00000" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00001" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00002" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00003" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00004" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00005" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00006" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00007" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00008" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00009" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00010" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00011" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00012" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00013" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00014" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00015" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00016" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_arrow_reverse.xml b/res/drawable/transition_arrow_reverse.xml new file mode 100644 index 000000000..855f08fb4 --- /dev/null +++ b/res/drawable/transition_arrow_reverse.xml @@ -0,0 +1,21 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_arrow_reverse" android:oneshot="true"> + <item android:drawable="@drawable/launcheranimatedarrow_00016" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00015" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00014" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00013" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00012" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00011" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00010" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00009" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00008" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00007" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00006" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00005" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00004" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00003" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00002" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00001" android:duration="30" /> + <item android:drawable="@drawable/launcheranimatedarrow_00000" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_carousel.xml b/res/drawable/transition_carousel.xml new file mode 100644 index 000000000..bebb5c006 --- /dev/null +++ b/res/drawable/transition_carousel.xml @@ -0,0 +1,55 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_carousel" android:oneshot="false"> + <item android:drawable="@drawable/carousel_00000" android:duration="30" /> + <item android:drawable="@drawable/carousel_00001" android:duration="30" /> + <item android:drawable="@drawable/carousel_00002" android:duration="30" /> + <item android:drawable="@drawable/carousel_00003" android:duration="30" /> + <item android:drawable="@drawable/carousel_00004" android:duration="30" /> + <item android:drawable="@drawable/carousel_00005" android:duration="30" /> + <item android:drawable="@drawable/carousel_00006" android:duration="30" /> + <item android:drawable="@drawable/carousel_00007" android:duration="30" /> + <item android:drawable="@drawable/carousel_00008" android:duration="30" /> + <item android:drawable="@drawable/carousel_00009" android:duration="30" /> + <item android:drawable="@drawable/carousel_00010" android:duration="30" /> + <item android:drawable="@drawable/carousel_00011" android:duration="30" /> + <item android:drawable="@drawable/carousel_00012" android:duration="30" /> + <item android:drawable="@drawable/carousel_00013" android:duration="30" /> + <item android:drawable="@drawable/carousel_00014" android:duration="30" /> + <item android:drawable="@drawable/carousel_00015" android:duration="30" /> + <item android:drawable="@drawable/carousel_00016" android:duration="30" /> + <item android:drawable="@drawable/carousel_00017" android:duration="30" /> + <item android:drawable="@drawable/carousel_00018" android:duration="30" /> + <item android:drawable="@drawable/carousel_00019" android:duration="30" /> + <item android:drawable="@drawable/carousel_00020" android:duration="30" /> + <item android:drawable="@drawable/carousel_00021" android:duration="30" /> + <item android:drawable="@drawable/carousel_00022" android:duration="30" /> + <item android:drawable="@drawable/carousel_00023" android:duration="30" /> + <item android:drawable="@drawable/carousel_00024" android:duration="30" /> + <item android:drawable="@drawable/carousel_00025" android:duration="30" /> + <item android:drawable="@drawable/carousel_00026" android:duration="30" /> + <item android:drawable="@drawable/carousel_00027" android:duration="30" /> + <item android:drawable="@drawable/carousel_00028" android:duration="30" /> + <item android:drawable="@drawable/carousel_00029" android:duration="30" /> + <item android:drawable="@drawable/carousel_00030" android:duration="30" /> + <item android:drawable="@drawable/carousel_00031" android:duration="30" /> + <item android:drawable="@drawable/carousel_00032" android:duration="30" /> + <item android:drawable="@drawable/carousel_00033" android:duration="30" /> + <item android:drawable="@drawable/carousel_00034" android:duration="30" /> + <item android:drawable="@drawable/carousel_00035" android:duration="30" /> + <item android:drawable="@drawable/carousel_00036" android:duration="30" /> + <item android:drawable="@drawable/carousel_00037" android:duration="30" /> + <item android:drawable="@drawable/carousel_00038" android:duration="30" /> + <item android:drawable="@drawable/carousel_00039" android:duration="30" /> + <item android:drawable="@drawable/carousel_00040" android:duration="30" /> + <item android:drawable="@drawable/carousel_00041" android:duration="30" /> + <item android:drawable="@drawable/carousel_00042" android:duration="30" /> + <item android:drawable="@drawable/carousel_00043" android:duration="30" /> + <item android:drawable="@drawable/carousel_00044" android:duration="30" /> + <item android:drawable="@drawable/carousel_00045" android:duration="30" /> + <item android:drawable="@drawable/carousel_00046" android:duration="30" /> + <item android:drawable="@drawable/carousel_00047" android:duration="30" /> + <item android:drawable="@drawable/carousel_00048" android:duration="30" /> + <item android:drawable="@drawable/carousel_00049" android:duration="30" /> + <item android:drawable="@drawable/carousel_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_cubein.xml b/res/drawable/transition_cubein.xml new file mode 100644 index 000000000..b5a9321f3 --- /dev/null +++ b/res/drawable/transition_cubein.xml @@ -0,0 +1,55 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_cubein" android:oneshot="false"> + <item android:drawable="@drawable/cubein_00000" android:duration="30" /> + <item android:drawable="@drawable/cubein_00001" android:duration="30" /> + <item android:drawable="@drawable/cubein_00002" android:duration="30" /> + <item android:drawable="@drawable/cubein_00003" android:duration="30" /> + <item android:drawable="@drawable/cubein_00004" android:duration="30" /> + <item android:drawable="@drawable/cubein_00005" android:duration="30" /> + <item android:drawable="@drawable/cubein_00006" android:duration="30" /> + <item android:drawable="@drawable/cubein_00007" android:duration="30" /> + <item android:drawable="@drawable/cubein_00008" android:duration="30" /> + <item android:drawable="@drawable/cubein_00009" android:duration="30" /> + <item android:drawable="@drawable/cubein_00010" android:duration="30" /> + <item android:drawable="@drawable/cubein_00011" android:duration="30" /> + <item android:drawable="@drawable/cubein_00012" android:duration="30" /> + <item android:drawable="@drawable/cubein_00013" android:duration="30" /> + <item android:drawable="@drawable/cubein_00014" android:duration="30" /> + <item android:drawable="@drawable/cubein_00015" android:duration="30" /> + <item android:drawable="@drawable/cubein_00016" android:duration="30" /> + <item android:drawable="@drawable/cubein_00017" android:duration="30" /> + <item android:drawable="@drawable/cubein_00018" android:duration="30" /> + <item android:drawable="@drawable/cubein_00019" android:duration="30" /> + <item android:drawable="@drawable/cubein_00020" android:duration="30" /> + <item android:drawable="@drawable/cubein_00021" android:duration="30" /> + <item android:drawable="@drawable/cubein_00022" android:duration="30" /> + <item android:drawable="@drawable/cubein_00023" android:duration="30" /> + <item android:drawable="@drawable/cubein_00024" android:duration="30" /> + <item android:drawable="@drawable/cubein_00025" android:duration="30" /> + <item android:drawable="@drawable/cubein_00026" android:duration="30" /> + <item android:drawable="@drawable/cubein_00027" android:duration="30" /> + <item android:drawable="@drawable/cubein_00028" android:duration="30" /> + <item android:drawable="@drawable/cubein_00029" android:duration="30" /> + <item android:drawable="@drawable/cubein_00030" android:duration="30" /> + <item android:drawable="@drawable/cubein_00031" android:duration="30" /> + <item android:drawable="@drawable/cubein_00032" android:duration="30" /> + <item android:drawable="@drawable/cubein_00033" android:duration="30" /> + <item android:drawable="@drawable/cubein_00034" android:duration="30" /> + <item android:drawable="@drawable/cubein_00035" android:duration="30" /> + <item android:drawable="@drawable/cubein_00036" android:duration="30" /> + <item android:drawable="@drawable/cubein_00037" android:duration="30" /> + <item android:drawable="@drawable/cubein_00038" android:duration="30" /> + <item android:drawable="@drawable/cubein_00039" android:duration="30" /> + <item android:drawable="@drawable/cubein_00040" android:duration="30" /> + <item android:drawable="@drawable/cubein_00041" android:duration="30" /> + <item android:drawable="@drawable/cubein_00042" android:duration="30" /> + <item android:drawable="@drawable/cubein_00043" android:duration="30" /> + <item android:drawable="@drawable/cubein_00044" android:duration="30" /> + <item android:drawable="@drawable/cubein_00045" android:duration="30" /> + <item android:drawable="@drawable/cubein_00046" android:duration="30" /> + <item android:drawable="@drawable/cubein_00047" android:duration="30" /> + <item android:drawable="@drawable/cubein_00048" android:duration="30" /> + <item android:drawable="@drawable/cubein_00049" android:duration="30" /> + <item android:drawable="@drawable/cubein_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_cubeout.xml b/res/drawable/transition_cubeout.xml new file mode 100644 index 000000000..c8694bb6f --- /dev/null +++ b/res/drawable/transition_cubeout.xml @@ -0,0 +1,55 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_cubeout" android:oneshot="false"> + <item android:drawable="@drawable/cubeout_00000" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00001" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00002" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00003" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00004" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00005" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00006" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00007" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00008" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00009" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00010" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00011" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00012" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00013" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00014" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00015" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00016" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00017" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00018" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00019" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00020" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00021" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00022" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00023" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00024" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00025" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00026" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00027" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00028" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00029" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00030" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00031" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00032" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00033" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00034" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00035" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00036" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00037" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00038" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00039" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00040" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00041" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00042" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00043" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00044" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00045" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00046" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00047" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00048" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00049" android:duration="30" /> + <item android:drawable="@drawable/cubeout_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_cylinderin.xml b/res/drawable/transition_cylinderin.xml new file mode 100644 index 000000000..e51d32e9c --- /dev/null +++ b/res/drawable/transition_cylinderin.xml @@ -0,0 +1,55 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_cylinderin" android:oneshot="false"> + <item android:drawable="@drawable/cylinderin_00000" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00001" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00002" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00003" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00004" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00005" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00006" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00007" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00008" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00009" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00010" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00011" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00012" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00013" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00014" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00015" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00016" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00017" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00018" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00019" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00020" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00021" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00022" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00023" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00024" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00025" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00026" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00027" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00028" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00029" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00030" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00031" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00032" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00033" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00034" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00035" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00036" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00037" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00038" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00039" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00040" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00041" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00042" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00043" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00044" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00045" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00046" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00047" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00048" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00049" android:duration="30" /> + <item android:drawable="@drawable/cylinderin_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_cylinderout.xml b/res/drawable/transition_cylinderout.xml new file mode 100644 index 000000000..451964ee2 --- /dev/null +++ b/res/drawable/transition_cylinderout.xml @@ -0,0 +1,55 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_cylinderout" android:oneshot="false"> + <item android:drawable="@drawable/cylinderout_00000" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00001" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00002" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00003" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00004" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00005" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00006" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00007" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00008" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00009" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00010" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00011" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00012" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00013" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00014" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00015" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00016" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00017" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00018" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00019" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00020" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00021" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00022" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00023" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00024" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00025" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00026" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00027" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00028" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00029" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00030" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00031" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00032" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00033" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00034" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00035" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00036" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00037" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00038" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00039" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00040" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00041" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00042" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00043" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00044" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00045" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00046" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00047" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00048" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00049" android:duration="30" /> + <item android:drawable="@drawable/cylinderout_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_flip.xml b/res/drawable/transition_flip.xml new file mode 100644 index 000000000..30897202e --- /dev/null +++ b/res/drawable/transition_flip.xml @@ -0,0 +1,55 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_flip" android:oneshot="false"> + <item android:drawable="@drawable/flip_00000" android:duration="30" /> + <item android:drawable="@drawable/flip_00001" android:duration="30" /> + <item android:drawable="@drawable/flip_00002" android:duration="30" /> + <item android:drawable="@drawable/flip_00003" android:duration="30" /> + <item android:drawable="@drawable/flip_00004" android:duration="30" /> + <item android:drawable="@drawable/flip_00005" android:duration="30" /> + <item android:drawable="@drawable/flip_00006" android:duration="30" /> + <item android:drawable="@drawable/flip_00007" android:duration="30" /> + <item android:drawable="@drawable/flip_00008" android:duration="30" /> + <item android:drawable="@drawable/flip_00009" android:duration="30" /> + <item android:drawable="@drawable/flip_00010" android:duration="30" /> + <item android:drawable="@drawable/flip_00011" android:duration="30" /> + <item android:drawable="@drawable/flip_00012" android:duration="30" /> + <item android:drawable="@drawable/flip_00013" android:duration="30" /> + <item android:drawable="@drawable/flip_00014" android:duration="30" /> + <item android:drawable="@drawable/flip_00015" android:duration="30" /> + <item android:drawable="@drawable/flip_00016" android:duration="30" /> + <item android:drawable="@drawable/flip_00017" android:duration="30" /> + <item android:drawable="@drawable/flip_00018" android:duration="30" /> + <item android:drawable="@drawable/flip_00019" android:duration="30" /> + <item android:drawable="@drawable/flip_00020" android:duration="30" /> + <item android:drawable="@drawable/flip_00021" android:duration="30" /> + <item android:drawable="@drawable/flip_00022" android:duration="30" /> + <item android:drawable="@drawable/flip_00023" android:duration="30" /> + <item android:drawable="@drawable/flip_00024" android:duration="30" /> + <item android:drawable="@drawable/flip_00025" android:duration="30" /> + <item android:drawable="@drawable/flip_00026" android:duration="30" /> + <item android:drawable="@drawable/flip_00027" android:duration="30" /> + <item android:drawable="@drawable/flip_00028" android:duration="30" /> + <item android:drawable="@drawable/flip_00029" android:duration="30" /> + <item android:drawable="@drawable/flip_00030" android:duration="30" /> + <item android:drawable="@drawable/flip_00031" android:duration="30" /> + <item android:drawable="@drawable/flip_00032" android:duration="30" /> + <item android:drawable="@drawable/flip_00033" android:duration="30" /> + <item android:drawable="@drawable/flip_00034" android:duration="30" /> + <item android:drawable="@drawable/flip_00035" android:duration="30" /> + <item android:drawable="@drawable/flip_00036" android:duration="30" /> + <item android:drawable="@drawable/flip_00037" android:duration="30" /> + <item android:drawable="@drawable/flip_00038" android:duration="30" /> + <item android:drawable="@drawable/flip_00039" android:duration="30" /> + <item android:drawable="@drawable/flip_00040" android:duration="30" /> + <item android:drawable="@drawable/flip_00041" android:duration="30" /> + <item android:drawable="@drawable/flip_00042" android:duration="30" /> + <item android:drawable="@drawable/flip_00043" android:duration="30" /> + <item android:drawable="@drawable/flip_00044" android:duration="30" /> + <item android:drawable="@drawable/flip_00045" android:duration="30" /> + <item android:drawable="@drawable/flip_00046" android:duration="30" /> + <item android:drawable="@drawable/flip_00047" android:duration="30" /> + <item android:drawable="@drawable/flip_00048" android:duration="30" /> + <item android:drawable="@drawable/flip_00049" android:duration="30" /> + <item android:drawable="@drawable/flip_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_none.xml b/res/drawable/transition_none.xml new file mode 100644 index 000000000..e357939b5 --- /dev/null +++ b/res/drawable/transition_none.xml @@ -0,0 +1,55 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_none" android:oneshot="false"> + <item android:drawable="@drawable/none_00000" android:duration="30" /> + <item android:drawable="@drawable/none_00001" android:duration="30" /> + <item android:drawable="@drawable/none_00002" android:duration="30" /> + <item android:drawable="@drawable/none_00003" android:duration="30" /> + <item android:drawable="@drawable/none_00004" android:duration="30" /> + <item android:drawable="@drawable/none_00005" android:duration="30" /> + <item android:drawable="@drawable/none_00006" android:duration="30" /> + <item android:drawable="@drawable/none_00007" android:duration="30" /> + <item android:drawable="@drawable/none_00008" android:duration="30" /> + <item android:drawable="@drawable/none_00009" android:duration="30" /> + <item android:drawable="@drawable/none_00010" android:duration="30" /> + <item android:drawable="@drawable/none_00011" android:duration="30" /> + <item android:drawable="@drawable/none_00012" android:duration="30" /> + <item android:drawable="@drawable/none_00013" android:duration="30" /> + <item android:drawable="@drawable/none_00014" android:duration="30" /> + <item android:drawable="@drawable/none_00015" android:duration="30" /> + <item android:drawable="@drawable/none_00016" android:duration="30" /> + <item android:drawable="@drawable/none_00017" android:duration="30" /> + <item android:drawable="@drawable/none_00018" android:duration="30" /> + <item android:drawable="@drawable/none_00019" android:duration="30" /> + <item android:drawable="@drawable/none_00020" android:duration="30" /> + <item android:drawable="@drawable/none_00021" android:duration="30" /> + <item android:drawable="@drawable/none_00022" android:duration="30" /> + <item android:drawable="@drawable/none_00023" android:duration="30" /> + <item android:drawable="@drawable/none_00024" android:duration="30" /> + <item android:drawable="@drawable/none_00025" android:duration="30" /> + <item android:drawable="@drawable/none_00026" android:duration="30" /> + <item android:drawable="@drawable/none_00027" android:duration="30" /> + <item android:drawable="@drawable/none_00028" android:duration="30" /> + <item android:drawable="@drawable/none_00029" android:duration="30" /> + <item android:drawable="@drawable/none_00030" android:duration="30" /> + <item android:drawable="@drawable/none_00031" android:duration="30" /> + <item android:drawable="@drawable/none_00032" android:duration="30" /> + <item android:drawable="@drawable/none_00033" android:duration="30" /> + <item android:drawable="@drawable/none_00034" android:duration="30" /> + <item android:drawable="@drawable/none_00035" android:duration="30" /> + <item android:drawable="@drawable/none_00036" android:duration="30" /> + <item android:drawable="@drawable/none_00037" android:duration="30" /> + <item android:drawable="@drawable/none_00038" android:duration="30" /> + <item android:drawable="@drawable/none_00039" android:duration="30" /> + <item android:drawable="@drawable/none_00040" android:duration="30" /> + <item android:drawable="@drawable/none_00041" android:duration="30" /> + <item android:drawable="@drawable/none_00042" android:duration="30" /> + <item android:drawable="@drawable/none_00043" android:duration="30" /> + <item android:drawable="@drawable/none_00044" android:duration="30" /> + <item android:drawable="@drawable/none_00045" android:duration="30" /> + <item android:drawable="@drawable/none_00046" android:duration="30" /> + <item android:drawable="@drawable/none_00047" android:duration="30" /> + <item android:drawable="@drawable/none_00048" android:duration="30" /> + <item android:drawable="@drawable/none_00049" android:duration="30" /> + <item android:drawable="@drawable/none_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_overview.xml b/res/drawable/transition_overview.xml new file mode 100644 index 000000000..47dac7d92 --- /dev/null +++ b/res/drawable/transition_overview.xml @@ -0,0 +1,55 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_overview" android:oneshot="false"> + <item android:drawable="@drawable/overview_00000" android:duration="30" /> + <item android:drawable="@drawable/overview_00001" android:duration="30" /> + <item android:drawable="@drawable/overview_00002" android:duration="30" /> + <item android:drawable="@drawable/overview_00003" android:duration="30" /> + <item android:drawable="@drawable/overview_00004" android:duration="30" /> + <item android:drawable="@drawable/overview_00005" android:duration="30" /> + <item android:drawable="@drawable/overview_00006" android:duration="30" /> + <item android:drawable="@drawable/overview_00007" android:duration="30" /> + <item android:drawable="@drawable/overview_00008" android:duration="30" /> + <item android:drawable="@drawable/overview_00009" android:duration="30" /> + <item android:drawable="@drawable/overview_00010" android:duration="30" /> + <item android:drawable="@drawable/overview_00011" android:duration="30" /> + <item android:drawable="@drawable/overview_00012" android:duration="30" /> + <item android:drawable="@drawable/overview_00013" android:duration="30" /> + <item android:drawable="@drawable/overview_00014" android:duration="30" /> + <item android:drawable="@drawable/overview_00015" android:duration="30" /> + <item android:drawable="@drawable/overview_00016" android:duration="30" /> + <item android:drawable="@drawable/overview_00017" android:duration="30" /> + <item android:drawable="@drawable/overview_00018" android:duration="30" /> + <item android:drawable="@drawable/overview_00019" android:duration="30" /> + <item android:drawable="@drawable/overview_00020" android:duration="30" /> + <item android:drawable="@drawable/overview_00021" android:duration="30" /> + <item android:drawable="@drawable/overview_00022" android:duration="30" /> + <item android:drawable="@drawable/overview_00023" android:duration="30" /> + <item android:drawable="@drawable/overview_00024" android:duration="30" /> + <item android:drawable="@drawable/overview_00025" android:duration="30" /> + <item android:drawable="@drawable/overview_00026" android:duration="30" /> + <item android:drawable="@drawable/overview_00027" android:duration="30" /> + <item android:drawable="@drawable/overview_00028" android:duration="30" /> + <item android:drawable="@drawable/overview_00029" android:duration="30" /> + <item android:drawable="@drawable/overview_00030" android:duration="30" /> + <item android:drawable="@drawable/overview_00031" android:duration="30" /> + <item android:drawable="@drawable/overview_00032" android:duration="30" /> + <item android:drawable="@drawable/overview_00033" android:duration="30" /> + <item android:drawable="@drawable/overview_00034" android:duration="30" /> + <item android:drawable="@drawable/overview_00035" android:duration="30" /> + <item android:drawable="@drawable/overview_00036" android:duration="30" /> + <item android:drawable="@drawable/overview_00037" android:duration="30" /> + <item android:drawable="@drawable/overview_00038" android:duration="30" /> + <item android:drawable="@drawable/overview_00039" android:duration="30" /> + <item android:drawable="@drawable/overview_00040" android:duration="30" /> + <item android:drawable="@drawable/overview_00041" android:duration="30" /> + <item android:drawable="@drawable/overview_00042" android:duration="30" /> + <item android:drawable="@drawable/overview_00043" android:duration="30" /> + <item android:drawable="@drawable/overview_00044" android:duration="30" /> + <item android:drawable="@drawable/overview_00045" android:duration="30" /> + <item android:drawable="@drawable/overview_00046" android:duration="30" /> + <item android:drawable="@drawable/overview_00047" android:duration="30" /> + <item android:drawable="@drawable/overview_00048" android:duration="30" /> + <item android:drawable="@drawable/overview_00049" android:duration="30" /> + <item android:drawable="@drawable/overview_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_rotatedown.xml b/res/drawable/transition_rotatedown.xml new file mode 100644 index 000000000..f05f71003 --- /dev/null +++ b/res/drawable/transition_rotatedown.xml @@ -0,0 +1,55 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_rotatedown" android:oneshot="false"> + <item android:drawable="@drawable/rotatedown_00000" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00001" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00002" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00003" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00004" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00005" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00006" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00007" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00008" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00009" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00010" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00011" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00012" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00013" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00014" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00015" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00016" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00017" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00018" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00019" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00020" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00021" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00022" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00023" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00024" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00025" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00026" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00027" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00028" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00029" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00030" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00031" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00032" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00033" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00034" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00035" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00036" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00037" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00038" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00039" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00040" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00041" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00042" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00043" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00044" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00045" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00046" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00047" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00048" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00049" android:duration="30" /> + <item android:drawable="@drawable/rotatedown_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_rotateup.xml b/res/drawable/transition_rotateup.xml new file mode 100644 index 000000000..3a2e8fa8e --- /dev/null +++ b/res/drawable/transition_rotateup.xml @@ -0,0 +1,55 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_rotateup" android:oneshot="false"> + <item android:drawable="@drawable/rotateup_00000" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00001" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00002" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00003" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00004" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00005" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00006" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00007" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00008" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00009" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00010" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00011" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00012" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00013" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00014" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00015" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00016" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00017" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00018" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00019" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00020" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00021" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00022" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00023" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00024" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00025" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00026" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00027" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00028" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00029" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00030" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00031" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00032" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00033" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00034" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00035" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00036" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00037" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00038" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00039" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00040" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00041" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00042" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00043" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00044" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00045" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00046" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00047" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00048" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00049" android:duration="30" /> + <item android:drawable="@drawable/rotateup_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_stack.xml b/res/drawable/transition_stack.xml new file mode 100644 index 000000000..1483a1bae --- /dev/null +++ b/res/drawable/transition_stack.xml @@ -0,0 +1,55 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_stack" android:oneshot="false"> + <item android:drawable="@drawable/stack_00000" android:duration="30" /> + <item android:drawable="@drawable/stack_00001" android:duration="30" /> + <item android:drawable="@drawable/stack_00002" android:duration="30" /> + <item android:drawable="@drawable/stack_00003" android:duration="30" /> + <item android:drawable="@drawable/stack_00004" android:duration="30" /> + <item android:drawable="@drawable/stack_00005" android:duration="30" /> + <item android:drawable="@drawable/stack_00006" android:duration="30" /> + <item android:drawable="@drawable/stack_00007" android:duration="30" /> + <item android:drawable="@drawable/stack_00008" android:duration="30" /> + <item android:drawable="@drawable/stack_00009" android:duration="30" /> + <item android:drawable="@drawable/stack_00010" android:duration="30" /> + <item android:drawable="@drawable/stack_00011" android:duration="30" /> + <item android:drawable="@drawable/stack_00012" android:duration="30" /> + <item android:drawable="@drawable/stack_00013" android:duration="30" /> + <item android:drawable="@drawable/stack_00014" android:duration="30" /> + <item android:drawable="@drawable/stack_00015" android:duration="30" /> + <item android:drawable="@drawable/stack_00016" android:duration="30" /> + <item android:drawable="@drawable/stack_00017" android:duration="30" /> + <item android:drawable="@drawable/stack_00018" android:duration="30" /> + <item android:drawable="@drawable/stack_00019" android:duration="30" /> + <item android:drawable="@drawable/stack_00020" android:duration="30" /> + <item android:drawable="@drawable/stack_00021" android:duration="30" /> + <item android:drawable="@drawable/stack_00022" android:duration="30" /> + <item android:drawable="@drawable/stack_00023" android:duration="30" /> + <item android:drawable="@drawable/stack_00024" android:duration="30" /> + <item android:drawable="@drawable/stack_00025" android:duration="30" /> + <item android:drawable="@drawable/stack_00026" android:duration="30" /> + <item android:drawable="@drawable/stack_00027" android:duration="30" /> + <item android:drawable="@drawable/stack_00028" android:duration="30" /> + <item android:drawable="@drawable/stack_00029" android:duration="30" /> + <item android:drawable="@drawable/stack_00030" android:duration="30" /> + <item android:drawable="@drawable/stack_00031" android:duration="30" /> + <item android:drawable="@drawable/stack_00032" android:duration="30" /> + <item android:drawable="@drawable/stack_00033" android:duration="30" /> + <item android:drawable="@drawable/stack_00034" android:duration="30" /> + <item android:drawable="@drawable/stack_00035" android:duration="30" /> + <item android:drawable="@drawable/stack_00036" android:duration="30" /> + <item android:drawable="@drawable/stack_00037" android:duration="30" /> + <item android:drawable="@drawable/stack_00038" android:duration="30" /> + <item android:drawable="@drawable/stack_00039" android:duration="30" /> + <item android:drawable="@drawable/stack_00040" android:duration="30" /> + <item android:drawable="@drawable/stack_00041" android:duration="30" /> + <item android:drawable="@drawable/stack_00042" android:duration="30" /> + <item android:drawable="@drawable/stack_00043" android:duration="30" /> + <item android:drawable="@drawable/stack_00044" android:duration="30" /> + <item android:drawable="@drawable/stack_00045" android:duration="30" /> + <item android:drawable="@drawable/stack_00046" android:duration="30" /> + <item android:drawable="@drawable/stack_00047" android:duration="30" /> + <item android:drawable="@drawable/stack_00048" android:duration="30" /> + <item android:drawable="@drawable/stack_00049" android:duration="30" /> + <item android:drawable="@drawable/stack_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_zoomin.xml b/res/drawable/transition_zoomin.xml new file mode 100644 index 000000000..cf76e5312 --- /dev/null +++ b/res/drawable/transition_zoomin.xml @@ -0,0 +1,55 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_zoomin" android:oneshot="false"> + <item android:drawable="@drawable/zoomin_00000" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00001" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00002" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00003" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00004" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00005" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00006" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00007" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00008" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00009" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00010" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00011" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00012" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00013" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00014" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00015" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00016" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00017" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00018" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00019" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00020" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00021" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00022" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00023" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00024" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00025" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00026" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00027" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00028" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00029" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00030" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00031" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00032" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00033" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00034" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00035" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00036" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00037" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00038" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00039" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00040" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00041" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00042" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00043" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00044" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00045" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00046" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00047" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00048" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00049" android:duration="30" /> + <item android:drawable="@drawable/zoomin_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/transition_zoomout.xml b/res/drawable/transition_zoomout.xml new file mode 100644 index 000000000..1acdb0c94 --- /dev/null +++ b/res/drawable/transition_zoomout.xml @@ -0,0 +1,55 @@ +<animation-list + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/transition_zoomout" android:oneshot="false"> + <item android:drawable="@drawable/zoomout_00000" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00001" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00002" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00003" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00004" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00005" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00006" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00007" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00008" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00009" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00010" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00011" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00012" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00013" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00014" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00015" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00016" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00017" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00018" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00019" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00020" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00021" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00022" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00023" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00024" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00025" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00026" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00027" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00028" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00029" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00030" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00031" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00032" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00033" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00034" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00035" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00036" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00037" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00038" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00039" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00040" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00041" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00042" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00043" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00044" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00045" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00046" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00047" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00048" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00049" android:duration="30" /> + <item android:drawable="@drawable/zoomout_00049" android:duration="30" /> +</animation-list> diff --git a/res/drawable/zoomin_00000.png b/res/drawable/zoomin_00000.png Binary files differnew file mode 100644 index 000000000..f48138061 --- /dev/null +++ b/res/drawable/zoomin_00000.png diff --git a/res/drawable/zoomin_00001.png b/res/drawable/zoomin_00001.png Binary files differnew file mode 100644 index 000000000..d2f01b4d5 --- /dev/null +++ b/res/drawable/zoomin_00001.png diff --git a/res/drawable/zoomin_00002.png b/res/drawable/zoomin_00002.png Binary files differnew file mode 100644 index 000000000..f0bea7934 --- /dev/null +++ b/res/drawable/zoomin_00002.png diff --git a/res/drawable/zoomin_00003.png b/res/drawable/zoomin_00003.png Binary files differnew file mode 100644 index 000000000..23bd3d5ff --- /dev/null +++ b/res/drawable/zoomin_00003.png diff --git a/res/drawable/zoomin_00004.png b/res/drawable/zoomin_00004.png Binary files differnew file mode 100644 index 000000000..9f343a2dc --- /dev/null +++ b/res/drawable/zoomin_00004.png diff --git a/res/drawable/zoomin_00005.png b/res/drawable/zoomin_00005.png Binary files differnew file mode 100644 index 000000000..cf7d82ad5 --- /dev/null +++ b/res/drawable/zoomin_00005.png diff --git a/res/drawable/zoomin_00006.png b/res/drawable/zoomin_00006.png Binary files differnew file mode 100644 index 000000000..5043dfdab --- /dev/null +++ b/res/drawable/zoomin_00006.png diff --git a/res/drawable/zoomin_00007.png b/res/drawable/zoomin_00007.png Binary files differnew file mode 100644 index 000000000..013cbbf3c --- /dev/null +++ b/res/drawable/zoomin_00007.png diff --git a/res/drawable/zoomin_00008.png b/res/drawable/zoomin_00008.png Binary files differnew file mode 100644 index 000000000..d8acca68a --- /dev/null +++ b/res/drawable/zoomin_00008.png diff --git a/res/drawable/zoomin_00009.png b/res/drawable/zoomin_00009.png Binary files differnew file mode 100644 index 000000000..982aa00bf --- /dev/null +++ b/res/drawable/zoomin_00009.png diff --git a/res/drawable/zoomin_00010.png b/res/drawable/zoomin_00010.png Binary files differnew file mode 100644 index 000000000..7a5b96457 --- /dev/null +++ b/res/drawable/zoomin_00010.png diff --git a/res/drawable/zoomin_00011.png b/res/drawable/zoomin_00011.png Binary files differnew file mode 100644 index 000000000..94c374b3f --- /dev/null +++ b/res/drawable/zoomin_00011.png diff --git a/res/drawable/zoomin_00012.png b/res/drawable/zoomin_00012.png Binary files differnew file mode 100644 index 000000000..f4ca0cb6a --- /dev/null +++ b/res/drawable/zoomin_00012.png diff --git a/res/drawable/zoomin_00013.png b/res/drawable/zoomin_00013.png Binary files differnew file mode 100644 index 000000000..fbb30e04c --- /dev/null +++ b/res/drawable/zoomin_00013.png diff --git a/res/drawable/zoomin_00014.png b/res/drawable/zoomin_00014.png Binary files differnew file mode 100644 index 000000000..8e93f17c1 --- /dev/null +++ b/res/drawable/zoomin_00014.png diff --git a/res/drawable/zoomin_00015.png b/res/drawable/zoomin_00015.png Binary files differnew file mode 100644 index 000000000..bad7462a6 --- /dev/null +++ b/res/drawable/zoomin_00015.png diff --git a/res/drawable/zoomin_00016.png b/res/drawable/zoomin_00016.png Binary files differnew file mode 100644 index 000000000..282a8073f --- /dev/null +++ b/res/drawable/zoomin_00016.png diff --git a/res/drawable/zoomin_00017.png b/res/drawable/zoomin_00017.png Binary files differnew file mode 100644 index 000000000..ae94999f2 --- /dev/null +++ b/res/drawable/zoomin_00017.png diff --git a/res/drawable/zoomin_00018.png b/res/drawable/zoomin_00018.png Binary files differnew file mode 100644 index 000000000..3fcc59e52 --- /dev/null +++ b/res/drawable/zoomin_00018.png diff --git a/res/drawable/zoomin_00019.png b/res/drawable/zoomin_00019.png Binary files differnew file mode 100644 index 000000000..be9cfcbb3 --- /dev/null +++ b/res/drawable/zoomin_00019.png diff --git a/res/drawable/zoomin_00020.png b/res/drawable/zoomin_00020.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00020.png diff --git a/res/drawable/zoomin_00021.png b/res/drawable/zoomin_00021.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00021.png diff --git a/res/drawable/zoomin_00022.png b/res/drawable/zoomin_00022.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00022.png diff --git a/res/drawable/zoomin_00023.png b/res/drawable/zoomin_00023.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00023.png diff --git a/res/drawable/zoomin_00024.png b/res/drawable/zoomin_00024.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00024.png diff --git a/res/drawable/zoomin_00025.png b/res/drawable/zoomin_00025.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00025.png diff --git a/res/drawable/zoomin_00026.png b/res/drawable/zoomin_00026.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00026.png diff --git a/res/drawable/zoomin_00027.png b/res/drawable/zoomin_00027.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00027.png diff --git a/res/drawable/zoomin_00028.png b/res/drawable/zoomin_00028.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00028.png diff --git a/res/drawable/zoomin_00029.png b/res/drawable/zoomin_00029.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00029.png diff --git a/res/drawable/zoomin_00030.png b/res/drawable/zoomin_00030.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00030.png diff --git a/res/drawable/zoomin_00031.png b/res/drawable/zoomin_00031.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00031.png diff --git a/res/drawable/zoomin_00032.png b/res/drawable/zoomin_00032.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00032.png diff --git a/res/drawable/zoomin_00033.png b/res/drawable/zoomin_00033.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00033.png diff --git a/res/drawable/zoomin_00034.png b/res/drawable/zoomin_00034.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00034.png diff --git a/res/drawable/zoomin_00035.png b/res/drawable/zoomin_00035.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00035.png diff --git a/res/drawable/zoomin_00036.png b/res/drawable/zoomin_00036.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00036.png diff --git a/res/drawable/zoomin_00037.png b/res/drawable/zoomin_00037.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00037.png diff --git a/res/drawable/zoomin_00038.png b/res/drawable/zoomin_00038.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00038.png diff --git a/res/drawable/zoomin_00039.png b/res/drawable/zoomin_00039.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00039.png diff --git a/res/drawable/zoomin_00040.png b/res/drawable/zoomin_00040.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00040.png diff --git a/res/drawable/zoomin_00041.png b/res/drawable/zoomin_00041.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00041.png diff --git a/res/drawable/zoomin_00042.png b/res/drawable/zoomin_00042.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00042.png diff --git a/res/drawable/zoomin_00043.png b/res/drawable/zoomin_00043.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00043.png diff --git a/res/drawable/zoomin_00044.png b/res/drawable/zoomin_00044.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00044.png diff --git a/res/drawable/zoomin_00045.png b/res/drawable/zoomin_00045.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00045.png diff --git a/res/drawable/zoomin_00046.png b/res/drawable/zoomin_00046.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00046.png diff --git a/res/drawable/zoomin_00047.png b/res/drawable/zoomin_00047.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00047.png diff --git a/res/drawable/zoomin_00048.png b/res/drawable/zoomin_00048.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00048.png diff --git a/res/drawable/zoomin_00049.png b/res/drawable/zoomin_00049.png Binary files differnew file mode 100644 index 000000000..303e8f87f --- /dev/null +++ b/res/drawable/zoomin_00049.png diff --git a/res/drawable/zoomout_00000.png b/res/drawable/zoomout_00000.png Binary files differnew file mode 100644 index 000000000..94284f9b9 --- /dev/null +++ b/res/drawable/zoomout_00000.png diff --git a/res/drawable/zoomout_00001.png b/res/drawable/zoomout_00001.png Binary files differnew file mode 100644 index 000000000..8c2a2596a --- /dev/null +++ b/res/drawable/zoomout_00001.png diff --git a/res/drawable/zoomout_00002.png b/res/drawable/zoomout_00002.png Binary files differnew file mode 100644 index 000000000..e3c4cb49b --- /dev/null +++ b/res/drawable/zoomout_00002.png diff --git a/res/drawable/zoomout_00003.png b/res/drawable/zoomout_00003.png Binary files differnew file mode 100644 index 000000000..95af18d06 --- /dev/null +++ b/res/drawable/zoomout_00003.png diff --git a/res/drawable/zoomout_00004.png b/res/drawable/zoomout_00004.png Binary files differnew file mode 100644 index 000000000..4d8af9632 --- /dev/null +++ b/res/drawable/zoomout_00004.png diff --git a/res/drawable/zoomout_00005.png b/res/drawable/zoomout_00005.png Binary files differnew file mode 100644 index 000000000..6db1ab05a --- /dev/null +++ b/res/drawable/zoomout_00005.png diff --git a/res/drawable/zoomout_00006.png b/res/drawable/zoomout_00006.png Binary files differnew file mode 100644 index 000000000..277d8c4ac --- /dev/null +++ b/res/drawable/zoomout_00006.png diff --git a/res/drawable/zoomout_00007.png b/res/drawable/zoomout_00007.png Binary files differnew file mode 100644 index 000000000..4fe81f665 --- /dev/null +++ b/res/drawable/zoomout_00007.png diff --git a/res/drawable/zoomout_00008.png b/res/drawable/zoomout_00008.png Binary files differnew file mode 100644 index 000000000..fadd58a14 --- /dev/null +++ b/res/drawable/zoomout_00008.png diff --git a/res/drawable/zoomout_00009.png b/res/drawable/zoomout_00009.png Binary files differnew file mode 100644 index 000000000..5b6003e07 --- /dev/null +++ b/res/drawable/zoomout_00009.png diff --git a/res/drawable/zoomout_00010.png b/res/drawable/zoomout_00010.png Binary files differnew file mode 100644 index 000000000..b77a4f88b --- /dev/null +++ b/res/drawable/zoomout_00010.png diff --git a/res/drawable/zoomout_00011.png b/res/drawable/zoomout_00011.png Binary files differnew file mode 100644 index 000000000..85fbbb831 --- /dev/null +++ b/res/drawable/zoomout_00011.png diff --git a/res/drawable/zoomout_00012.png b/res/drawable/zoomout_00012.png Binary files differnew file mode 100644 index 000000000..eb8acb213 --- /dev/null +++ b/res/drawable/zoomout_00012.png diff --git a/res/drawable/zoomout_00013.png b/res/drawable/zoomout_00013.png Binary files differnew file mode 100644 index 000000000..3501c8514 --- /dev/null +++ b/res/drawable/zoomout_00013.png diff --git a/res/drawable/zoomout_00014.png b/res/drawable/zoomout_00014.png Binary files differnew file mode 100644 index 000000000..fd600be1b --- /dev/null +++ b/res/drawable/zoomout_00014.png diff --git a/res/drawable/zoomout_00015.png b/res/drawable/zoomout_00015.png Binary files differnew file mode 100644 index 000000000..b88c6bcd8 --- /dev/null +++ b/res/drawable/zoomout_00015.png diff --git a/res/drawable/zoomout_00016.png b/res/drawable/zoomout_00016.png Binary files differnew file mode 100644 index 000000000..c618a55fc --- /dev/null +++ b/res/drawable/zoomout_00016.png diff --git a/res/drawable/zoomout_00017.png b/res/drawable/zoomout_00017.png Binary files differnew file mode 100644 index 000000000..c54b0dc8f --- /dev/null +++ b/res/drawable/zoomout_00017.png diff --git a/res/drawable/zoomout_00018.png b/res/drawable/zoomout_00018.png Binary files differnew file mode 100644 index 000000000..8e974a18a --- /dev/null +++ b/res/drawable/zoomout_00018.png diff --git a/res/drawable/zoomout_00019.png b/res/drawable/zoomout_00019.png Binary files differnew file mode 100644 index 000000000..79c6fb0e0 --- /dev/null +++ b/res/drawable/zoomout_00019.png diff --git a/res/drawable/zoomout_00020.png b/res/drawable/zoomout_00020.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00020.png diff --git a/res/drawable/zoomout_00021.png b/res/drawable/zoomout_00021.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00021.png diff --git a/res/drawable/zoomout_00022.png b/res/drawable/zoomout_00022.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00022.png diff --git a/res/drawable/zoomout_00023.png b/res/drawable/zoomout_00023.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00023.png diff --git a/res/drawable/zoomout_00024.png b/res/drawable/zoomout_00024.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00024.png diff --git a/res/drawable/zoomout_00025.png b/res/drawable/zoomout_00025.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00025.png diff --git a/res/drawable/zoomout_00026.png b/res/drawable/zoomout_00026.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00026.png diff --git a/res/drawable/zoomout_00027.png b/res/drawable/zoomout_00027.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00027.png diff --git a/res/drawable/zoomout_00028.png b/res/drawable/zoomout_00028.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00028.png diff --git a/res/drawable/zoomout_00029.png b/res/drawable/zoomout_00029.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00029.png diff --git a/res/drawable/zoomout_00030.png b/res/drawable/zoomout_00030.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00030.png diff --git a/res/drawable/zoomout_00031.png b/res/drawable/zoomout_00031.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00031.png diff --git a/res/drawable/zoomout_00032.png b/res/drawable/zoomout_00032.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00032.png diff --git a/res/drawable/zoomout_00033.png b/res/drawable/zoomout_00033.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00033.png diff --git a/res/drawable/zoomout_00034.png b/res/drawable/zoomout_00034.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00034.png diff --git a/res/drawable/zoomout_00035.png b/res/drawable/zoomout_00035.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00035.png diff --git a/res/drawable/zoomout_00036.png b/res/drawable/zoomout_00036.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00036.png diff --git a/res/drawable/zoomout_00037.png b/res/drawable/zoomout_00037.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00037.png diff --git a/res/drawable/zoomout_00038.png b/res/drawable/zoomout_00038.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00038.png diff --git a/res/drawable/zoomout_00039.png b/res/drawable/zoomout_00039.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00039.png diff --git a/res/drawable/zoomout_00040.png b/res/drawable/zoomout_00040.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00040.png diff --git a/res/drawable/zoomout_00041.png b/res/drawable/zoomout_00041.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00041.png diff --git a/res/drawable/zoomout_00042.png b/res/drawable/zoomout_00042.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00042.png diff --git a/res/drawable/zoomout_00043.png b/res/drawable/zoomout_00043.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00043.png diff --git a/res/drawable/zoomout_00044.png b/res/drawable/zoomout_00044.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00044.png diff --git a/res/drawable/zoomout_00045.png b/res/drawable/zoomout_00045.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00045.png diff --git a/res/drawable/zoomout_00046.png b/res/drawable/zoomout_00046.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00046.png diff --git a/res/drawable/zoomout_00047.png b/res/drawable/zoomout_00047.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00047.png diff --git a/res/drawable/zoomout_00048.png b/res/drawable/zoomout_00048.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00048.png diff --git a/res/drawable/zoomout_00049.png b/res/drawable/zoomout_00049.png Binary files differnew file mode 100644 index 000000000..b4be2aa37 --- /dev/null +++ b/res/drawable/zoomout_00049.png diff --git a/res/layout/overview_panel.xml b/res/layout/overview_panel.xml index 479b622ec..b6707417c 100644 --- a/res/layout/overview_panel.xml +++ b/res/layout/overview_panel.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2013 The Android Open Source Project +<!-- + Copyright (C) 2013 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. @@ -13,138 +14,37 @@ See the License for the specific language governing permissions and limitations under the License. --> -<FrameLayout - xmlns:android="http://schemas.android.com/apk/res/android" + +<com.android.launcher3.SlidingUpPanelLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:slidingpanel="http://schemas.android.com/apk/res/com.android.launcher3" + android:id="@+id/sliding_layout" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:gravity="bottom" + slidingpanel:overlay="false" + slidingpanel:panelHeight="@dimen/sliding_panel_padding" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" + android:id="@+id/default_home_screen_panel" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="horizontal" - android:layout_gravity="center_horizontal|top" - android:paddingTop="@dimen/overview_panel_top_padding"> + android:layout_gravity="center_horizontal" + android:background="@color/settings_bg_color" + android:paddingTop="@dimen/overview_panel_top_padding" > - <TextView + <ImageView android:id="@+id/default_screen_button" + android:layout_width="match_parent" + android:layout_height="@dimen/app_icon_size" android:layout_weight="1" - android:layout_width="0dp" - android:layout_height="wrap_content" + android:src="@drawable/default_screen_button" + android:scaleType="fitCenter" + android:gravity="top" android:paddingLeft="@dimen/overview_panel_button_spacing" - android:paddingRight="@dimen/overview_panel_button_spacing" - android:text="@string/default_screen_button_text" - android:drawablePadding="4dp" - android:drawableTop="@drawable/default_screen_button" - android:gravity="center_horizontal" - android:fontFamily="sans-serif-condensed" - android:textAllCaps="true" - android:textSize="12sp" /> - - <TextView - android:id="@+id/transition_effect_button" - android:layout_weight="1" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:paddingLeft="@dimen/overview_panel_button_spacing" - android:paddingRight="@dimen/overview_panel_button_spacing" - android:text="@string/transition_effect_button_text" - android:drawablePadding="4dp" - android:drawableTop="@drawable/wallpaper_button" - android:gravity="center_horizontal" - android:fontFamily="sans-serif-condensed" - android:textAllCaps="true" - android:textSize="12sp" /> - - <TextView - android:id="@+id/icon_pack_button" - android:layout_weight="1" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:paddingLeft="@dimen/overview_panel_button_spacing" - android:paddingRight="@dimen/overview_panel_button_spacing" - android:text="@string/icon_packs_title" - android:drawablePadding="4dp" - android:drawableTop="@drawable/iconpack_button" - android:gravity="center_horizontal" - android:fontFamily="sans-serif-condensed" - android:textAllCaps="true" - android:textSize="12sp" /> - + android:paddingRight="@dimen/overview_panel_button_spacing"/> </LinearLayout> - <LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:layout_gravity="center_horizontal|bottom" - android:paddingBottom="@dimen/overview_panel_bottom_padding"> + <include layout="@layout/settings_pane" /> - <TextView - android:id="@+id/wallpaper_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:paddingLeft="@dimen/overview_panel_button_spacing" - android:paddingRight="@dimen/overview_panel_button_spacing" - android:text="@string/wallpaper_button_text" - android:drawablePadding="4dp" - android:drawableTop="@drawable/wallpaper_button" - android:gravity="center_horizontal" - android:fontFamily="sans-serif-condensed" - android:textAllCaps="true" - android:textSize="12sp" /> - <TextView - android:id="@+id/sort_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:paddingLeft="@dimen/overview_panel_button_spacing" - android:paddingRight="@dimen/overview_panel_button_spacing" - android:text="@string/sort_button_text" - android:drawablePadding="4dp" - android:drawableTop="@drawable/wallpaper_button" - android:gravity="center_horizontal" - android:fontFamily="sans-serif-condensed" - android:textAllCaps="true" - android:textSize="12sp" /> - <TextView - android:id="@+id/widget_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:paddingLeft="@dimen/overview_panel_button_spacing" - android:paddingRight="@dimen/overview_panel_button_spacing" - android:text="@string/widget_button_text" - android:drawablePadding="4dp" - android:gravity="center_horizontal" - android:drawableTop="@drawable/widget_button" - android:fontFamily="sans-serif-condensed" - android:textAllCaps="true" - android:textSize="12sp"/> - <TextView - android:id="@+id/filter_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:paddingLeft="@dimen/overview_panel_button_spacing" - android:paddingRight="@dimen/overview_panel_button_spacing" - android:text="@string/filter_button_text" - android:drawablePadding="4dp" - android:gravity="center_horizontal" - android:drawableTop="@drawable/widget_button" - android:fontFamily="sans-serif-condensed" - android:textAllCaps="true" - android:textSize="12sp"/> - <TextView - android:id="@+id/settings_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:paddingLeft="@dimen/overview_panel_button_spacing" - android:paddingRight="@dimen/overview_panel_button_spacing" - android:text="@string/settings_button_text" - android:drawablePadding="4dp" - android:gravity="center_horizontal" - android:drawableTop="@drawable/setting_button" - android:fontFamily="sans-serif-condensed" - android:textAllCaps="true" - android:textSize="12sp" /> - </LinearLayout> -</FrameLayout> +</com.android.launcher3.SlidingUpPanelLayout>
\ No newline at end of file diff --git a/res/layout/settings_pane.xml b/res/layout/settings_pane.xml new file mode 100644 index 000000000..26ee8fc26 --- /dev/null +++ b/res/layout/settings_pane.xml @@ -0,0 +1,121 @@ +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent" > + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center_horizontal|bottom" + android:background="@color/settings_bg_color" + android:orientation="vertical" + android:paddingBottom="@dimen/overview_panel_bottom_padding" > + + <LinearLayout + android:id="@+id/settings_pane_header" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingTop="@dimen/overview_panel_top_padding" > + + <ImageView + android:id="@+id/settings_drag_arrow" + android:layout_width="@dimen/overview_panel_button_spacing" + android:layout_height="@dimen/overview_panel_button_spacing" + android:layout_gravity="center_horizontal" + android:adjustViewBounds="true" + android:background="@drawable/launcheranimatedarrow_00000"/> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:orientation="horizontal" + android:paddingBottom="@dimen/overview_panel_bottom_padding" + android:paddingTop="@dimen/overview_panel_list_padding" > + + <Space + android:layout_width="0dip" + android:layout_height="1dp" + android:layout_weight="1" /> + + <TextView + android:id="@+id/wallpaper_button" + android:layout_width="0dip" + android:layout_height="wrap_content" + android:drawablePadding="4dp" + android:drawableTop="@drawable/wallpaper_button" + android:fontFamily="sans-serif-condensed" + android:gravity="center_horizontal" + android:layout_weight="2" + android:text="@string/wallpaper_button_text" + android:textAllCaps="true" + android:textSize="12sp" + android:textColor="@android:color/white" + android:maxLines="2" /> + + <Space + android:layout_width="0dip" + android:layout_height="1dp" + android:layout_weight="1" /> + + <TextView + android:id="@+id/widget_button" + android:layout_width="0dip" + android:layout_height="wrap_content" + android:drawablePadding="4dp" + android:drawableTop="@drawable/widget_button" + android:fontFamily="sans-serif-condensed" + android:gravity="center_horizontal" + android:layout_weight="2" + android:text="@string/widget_button_text" + android:textAllCaps="true" + android:textSize="12sp" + android:textColor="@android:color/white" + android:maxLines="2" /> + + <Space + android:layout_width="0dip" + android:layout_height="1dp" + android:layout_weight="1" /> + + <TextView + android:id="@+id/themes_button" + android:layout_width="0dip" + android:layout_height="wrap_content" + android:drawablePadding="4dp" + android:drawableTop="@drawable/themes_button" + android:fontFamily="sans-serif-condensed" + android:gravity="center_horizontal" + android:layout_weight="2" + android:text="@string/themes_button_text" + android:textAllCaps="true" + android:textSize="12sp" + android:textColor="@android:color/white" + android:maxLines="2" /> + + <Space + android:layout_width="0dip" + android:layout_height="1dp" + android:layout_weight="1" /> + + </LinearLayout> + </LinearLayout> + + <view + class="com.android.launcher3.list.PinnedHeaderListView" + android:id="@+id/settings_home_screen_listview" + android:layout_width="match_parent" + android:layout_height="0dip" + android:fastScrollEnabled="true" + android:layout_weight="1" /> + + </LinearLayout> + + <LinearLayout + android:id="@+id/dark_panel" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@android:color/background_dark" + android:visibility="gone" /> +</FrameLayout>
\ No newline at end of file diff --git a/res/layout/settings_pane_list_header.xml b/res/layout/settings_pane_list_header.xml new file mode 100644 index 000000000..700f5e773 --- /dev/null +++ b/res/layout/settings_pane_list_header.xml @@ -0,0 +1,19 @@ +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal|bottom" + android:background="@color/settings_bg_color" + android:paddingLeft="@dimen/overview_panel_list_padding" + android:paddingRight="@dimen/overview_panel_list_padding" + android:orientation="horizontal" > + + <TextView + android:id="@+id/item_name" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:drawablePadding="4dp" + android:fontFamily="sans-serif-condensed" + android:gravity="left" + android:textSize="16sp" + android:textColor="@color/settings_header_text"/> +</RelativeLayout> diff --git a/res/layout/settings_pane_list_item.xml b/res/layout/settings_pane_list_item.xml new file mode 100644 index 000000000..2a9d31b95 --- /dev/null +++ b/res/layout/settings_pane_list_item.xml @@ -0,0 +1,36 @@ +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal|bottom" + android:background="@drawable/listitem_bg" + android:paddingLeft="@dimen/overview_panel_list_padding" + android:paddingRight="@dimen/overview_panel_list_padding" + android:orientation="horizontal" > + + <TextView + android:id="@+id/item_name" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:drawablePadding="4dp" + android:fontFamily="sans-serif-condensed" + android:gravity="left" + android:paddingBottom="@dimen/overview_panel_list_padding" + android:paddingTop="@dimen/overview_panel_list_padding" + android:textSize="20sp" + android:textColor="@color/listitem_text"/> + + <TextView + android:id="@+id/item_state" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:drawablePadding="4dp" + android:fontFamily="sans-serif-condensed" + android:gravity="right" + android:paddingBottom="@dimen/overview_panel_list_padding" + android:paddingTop="@dimen/overview_panel_list_padding" + android:textSize="20sp" + android:textAllCaps="true" + android:textColor="@color/listitem_text" /> + +</RelativeLayout>
\ No newline at end of file diff --git a/res/layout/settings_transitions_screen.xml b/res/layout/settings_transitions_screen.xml new file mode 100644 index 000000000..23b3b37e9 --- /dev/null +++ b/res/layout/settings_transitions_screen.xml @@ -0,0 +1,51 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center_horizontal|bottom" + android:background="@color/settings_bg_color" + android:orientation="vertical" + android:paddingBottom="@dimen/overview_panel_bottom_padding" + android:paddingTop="@dimen/overview_panel_bottom_padding" + android:clickable="true" > + + <LinearLayout + android:id="@+id/transition_title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:background="@drawable/listitem_bg" + android:clickable="true" > + + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:adjustViewBounds="true" + android:src="@drawable/handle_left" /> + + <TextView + android:id="@+id/transition_effect_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/transition_effect_button_text" + android:textAllCaps="true" + android:textColor="@android:color/white" + android:layout_gravity="center_vertical" + android:textSize="16sp" /> + </LinearLayout> + + <ImageView + android:id="@+id/settings_transition_image" + android:layout_width="150dp" + android:layout_height="150dp" + android:layout_gravity="center_horizontal" + android:adjustViewBounds="true" /> + + <ListView + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/settings_transitions_list" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:listSelector="@android:color/transparent" + android:splitMotionEvents="false"/> +</LinearLayout>
\ No newline at end of file diff --git a/res/values-sw320dp/dimens.xml b/res/values-sw320dp/dimens.xml index bcc465e94..9958136ab 100644 --- a/res/values-sw320dp/dimens.xml +++ b/res/values-sw320dp/dimens.xml @@ -16,6 +16,8 @@ <resources> <!-- Workspace --> - <dimen name="overview_panel_bottom_padding">35dp</dimen> - <dimen name="overview_panel_button_spacing">15dp</dimen> + <dimen name="overview_panel_bottom_padding">50dp</dimen> + <dimen name="overview_panel_button_spacing">32dp</dimen> + <dimen name="overview_panel_side_padding">28dp</dimen> + <dimen name="overview_panel_list_padding">16dp</dimen> </resources> diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml index 8d6c7f4e3..cba5ac799 100644 --- a/res/values-sw600dp/dimens.xml +++ b/res/values-sw600dp/dimens.xml @@ -17,6 +17,9 @@ <resources> <dimen name="app_icon_size">64dp</dimen> +<!-- Workspace --> + <dimen name="overview_panel_button_spacing">22dp</dimen> + <!-- AppsCustomize --> <dimen name="apps_customize_tab_bar_height">60dp</dimen> <dimen name="apps_customize_tab_bar_margin_top">8dp</dimen> diff --git a/res/values/attrs.xml b/res/values/attrs.xml index a2d3a83e0..a2266f7ef 100644 --- a/res/values/attrs.xml +++ b/res/values/attrs.xml @@ -157,4 +157,15 @@ </declare-styleable> <declare-styleable name="CustomClingText"> </declare-styleable> + + <declare-styleable name="SlidingUpPanelLayout"> + <attr name="panelHeight" format="dimension" /> + <attr name="shadowHeight" format="dimension" /> + <attr name="paralaxOffset" format="dimension" /> + <attr name="fadeColor" format="color" /> + <attr name="flingVelocity" format="integer" /> + <attr name="dragView" format="reference" /> + <attr name="overlay" format="boolean"/> + </declare-styleable> + </resources> diff --git a/res/values/cm_arrays.xml b/res/values/cm_arrays.xml index 502b7a65c..2320f1805 100644 --- a/res/values/cm_arrays.xml +++ b/res/values/cm_arrays.xml @@ -58,4 +58,20 @@ <item>carousel</item> <item>overview</item> </string-array> -</resources> + <string-array name="transition_effect_drawables" translatable="false"> + <item>@drawable/transition_none</item> + <item>@drawable/transition_zoomin</item> + <item>@drawable/transition_zoomout</item> + <item>@drawable/transition_rotateup</item> + <item>@drawable/transition_rotatedown</item> + <item>@drawable/transition_cubein</item> + <item>@drawable/transition_cubeout</item> + <item>@drawable/transition_stack</item> + <item>@drawable/transition_accordion</item> + <item>@drawable/transition_flip</item> + <item>@drawable/transition_cylinderin</item> + <item>@drawable/transition_cylinderout</item> + <item>@drawable/transition_carousel</item> + <item>@drawable/transition_overview</item> + </string-array> +</resources>
\ No newline at end of file diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index d4effcc40..267d65a18 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -99,4 +99,25 @@ <!-- Hidden apps --> <string name="hidden_apps_title">Hidden apps</string> + + <!-- Settings --> + <string name="launcher_settings">LAUNCHER SETTINGS</string> + <string name="home_screen_settings">HOME SCREEN SETTINGS</string> + <string name="drawer_settings">DRAWER SETTINGS</string> + <!-- Text for page scroll --> + <string name="page_scroll_effect_text">Scroll effect</string> + <!-- Text for drawer scroll --> + <string name="drawer_scroll_effect_text">Scroll effect</string> + <!-- Text for drawer sorting --> + <string name="drawer_sorting_text">Sorting mode</string> + <!-- Text for home screen search --> + <string name="home_screen_search_text">Search bar</string> + <!-- Text for larger icons --> + <string name="larger_icons_text">Larger icons</string> + <!-- Text for hiding icon labels --> + <string name="hide_icon_labels">Hide icon labels</string> + <!-- Settings states --> + <string name="setting_state_on">ON</string> + <string name="setting_state_off">OFF</string> + <string name="themes_button_text">Themes</string> </resources> diff --git a/res/values/colors.xml b/res/values/colors.xml index dc35a3f68..b55fb1704 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -35,6 +35,12 @@ <color name="wallpaper_picker_translucent_gray">#66000000</color> <color name="folder_items_text_color">#FF333333</color> <color name="outline_color">#FFFFFFFF</color> - + <color name="first_run_cling_circle_background_color">#64b1ea</color> + + <color name="settings_header_text">#FF6cd2ea</color> + <color name="settings_bg_color">#FF485459</color> + <color name="settings_bg_header_color">#FFb2b0ab</color> + <color name="settings_bg_selected_color">#26000000</color> + <color name="settings_transition_selected_color">#50000000</color> </resources> diff --git a/res/values/config.xml b/res/values/config.xml index b7880fe1f..9ad34b52b 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -20,7 +20,7 @@ <!-- Out of 100, the percent to shrink the workspace during spring loaded mode. --> <integer name="config_workspaceSpringLoadShrinkPercentage">80</integer> <!-- Out of 100, the percent to shrink the workspace during overview mode. --> - <integer name="config_workspaceOverviewShrinkPercentage">58</integer> + <integer name="config_workspaceOverviewShrinkPercentage">90</integer> <!-- Fade/zoom in/out duration & scale in the AllApps transition. Note: This should be less than the workspaceShrinkTime as they happen together. --> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 3b692a1d1..421222673 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -44,7 +44,9 @@ <dimen name="overview_panel_top_padding">20dp</dimen> <dimen name="overview_panel_bottom_padding">50dp</dimen> <dimen name="overview_panel_button_spacing">30dp</dimen> - <dimen name="overview_mode_page_offset">130dp</dimen> + <dimen name="overview_mode_page_offset">60dp</dimen> + <dimen name="sliding_panel_padding">175dp</dimen> + <dimen name="overview_scaling_padding">50dp</dimen> <!-- QSB --> <dimen name="toolbar_button_vertical_padding">4dip</dimen> @@ -98,4 +100,7 @@ <!-- The amount that the preview contents are inset from the preview background --> <dimen name="folder_preview_padding">4dp</dimen> <dimen name="folder_name_padding">10dp</dimen> + + <!-- Settings Pane dimen --> + <dimen name="settings_pane_handle">48dp</dimen> </resources> diff --git a/src/com/android/launcher3/AppsCustomizeLayout.java b/src/com/android/launcher3/AppsCustomizeLayout.java index ea1c36a9c..7bcb90f18 100644 --- a/src/com/android/launcher3/AppsCustomizeLayout.java +++ b/src/com/android/launcher3/AppsCustomizeLayout.java @@ -67,12 +67,12 @@ public class AppsCustomizeLayout extends FrameLayout implements LauncherTransiti mContent = (FrameLayout) findViewById(R.id.apps_customize_content); if (mAppsCustomizePane == null) throw new Resources.NotFoundException(); - findViewById(R.id.page_indicator).setOnClickListener(new OnClickListener() { + /*findViewById(R.id.page_indicator).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mAppsCustomizePane.enterOverviewMode(); } - }); + });*/ } public boolean onInterceptTouchEvent(MotionEvent ev) { diff --git a/src/com/android/launcher3/DragLayer.java b/src/com/android/launcher3/DragLayer.java index 401f4ed52..54f489d76 100644 --- a/src/com/android/launcher3/DragLayer.java +++ b/src/com/android/launcher3/DragLayer.java @@ -107,6 +107,9 @@ public class DragLayer extends FrameLayout implements ViewGroup.OnHierarchyChang for (int i = 0; i < n; i++) { final View child = getChildAt(i); final FrameLayout.LayoutParams flp = (FrameLayout.LayoutParams) child.getLayoutParams(); + if (child.getId() == R.id.overview_panel) { + continue; + } if (child instanceof Insettable) { ((Insettable)child).setInsets(insets); } else { diff --git a/src/com/android/launcher3/DynamicGrid.java b/src/com/android/launcher3/DynamicGrid.java index 6457fdc31..574e9e566 100644 --- a/src/com/android/launcher3/DynamicGrid.java +++ b/src/com/android/launcher3/DynamicGrid.java @@ -377,6 +377,11 @@ class DeviceProfile { } public void layout(Launcher launcher) { + // Update search bar for live settings + searchBarVisible = SettingsProvider.getBoolean(launcher, SettingsProvider.SETTINGS_UI_HOMESCREEN_SEARCH, + R.bool.preferences_interface_homescreen_search_default); + searchBarSpaceHeightPx = searchBarHeightPx + (searchBarVisible ? 2 * edgeMarginPx : 0); + FrameLayout.LayoutParams lp; Resources res = launcher.getResources(); boolean hasVerticalBarLayout = isVerticalBarLayout(); @@ -493,7 +498,7 @@ class DeviceProfile { lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM; lp.width = LayoutParams.WRAP_CONTENT; lp.height = LayoutParams.WRAP_CONTENT; - lp.bottomMargin = hotseatBarHeightPx; + lp.bottomMargin = Math.max(hotseatBarHeightPx, lp.bottomMargin); pageIndicator.setLayoutParams(lp); } } diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 416c80641..4c63b9c83 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -29,8 +29,10 @@ import android.animation.ValueAnimator.AnimatorUpdateListener; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityOptions; -import android.app.AlertDialog; import android.app.Dialog; +import android.app.Fragment; +import android.app.FragmentManager; +import android.app.FragmentTransaction; import android.app.SearchManager; import android.appwidget.AppWidgetHostView; import android.appwidget.AppWidgetManager; @@ -41,7 +43,6 @@ import android.content.ComponentCallbacks2; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; @@ -83,7 +84,6 @@ import android.view.MenuItem; import android.view.MotionEvent; import android.view.Surface; import android.view.View; -import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.view.ViewTreeObserver; @@ -102,6 +102,7 @@ import android.widget.TextView; import android.widget.Toast; import com.android.launcher3.DropTarget.DragObject; +import com.android.launcher3.PagedView.TransitionEffect; import com.android.launcher3.settings.SettingsActivity; import com.android.launcher3.settings.SettingsProvider; @@ -129,6 +130,8 @@ public class Launcher extends Activity static final String TAG = "Launcher"; static final boolean LOGD = false; + DeviceProfile mGrid; + static final boolean PROFILE_STARTUP = false; static final boolean DEBUG_WIDGETS = false; static final boolean DEBUG_STRICT_MODE = false; @@ -143,6 +146,8 @@ public class Launcher extends Activity private static final int REQUEST_PICK_WALLPAPER = 10; private static final int REQUEST_BIND_APPWIDGET = 11; + public static final int REQUEST_TRANSITION_EFFECTS = 14; + static final int REQUEST_PICK_ICON = 13; /** @@ -233,6 +238,7 @@ public class Launcher extends Activity private DragLayer mDragLayer; private DragController mDragController; private View mWeightWatcher; + private TransitionEffectsFragment mTransitionEffectsFragment; private AppWidgetManager mAppWidgetManager; private LauncherAppWidgetHost mAppWidgetHost; @@ -246,6 +252,8 @@ public class Launcher extends Activity private Hotseat mHotseat; private View mOverviewPanel; + private View mDarkPanel; + OverviewSettingsPanel mOverviewSettingsPanel; private View mAllAppsButton; @@ -368,6 +376,19 @@ public class Launcher extends Activity private Stats mStats; + public Animator.AnimatorListener mAnimatorListener = new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator arg0) {} + @Override + public void onAnimationRepeat(Animator arg0) {} + @Override + public void onAnimationEnd(Animator arg0) { + mDarkPanel.setVisibility(View.GONE); + } + @Override + public void onAnimationCancel(Animator arg0) {} + }; + private static boolean isPropertyEnabled(String propertyName) { return Log.isLoggable(propertyName, Log.VERBOSE); } @@ -391,35 +412,12 @@ public class Launcher extends Activity super.onCreate(savedInstanceState); - LauncherAppState.setApplicationContext(getApplicationContext()); - LauncherAppState app = LauncherAppState.getInstance(); - - mHideIconLabels = SettingsProvider.getBoolean(this, - SettingsProvider.SETTINGS_UI_HOMESCREEN_HIDE_ICON_LABELS, - R.bool.preferences_interface_homescreen_hide_icon_labels_default); - - // Determine the dynamic grid properties - Point smallestSize = new Point(); - Point largestSize = new Point(); - Point realSize = new Point(); - Display display = getWindowManager().getDefaultDisplay(); - display.getCurrentSizeRange(smallestSize, largestSize); - display.getRealSize(realSize); - DisplayMetrics dm = new DisplayMetrics(); - display.getMetrics(dm); - // Lazy-initialize the dynamic grid - DeviceProfile grid = app.initDynamicGrid(this, - Math.min(smallestSize.x, smallestSize.y), - Math.min(largestSize.x, largestSize.y), - realSize.x, realSize.y, - dm.widthPixels, dm.heightPixels); + initializeDynamicGrid(); // the LauncherApplication should call this, but in case of Instrumentation it might not be present yet mSharedPrefs = getSharedPreferences(LauncherAppState.getSharedPreferencesKey(), Context.MODE_PRIVATE); - mModel = app.setLauncher(this); - mIconCache = app.getIconCache(); - mIconCache.flushInvalidIcons(grid); + mDragController = new DragController(this); mInflater = getLayoutInflater(); @@ -445,7 +443,7 @@ public class Launcher extends Activity setContentView(R.layout.launcher); setupViews(); - grid.layout(this); + mGrid.layout(this); registerContentObservers(); @@ -491,6 +489,35 @@ public class Launcher extends Activity showFirstRunCling(); } + private void initializeDynamicGrid() { + LauncherAppState.setApplicationContext(getApplicationContext()); + LauncherAppState app = LauncherAppState.getInstance(); + + mHideIconLabels = SettingsProvider.getBoolean(this, + SettingsProvider.SETTINGS_UI_HOMESCREEN_HIDE_ICON_LABELS, + R.bool.preferences_interface_homescreen_hide_icon_labels_default); + + // Determine the dynamic grid properties + Point smallestSize = new Point(); + Point largestSize = new Point(); + Point realSize = new Point(); + Display display = getWindowManager().getDefaultDisplay(); + display.getCurrentSizeRange(smallestSize, largestSize); + display.getRealSize(realSize); + DisplayMetrics dm = new DisplayMetrics(); + display.getMetrics(dm); + // Lazy-initialize the dynamic grid + mGrid = app.initDynamicGrid(this, + Math.min(smallestSize.x, smallestSize.y), + Math.min(largestSize.x, largestSize.y), + realSize.x, realSize.y, + dm.widthPixels, dm.heightPixels); + + mModel = app.setLauncher(this); + mIconCache = app.getIconCache(); + mIconCache.flushInvalidIcons(mGrid); + } + protected void onUserLeaveHint() { super.onUserLeaveHint(); sPausedFromUserAction = true; @@ -937,6 +964,13 @@ public class Launcher extends Activity mWorkspace.updateInteractionForState(); mWorkspace.onResume(); mAppsCustomizeContent.onResume(); + + //Close out TransitionEffects Fragment + Fragment f = getFragmentManager().findFragmentByTag( + TransitionEffectsFragment.TRANSITION_EFFECTS_FRAGMENT); + if (f != null) { + mTransitionEffectsFragment.setEffect(); + } } @Override @@ -954,6 +988,9 @@ public class Launcher extends Activity if (mWorkspace.getCustomContentCallbacks() != null) { mWorkspace.getCustomContentCallbacks().onHide(); } + + //Reset the OverviewPanel position + ((SlidingUpPanelLayout) mOverviewPanel).collapsePane(); } protected void onFinishBindingItems() { @@ -992,17 +1029,11 @@ public class Launcher extends Activity public void onScrollProgressChanged(float progress); } - protected void startSettings() { - Intent settings; - // If we are on CyanogenMod the launcher settings are accessed from system settings. - if (!getPackageManager().hasSystemFeature("com.cyanogenmod.android")) { - settings = new Intent().setClass(this, SettingsActivity.class); - settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK - | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); - } else { - settings = new Intent(android.provider.Settings.ACTION_SETTINGS); - } + protected void startThemeSettings() { + Intent settings = new Intent().setClassName(OverviewSettingsPanel.ANDROID_SETTINGS, + OverviewSettingsPanel.THEME_SETTINGS); startActivity(settings); + if (mWorkspace.isInOverviewMode()) { mWorkspace.exitOverviewMode(false); } else if (mAppsCustomizeContent.isInOverviewMode()) { @@ -1038,89 +1069,60 @@ public class Launcher extends Activity mAppsCustomizeContent.setSortMode(AppsCustomizePagedView.SortMode.LaunchCount); break; } + mOverviewSettingsPanel.notifyDataSetInvalidated(); return true; } }); popupMenu.show(); } - public void onClickTransitionEffectButton(View v) { - AlertDialog.Builder builder = new AlertDialog.Builder(this); + public void onClickTransitionEffectButton(View v, final boolean pageOrDrawer) { + Bundle bundle = new Bundle(); + bundle.putBoolean(TransitionEffectsFragment.PAGE_OR_DRAWER_SCROLL_SELECT, + pageOrDrawer); + FragmentManager fragmentManager = getFragmentManager(); + FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); - // Load values - final PagedView pagedView = isAllAppsVisible() ? mAppsCustomizeContent : mWorkspace; - final PagedView.TransitionEffect oldEffect = pagedView.getTransitionEffect(); - final String oldEffectName = oldEffect != null ? oldEffect.getName() : - PagedView.TransitionEffect.TRANSITION_EFFECT_NONE; - final String[] titles = getResources().getStringArray(R.array.transition_effect_entries); - final String[] values = getResources().getStringArray(R.array.transition_effect_values); - - int selected = -1; - for (int i = values.length - 1; i >= 0; i--) { - if (values[i].equals(oldEffectName)) { - selected = i; - break; - } - } - - // Create title view with overflow menu - View customTitle = getLayoutInflater().inflate(R.layout.dialog_title_overflow_menu, null); - TextView title = (TextView) customTitle.findViewById(android.R.id.title); - title.setText(R.string.transition_effect_button_text); + mTransitionEffectsFragment = new TransitionEffectsFragment(); + mTransitionEffectsFragment.setArguments(bundle); + fragmentTransaction.setCustomAnimations(0, 0); + fragmentTransaction.replace(R.id.launcher, mTransitionEffectsFragment, + TransitionEffectsFragment.TRANSITION_EFFECTS_FRAGMENT); + fragmentTransaction.commit(); + } - View overflowMenu = customTitle.findViewById(R.id.overflow_menu_button); - overflowMenu.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - onClickTransitionEffectOverflowMenuButton(v); - } - }); + public void setTransitionEffect(boolean pageOrDrawer, String newTransitionEffect) { + String mSettingsProviderValue = pageOrDrawer ? + SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_TRANSITION_EFFECT + : SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_TRANSITION_EFFECT; + PagedView pagedView = pageOrDrawer ? mAppsCustomizeContent : mWorkspace; - builder.setCustomTitle(customTitle); + SettingsProvider + .get(getApplicationContext()) + .edit() + .putString(mSettingsProviderValue, + newTransitionEffect).commit(); + TransitionEffect.setFromString(pagedView, newTransitionEffect); - builder.setSingleChoiceItems(titles, selected, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - String effect = values[which]; - PagedView.TransitionEffect.setFromString(pagedView, effect); - - // Show the changes immediately - final int currentPage = pagedView.getNextPage(); - final int nextPage = currentPage + (currentPage != pagedView.getPageCount() - 1 ? 1 : -1); - pagedView.snapToPageImmediately(currentPage); - pagedView.snapToPage(nextPage, new Runnable() { - @Override - public void run() { - pagedView.snapToPage(currentPage); - } - }); + // Reset Settings Changed + SharedPreferences.Editor editor = mSharedPrefs.edit(); + editor.putBoolean(SettingsProvider.SETTINGS_CHANGED, false); + editor.commit(); - SettingsProvider.get(Launcher.this).edit() - .putString(!isAllAppsVisible() ? - SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_TRANSITION_EFFECT : - SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_TRANSITION_EFFECT, effect) - .commit(); - } - }); + mOverviewSettingsPanel.notifyDataSetInvalidated(); - if (isAllAppsVisible()) { - mAppsCustomizeContent.exitOverviewMode(true); - } else { - mWorkspace.exitOverviewMode(true); - } + FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); + fragmentTransaction + .setCustomAnimations(0, R.anim.exit_out_right); + fragmentTransaction + .remove(mTransitionEffectsFragment).commit(); - builder.setPositiveButton(android.R.string.ok, null) - .setOnDismissListener(new DialogInterface.OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - mTransitionEffectDialog = null; - } - }); - mTransitionEffectDialog = builder.create(); - mTransitionEffectDialog.show(); - mTransitionEffectDialog.setCanceledOnTouchOutside(true); - mTransitionEffectDialog.getWindow().getDecorView().setAlpha(0.6f); + mDarkPanel.setVisibility(View.VISIBLE); + ObjectAnimator anim = ObjectAnimator.ofFloat( + mDarkPanel, "alpha", 0.3f, 0.0f); + anim.start(); + anim.addListener(mAnimatorListener); } public void onClickTransitionEffectOverflowMenuButton(View v) { @@ -1348,78 +1350,11 @@ public class Launcher extends Activity } mOverviewPanel = findViewById(R.id.overview_panel); - mOverviewPanel.setAlpha(0f); - View widgetButton = findViewById(R.id.widget_button); - widgetButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - showAllApps(true, AppsCustomizePagedView.ContentType.Widgets, true); - } - }); - widgetButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View wallpaperButton = findViewById(R.id.wallpaper_button); - wallpaperButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - startWallpaper(); - } - }); - wallpaperButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View settingsButton = findViewById(R.id.settings_button); - settingsButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - startSettings(); - } - }); - settingsButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View defaultScreenButton = findViewById(R.id.default_screen_button); - defaultScreenButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - mWorkspace.onClickDefaultScreenButton(); - } - }); - defaultScreenButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View transitionEffectButton = findViewById(R.id.transition_effect_button); - transitionEffectButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - onClickTransitionEffectButton(arg0); - } - }); - transitionEffectButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View iconPackButton = findViewById(R.id.icon_pack_button); - iconPackButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - IconPackHelper.pickIconPack(Launcher.this, false); - } - }); - iconPackButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View sortButton = findViewById(R.id.sort_button); - sortButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - onClickSortModeButton(arg0); - } - }); - sortButton.setOnTouchListener(getHapticFeedbackTouchListener()); - - View filterButton = findViewById(R.id.filter_button); - filterButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - - } - }); - filterButton.setOnTouchListener(getHapticFeedbackTouchListener()); + mOverviewSettingsPanel = new OverviewSettingsPanel( + this, mOverviewPanel); + mOverviewSettingsPanel.initializeAdapter(); + mOverviewSettingsPanel.initializeViews(); + mDarkPanel = ((SlidingUpPanelLayout) mOverviewPanel).findViewById(R.id.dark_panel); // Setup the workspace mWorkspace.setHapticFeedbackEnabled(false); @@ -2128,12 +2063,6 @@ public class Launcher extends Activity } else { mWorkspace.exitOverviewMode(true); } - } else { - if (!mAppsCustomizeContent.isInOverviewMode()) { - mAppsCustomizeContent.enterOverviewMode(); - } else { - mAppsCustomizeContent.exitOverviewMode(true); - } } return false; } @@ -2380,7 +2309,13 @@ public class Launcher extends Activity } } } else if (mWorkspace.isInOverviewMode()) { - mWorkspace.exitOverviewMode(true); + Fragment f = getFragmentManager().findFragmentByTag( + TransitionEffectsFragment.TRANSITION_EFFECTS_FRAGMENT); + if (f != null) { + mTransitionEffectsFragment.setEffect(); + } else { + mWorkspace.exitOverviewMode(true); + } } else if (mWorkspace.getOpenFolder() != null) { Folder openFolder = mWorkspace.getOpenFolder(); if (openFolder.isEditingName()) { @@ -2592,7 +2527,7 @@ public class Launcher extends Activity void startApplicationDetailsActivity(ComponentName componentName) { String packageName = componentName.getPackageName(); - Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, + Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.fromParts("package", packageName, null)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); startActivitySafely(null, intent, "startApplicationDetailsActivity"); @@ -2915,6 +2850,9 @@ public class Launcher extends Activity View getOverviewPanel() { return mOverviewPanel; } + View getDarkPanel() { + return mDarkPanel; + } SearchDropTargetBar getSearchBar() { return mSearchDropTargetBar; } @@ -2938,35 +2876,12 @@ public class Launcher extends Activity return mWorkspace; } - public void updateOverviewPanel() { - View defaultScreenButton = mOverviewPanel.findViewById(R.id.default_screen_button); - View transitionEffectButton = mOverviewPanel.findViewById(R.id.transition_effect_button); - View widgetButton = mOverviewPanel.findViewById(R.id.widget_button); - View wallpaperButton = mOverviewPanel.findViewById(R.id.wallpaper_button); - View sortButton = mOverviewPanel.findViewById(R.id.sort_button); - View filterButton = mOverviewPanel.findViewById(R.id.filter_button); - View iconPackButton = findViewById(R.id.icon_pack_button); - - PagedView pagedView = !isAllAppsVisible() ? mWorkspace : mAppsCustomizeContent; - - defaultScreenButton.setVisibility((!isAllAppsVisible() && pagedView.getPageCount() > 1) ? View.VISIBLE : View.GONE); - transitionEffectButton.setVisibility(pagedView.getPageCount() > 1 ? View.VISIBLE : View.GONE); - widgetButton.setVisibility(!isAllAppsVisible() ? View.VISIBLE : View.GONE); - wallpaperButton.setVisibility(!isAllAppsVisible() ? View.VISIBLE : View.GONE); - sortButton.setVisibility(isAllAppsVisible() ? View.VISIBLE : View.GONE); - // TODO: implement filtering - // filterButton.setVisibility(isAllAppsVisible() ? View.VISIBLE : View.GONE); - filterButton.setVisibility(View.GONE); - - boolean isVisible = !isAllAppsVisible(); - if (isVisible) { - int numIconPacks = IconPackHelper.getSupportedPackages(this).size(); - isVisible = numIconPacks > 0; - } - iconPackButton.setVisibility(isVisible ? View.VISIBLE : View.GONE); + protected AppsCustomizePagedView getAppsCustomizeContent() { + return mAppsCustomizeContent; + } - // Make sure overview panel is drawn above apps customize - mOverviewPanel.bringToFront(); + public void updateOverviewPanel() { + mOverviewSettingsPanel.update(); } public boolean isAllAppsVisible() { @@ -4782,6 +4697,41 @@ public class Launcher extends Activity }.start(); } } + + public AppsCustomizePagedView.SortMode getAppsCustomizeContentSortMode () { + return mAppsCustomizeContent.getSortMode(); + } + + public boolean shouldShowSearchBar() { + return mWorkspace.getShowSearchBar(); + } + + public boolean shouldHideWorkspaceIconLables() { + return mWorkspace.getHideIconLables(); + } + + public String getWorkspaceTransitionEffect() { + TransitionEffect effect = mWorkspace.getTransitionEffect(); + return effect == null ? TransitionEffect.TRANSITION_EFFECT_NONE : effect.getName(); + } + + public String getAppsCustomizeTransitionEffect() { + TransitionEffect effect = mAppsCustomizeContent.getTransitionEffect(); + return effect == null ? TransitionEffect.TRANSITION_EFFECT_NONE : effect.getName(); + } + + public void updateDynamicGrid() { + mSearchDropTargetBar.setupQSB(this); + mSearchDropTargetBar.hideSearchBar(false); + + initializeDynamicGrid(); + + mGrid.layout(this); + mWorkspace.showOutlines(); + + // Synchronized reload + mModel.startLoader(true, mWorkspace.getCurrentPage()); + } } interface LauncherTransitionable { diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java index cba0d61ac..4cf64edd8 100644 --- a/src/com/android/launcher3/LauncherAppState.java +++ b/src/com/android/launcher3/LauncherAppState.java @@ -189,12 +189,11 @@ public class LauncherAppState { DeviceProfile initDynamicGrid(Context context, int minWidth, int minHeight, int width, int height, int availableWidth, int availableHeight) { - if (mDynamicGrid == null) { - mDynamicGrid = new DynamicGrid(context, - context.getResources(), - minWidth, minHeight, width, height, - availableWidth, availableHeight); - } + + mDynamicGrid = new DynamicGrid(context, + context.getResources(), + minWidth, minHeight, width, height, + availableWidth, availableHeight); // Update the icon size DeviceProfile grid = mDynamicGrid.getDeviceProfile(); diff --git a/src/com/android/launcher3/OverviewSettingsPanel.java b/src/com/android/launcher3/OverviewSettingsPanel.java new file mode 100644 index 000000000..718acbcbf --- /dev/null +++ b/src/com/android/launcher3/OverviewSettingsPanel.java @@ -0,0 +1,203 @@ +package com.android.launcher3; + +import android.content.res.Resources; +import android.database.Cursor; +import android.database.MatrixCursor; +import android.graphics.drawable.AnimationDrawable; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.ImageView; +import android.widget.ListView; +import com.android.launcher3.list.PinnedHeaderListView; +import com.android.launcher3.list.SettingsPinnedHeaderAdapter; + +public class OverviewSettingsPanel { + public static final String ANDROID_SETTINGS = "org.cyanogenmod.theme.chooser"; + public static final String THEME_SETTINGS = + "org.cyanogenmod.theme.chooser.ChooserActivity"; + public static final int HOME_SETTINGS_POSITION = 0; + public static final int DRAWER_SETTINGS_POSITION = 1; + + private Launcher mLauncher; + private View mOverviewPanel; + private SettingsPinnedHeaderAdapter mSettingsAdapter; + private PinnedHeaderListView mListView; + + OverviewSettingsPanel(Launcher launcher, View overviewPanel) { + mLauncher = launcher; + mOverviewPanel = overviewPanel; + } + + // One time initialization of the SettingsPinnedHeaderAdapter + public void initializeAdapter() { + // Settings pane Listview + mListView = (PinnedHeaderListView) mLauncher + .findViewById(R.id.settings_home_screen_listview); + mListView.setOverScrollMode(ListView.OVER_SCROLL_NEVER); + Resources res = mLauncher.getResources(); + String[] headers = new String[] { + res.getString(R.string.home_screen_settings), + res.getString(R.string.drawer_settings)}; + String[] values = new String[] { + res.getString(R.string.home_screen_search_text), + res.getString(R.string.page_scroll_effect_text), + res.getString(R.string.larger_icons_text), + res.getString(R.string.hide_icon_labels)}; + String[] valuesDrawer = new String[] { + res.getString(R.string.drawer_scroll_effect_text), + res.getString(R.string.drawer_sorting_text), + res.getString(R.string.hide_icon_labels)}; + + mSettingsAdapter = new SettingsPinnedHeaderAdapter(mLauncher); + mSettingsAdapter.setHeaders(headers); + mSettingsAdapter.addPartition(false, true); + mSettingsAdapter.addPartition(false, true); + mSettingsAdapter.mPinnedHeaderCount = headers.length; + + mSettingsAdapter.changeCursor(0, createCursor(headers[0], values)); + mSettingsAdapter.changeCursor(1, createCursor(headers[1], valuesDrawer)); + mListView.setAdapter(mSettingsAdapter); + } + + private Cursor createCursor(String header, String[] values) { + MatrixCursor cursor = new MatrixCursor(new String[]{"_id", header}); + int count = values.length; + for (int i = 0; i < count; i++) { + cursor.addRow(new Object[]{i, values[i]}); + } + return cursor; + } + + // One time View setup + public void initializeViews() { + mOverviewPanel.setAlpha(0f); + mOverviewPanel + .setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); + ((SlidingUpPanelLayout) mOverviewPanel) + .setPanelSlideListener(new SettingsSimplePanelSlideListener()); + + //Quick Settings Buttons + View widgetButton = mLauncher.findViewById(R.id.widget_button); + widgetButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View arg0) { + mLauncher.showAllApps(true, AppsCustomizePagedView.ContentType.Widgets, true); + } + }); + widgetButton.setOnTouchListener(mLauncher.getHapticFeedbackTouchListener()); + + View wallpaperButton = mLauncher.findViewById(R.id.wallpaper_button); + wallpaperButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View arg0) { + mLauncher.startWallpaper(); + } + }); + wallpaperButton.setOnTouchListener(mLauncher.getHapticFeedbackTouchListener()); + + View themesButton = mLauncher.findViewById(R.id.themes_button); + themesButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View arg0) { + mLauncher.startThemeSettings(); + } + }); + themesButton.setOnTouchListener(mLauncher.getHapticFeedbackTouchListener()); + + View defaultScreenButton = mLauncher.findViewById(R.id.default_screen_button); + defaultScreenButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View arg0) { + mLauncher.getWorkspace().onClickDefaultScreenButton(); + } + }); + + defaultScreenButton.setOnTouchListener(mLauncher.getHapticFeedbackTouchListener()); + + //Handle + View v = mOverviewPanel.findViewById(R.id.settings_pane_header); + ((SlidingUpPanelLayout) mOverviewPanel).setEnableDragViewTouchEvents(true); + ((SlidingUpPanelLayout) mOverviewPanel).setDragView(v); + v.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + if (((SlidingUpPanelLayout) mOverviewPanel).isExpanded()) { + ((SlidingUpPanelLayout) mOverviewPanel).collapsePane(); + } else { + ((SlidingUpPanelLayout) mOverviewPanel).expandPane(); + } + } + }); + } + + public void update() { + Resources res = mLauncher.getResources(); + View widgetButton = mOverviewPanel.findViewById(R.id.widget_button); + View wallpaperButton = mOverviewPanel + .findViewById(R.id.wallpaper_button); + View themesButton = mOverviewPanel.findViewById(R.id.themes_button); + View defaultHomePanel = mOverviewPanel.findViewById(R.id.default_screen_button); + + boolean isAllAppsVisible = mLauncher.isAllAppsVisible(); + + PagedView pagedView = !isAllAppsVisible ? mLauncher.getWorkspace() + : mLauncher.getAppsCustomizeContent(); + + defaultHomePanel.setVisibility((pagedView.getPageCount() > 1) ? + View.VISIBLE : View.GONE); + + if (mLauncher.isAllAppsVisible()) { + mSettingsAdapter.changeCursor(0, createCursor(res + .getString(R.string.home_screen_settings), new String[]{})); + } else { + String[] values = new String[] { + res.getString(R.string.home_screen_search_text), + res.getString(R.string.page_scroll_effect_text), + res.getString(R.string.larger_icons_text), + res.getString(R.string.hide_icon_labels)}; + mSettingsAdapter.changeCursor(0, createCursor(res + .getString(R.string.home_screen_settings), values)); + } + + // Make sure overview panel is drawn above apps customize and collapsed + mOverviewPanel.bringToFront(); + mOverviewPanel.invalidate(); + + ((SlidingUpPanelLayout) mOverviewPanel).setPanelHeight(isAllAppsVisible ? + res.getDimensionPixelSize(R.dimen.settings_pane_handle) + : res.getDimensionPixelSize(R.dimen.sliding_panel_padding)); + + ((SlidingUpPanelLayout) mOverviewPanel).collapsePane(); + } + + public void notifyDataSetInvalidated() { + mSettingsAdapter.notifyDataSetInvalidated(); + } + + + class SettingsSimplePanelSlideListener extends SlidingUpPanelLayout.SimplePanelSlideListener { + ImageView mAnimatedArrow; + + public SettingsSimplePanelSlideListener() { + super(); + mAnimatedArrow = (ImageView) mOverviewPanel.findViewById(R.id.settings_drag_arrow); + } + + @Override + public void onPanelCollapsed(View panel) { + mAnimatedArrow.setBackgroundResource(R.drawable.transition_arrow_reverse); + + AnimationDrawable frameAnimation = (AnimationDrawable) mAnimatedArrow.getBackground(); + frameAnimation.start(); + } + + @Override + public void onPanelExpanded(View panel) { + mAnimatedArrow.setBackgroundResource(R.drawable.transition_arrow); + + AnimationDrawable frameAnimation = (AnimationDrawable) mAnimatedArrow.getBackground(); + frameAnimation.start(); + } + } +} diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 37cd1e9ca..f050799ae 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -1711,10 +1711,6 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc return OVERSCROLL_DAMP_FACTOR * f; } - protected void enableFreeScroll() { - setEnableFreeScroll(true, -1); - } - protected void disableFreeScroll(int snapPage) { setEnableFreeScroll(false, snapPage); } @@ -2597,7 +2593,6 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc mPostReorderingPreZoomInRunnable = new Runnable() { public void run() { onCompleteRunnable.run(); - enableFreeScroll(); }; }; diff --git a/src/com/android/launcher3/SearchDropTargetBar.java b/src/com/android/launcher3/SearchDropTargetBar.java index 15452070c..d38c61209 100644 --- a/src/com/android/launcher3/SearchDropTargetBar.java +++ b/src/com/android/launcher3/SearchDropTargetBar.java @@ -69,6 +69,11 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D dragController.setFlingToDeleteDropTarget(mDeleteDropTarget); mInfoDropTarget.setLauncher(launcher); mDeleteDropTarget.setLauncher(launcher); + + setupQSB(launcher); + } + + public void setupQSB(Launcher launcher) { mQSBSearchBar = launcher.getQsbBar(); if (mEnableDropDownDropTargets) { mQSBSearchBarAnim = LauncherAnimUtils.ofFloat(mQSBSearchBar, "translationY", 0, @@ -188,7 +193,7 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D // Animate out the QSB search bar, and animate in the drop target bar prepareStartAnimation(mDropTargetBar); mDropTargetBarAnim.start(); - if (!mIsSearchBarHidden) { + if (!mIsSearchBarHidden || mQSBSearchBar.getAlpha() > 0f) { prepareStartAnimation(mQSBSearchBar); mQSBSearchBarAnim.start(); } @@ -204,7 +209,7 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D // Restore the QSB search bar, and animate out the drop target bar prepareStartAnimation(mDropTargetBar); mDropTargetBarAnim.reverse(); - if (!mIsSearchBarHidden) { + if (!mIsSearchBarHidden || mQSBSearchBar.getAlpha() < 1f) { prepareStartAnimation(mQSBSearchBar); mQSBSearchBarAnim.reverse(); } diff --git a/src/com/android/launcher3/SlidingUpPanelLayout.java b/src/com/android/launcher3/SlidingUpPanelLayout.java new file mode 100644 index 000000000..52deeb355 --- /dev/null +++ b/src/com/android/launcher3/SlidingUpPanelLayout.java @@ -0,0 +1,1315 @@ +package com.android.launcher3; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.PixelFormat; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.os.Parcel; +import android.os.Parcelable; +import android.support.v4.view.MotionEventCompat; +import android.support.v4.view.ViewCompat; +import android.support.v4.widget.ViewDragHelper; +import android.util.AttributeSet; +import android.util.Log; +import android.view.Gravity; +import android.view.MotionEvent; +import android.view.SoundEffectConstants; +import android.view.View; +import android.view.ViewConfiguration; +import android.view.ViewGroup; +import android.view.accessibility.AccessibilityEvent; +import android.view.animation.Animation; +import android.view.animation.TranslateAnimation; + +public class SlidingUpPanelLayout extends ViewGroup { + private static final String TAG = SlidingUpPanelLayout.class.getSimpleName(); + + /** + * Default peeking out panel height + */ + private static final int DEFAULT_PANEL_HEIGHT = 68; // dp; + + /** + * Default height of the shadow above the peeking out panel + */ + private static final int DEFAULT_SHADOW_HEIGHT = 4; // dp; + + /** + * If no fade color is given by default it will fade to 80% gray. + */ + private static final int DEFAULT_FADE_COLOR = 0x99000000; + + /** + * Default Minimum velocity that will be detected as a fling + */ + private static final int DEFAULT_MIN_FLING_VELOCITY = 400; // dips per second + /** + * Default is set to false because that is how it was written + */ + private static final boolean DEFAULT_OVERLAY_FLAG = false; + /** + * Default attributes for layout + */ + private static final int[] DEFAULT_ATTRS = new int[] { + android.R.attr.gravity + }; + + /** + * Minimum velocity that will be detected as a fling + */ + private int mMinFlingVelocity = DEFAULT_MIN_FLING_VELOCITY; + + /** + * The fade color used for the panel covered by the slider. 0 = no fading. + */ + private int mCoveredFadeColor = DEFAULT_FADE_COLOR; + + /** + * Default paralax length of the main view + */ + private static final int DEFAULT_PARALAX_OFFSET = 0; + + /** + * The paint used to dim the main layout when sliding + */ + private final Paint mCoveredFadePaint = new Paint(); + + /** + * Drawable used to draw the shadow between panes. + */ + private final Drawable mShadowDrawable; + + /** + * The size of the overhang in pixels. + */ + private int mPanelHeight = -1; + + /** + * The size of the shadow in pixels. + */ + private int mShadowHeight = -1; + + /** + * Paralax offset + */ + private int mParalaxOffset = -1; + + /** + * True if the collapsed panel should be dragged up. + */ + private boolean mIsSlidingUp; + + /** + * True if a panel can slide with the current measurements + */ + private boolean mCanSlide; + + /** + * Panel overlays the windows instead of putting it underneath it. + */ + private boolean mOverlayContent = DEFAULT_OVERLAY_FLAG; + + /** + * If provided, the panel can be dragged by only this view. Otherwise, the entire panel can be + * used for dragging. + */ + private View mDragView; + + /** + * If provided, the panel can be dragged by only this view. Otherwise, the entire panel can be + * used for dragging. + */ + private int mDragViewResId = -1; + + /** + * The child view that can slide, if any. + */ + private View mSlideableView; + + /** + * The main view + */ + private View mMainView; + + /** + * Current state of the slideable view. + */ + private enum SlideState { + EXPANDED, + COLLAPSED, + ANCHORED + } + private SlideState mSlideState = SlideState.COLLAPSED; + + /** + * How far the panel is offset from its expanded position. + * range [0, 1] where 0 = expanded, 1 = collapsed. + */ + private float mSlideOffset; + + /** + * How far in pixels the slideable panel may move. + */ + private int mSlideRange; + + /** + * A panel view is locked into internal scrolling or another condition that + * is preventing a drag. + */ + private boolean mIsUnableToDrag; + + /** + * Flag indicating that sliding feature is enabled\disabled + */ + private boolean mIsSlidingEnabled; + + /** + * Flag indicating if a drag view can have its own touch events. If set + * to true, a drag view can scroll horizontally and have its own click listener. + * + * Default is set to false. + */ + private boolean mIsUsingDragViewTouchEvents; + + /** + * Threshold to tell if there was a scroll touch event. + */ + private final int mScrollTouchSlop; + + private float mInitialMotionX; + private float mInitialMotionY; + private float mAnchorPoint = 0.f; + private TranslateAnimation mAnimation; + + private PanelSlideListener mPanelSlideListener; + + private final ViewDragHelper mDragHelper; + + /** + * Stores whether or not the pane was expanded the last time it was slideable. + * If expand/collapse operations are invoked this state is modified. Used by + * instance state save/restore. + */ + private boolean mFirstLayout = true; + + private final Rect mTmpRect = new Rect(); + + /** + * Listener for monitoring events about sliding panes. + */ + public interface PanelSlideListener { + /** + * Called when a sliding pane's position changes. + * @param panel The child view that was moved + * @param slideOffset The new offset of this sliding pane within its range, from 0-1 + */ + public void onPanelSlide(View panel, float slideOffset); + /** + * Called when a sliding pane becomes slid completely collapsed. The pane may or may not + * be interactive at this point depending on if it's shown or hidden + * @param panel The child view that was slid to an collapsed position, revealing other panes + */ + public void onPanelCollapsed(View panel); + + /** + * Called when a sliding pane becomes slid completely expanded. The pane is now guaranteed + * to be interactive. It may now obscure other views in the layout. + * @param panel The child view that was slid to a expanded position + */ + public void onPanelExpanded(View panel); + + public void onPanelAnchored(View panel); + } + + /** + * No-op stubs for {@link PanelSlideListener}. If you only want to implement a subset + * of the listener methods you can extend this instead of implement the full interface. + */ + public static class SimplePanelSlideListener implements PanelSlideListener { + @Override + public void onPanelSlide(View panel, float slideOffset) { + } + @Override + public void onPanelCollapsed(View panel) { + } + @Override + public void onPanelExpanded(View panel) { + } + @Override + public void onPanelAnchored(View panel) { + } + } + + public SlidingUpPanelLayout(Context context) { + this(context, null); + } + + public SlidingUpPanelLayout(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public SlidingUpPanelLayout(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + if (attrs != null) { + TypedArray defAttrs = context.obtainStyledAttributes(attrs, DEFAULT_ATTRS); + + if (defAttrs != null) { + int gravity = defAttrs.getInt(0, Gravity.NO_GRAVITY); + if (gravity != Gravity.TOP && gravity != Gravity.BOTTOM) { + throw new IllegalArgumentException("gravity must be set to either top or bottom"); + } + mIsSlidingUp = gravity == Gravity.BOTTOM; + } + + defAttrs.recycle(); + + TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.SlidingUpPanelLayout); + + if (ta != null) { + mPanelHeight = ta.getDimensionPixelSize(R.styleable.SlidingUpPanelLayout_panelHeight, -1); + mShadowHeight = ta.getDimensionPixelSize(R.styleable.SlidingUpPanelLayout_shadowHeight, -1); + mParalaxOffset = ta.getDimensionPixelSize(R.styleable.SlidingUpPanelLayout_paralaxOffset, -1); + + mMinFlingVelocity = ta.getInt(R.styleable.SlidingUpPanelLayout_flingVelocity, DEFAULT_MIN_FLING_VELOCITY); + mCoveredFadeColor = ta.getColor(R.styleable.SlidingUpPanelLayout_fadeColor, DEFAULT_FADE_COLOR); + + mDragViewResId = ta.getResourceId(R.styleable.SlidingUpPanelLayout_dragView, -1); + + mOverlayContent = ta.getBoolean(R.styleable.SlidingUpPanelLayout_overlay,DEFAULT_OVERLAY_FLAG); + } + + ta.recycle(); + } + + final float density = context.getResources().getDisplayMetrics().density; + if (mPanelHeight == -1) { + mPanelHeight = (int) (DEFAULT_PANEL_HEIGHT * density + 0.5f); + } + if (mShadowHeight == -1) { + mShadowHeight = (int) (DEFAULT_SHADOW_HEIGHT * density + 0.5f); + } + if (mParalaxOffset == -1) { + mParalaxOffset = (int) (DEFAULT_PARALAX_OFFSET * density); + } + // If the shadow height is zero, don't show the shadow + if (mShadowHeight > 0) { + if (mIsSlidingUp) { + mShadowDrawable = getResources().getDrawable(R.drawable.above_shadow); + } else { + mShadowDrawable = getResources().getDrawable(R.drawable.below_shadow); + } + + } else { + mShadowDrawable = null; + } + + setWillNotDraw(false); + + mDragHelper = ViewDragHelper.create(this, 0.5f, new DragHelperCallback()); + mDragHelper.setMinVelocity(mMinFlingVelocity * density); + + mCanSlide = true; + mIsSlidingEnabled = true; + + ViewConfiguration vc = ViewConfiguration.get(context); + mScrollTouchSlop = vc.getScaledTouchSlop(); + } + + /** + * Set the Drag View after the view is inflated + */ + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + if (mDragViewResId != -1) { + mDragView = findViewById(mDragViewResId); + } + } + + /** + * Set the color used to fade the pane covered by the sliding pane out when the pane + * will become fully covered in the expanded state. + * + * @param color An ARGB-packed color value + */ + public void setCoveredFadeColor(int color) { + mCoveredFadeColor = color; + invalidate(); + } + + /** + * @return The ARGB-packed color value used to fade the fixed pane + */ + public int getCoveredFadeColor() { + return mCoveredFadeColor; + } + + /** + * Set sliding enabled flag + * @param enabled flag value + */ + public void setSlidingEnabled(boolean enabled) { + mIsSlidingEnabled = enabled; + } + + /** + * Set the collapsed panel height in pixels + * + * @param val A height in pixels + */ + public void setPanelHeight(int val) { + mPanelHeight = val; + requestLayout(); + } + + /** + * @return The current collapsed panel height + */ + public int getPanelHeight() { + return mPanelHeight; + } + + /** + * @return The current paralax offset + */ + public int getCurrentParalaxOffset() { + int offset = (int)(mParalaxOffset * (1 - mSlideOffset)); + return mIsSlidingUp ? -offset : offset; + } + + /** + * Sets the panel slide listener + * @param listener + */ + public void setPanelSlideListener(PanelSlideListener listener) { + mPanelSlideListener = listener; + } + + /** + * Set the draggable view portion. Use to null, to allow the whole panel to be draggable + * + * @param dragView A view that will be used to drag the panel. + */ + public void setDragView(View dragView) { + mDragView = dragView; + } + + /** + * Set an anchor point where the panel can stop during sliding + * + * @param anchorPoint A value between 0 and 1, determining the position of the anchor point + * starting from the top of the layout. + */ + public void setAnchorPoint(float anchorPoint) { + if (anchorPoint > 0 && anchorPoint < 1) + mAnchorPoint = anchorPoint; + } + + /** + * Sets whether or not the panel overlays the content + * @param overlayed + */ + public void setOverlayed(boolean overlayed) { + mOverlayContent = overlayed; + } + + /** + * Check if the panel is set as an overlay. + */ + public boolean isOverlayed() { + return mOverlayContent; + } + + void dispatchOnPanelSlide(View panel) { + if (mPanelSlideListener != null) { + mPanelSlideListener.onPanelSlide(panel, mSlideOffset); + } + } + + void dispatchOnPanelExpanded(View panel) { + if (mPanelSlideListener != null) { + mPanelSlideListener.onPanelExpanded(panel); + } + sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); + } + + void dispatchOnPanelCollapsed(View panel) { + if (mPanelSlideListener != null) { + mPanelSlideListener.onPanelCollapsed(panel); + } + sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); + } + + void dispatchOnPanelAnchored(View panel) { + if (mPanelSlideListener != null) { + mPanelSlideListener.onPanelAnchored(panel); + } + sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); + } + + void updateObscuredViewVisibility() { + if (getChildCount() == 0) { + return; + } + final int leftBound = getPaddingLeft(); + final int rightBound = getWidth() - getPaddingRight(); + final int topBound = getPaddingTop(); + final int bottomBound = getHeight() - getPaddingBottom(); + final int left; + final int right; + final int top; + final int bottom; + if (mSlideableView != null && hasOpaqueBackground(mSlideableView)) { + left = mSlideableView.getLeft(); + right = mSlideableView.getRight(); + top = mSlideableView.getTop(); + bottom = mSlideableView.getBottom(); + } else { + left = right = top = bottom = 0; + } + View child = getChildAt(0); + final int clampedChildLeft = Math.max(leftBound, child.getLeft()); + final int clampedChildTop = Math.max(topBound, child.getTop()); + final int clampedChildRight = Math.min(rightBound, child.getRight()); + final int clampedChildBottom = Math.min(bottomBound, child.getBottom()); + final int vis; + if (clampedChildLeft >= left && clampedChildTop >= top && + clampedChildRight <= right && clampedChildBottom <= bottom) { + vis = INVISIBLE; + } else { + vis = VISIBLE; + } + child.setVisibility(vis); + } + + void setAllChildrenVisible() { + for (int i = 0, childCount = getChildCount(); i < childCount; i++) { + final View child = getChildAt(i); + if (child.getVisibility() == INVISIBLE) { + child.setVisibility(VISIBLE); + } + } + } + + private static boolean hasOpaqueBackground(View v) { + final Drawable bg = v.getBackground(); + if (bg != null) { + return bg.getOpacity() == PixelFormat.OPAQUE; + } + return false; + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + mFirstLayout = true; + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + mFirstLayout = true; + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final int widthMode = MeasureSpec.getMode(widthMeasureSpec); + final int widthSize = MeasureSpec.getSize(widthMeasureSpec); + final int heightMode = MeasureSpec.getMode(heightMeasureSpec); + final int heightSize = MeasureSpec.getSize(heightMeasureSpec); + + if (widthMode != MeasureSpec.EXACTLY) { + throw new IllegalStateException("Width must have an exact value or MATCH_PARENT"); + } else if (heightMode != MeasureSpec.EXACTLY) { + throw new IllegalStateException("Height must have an exact value or MATCH_PARENT"); + } + + int layoutHeight = heightSize - getPaddingTop() - getPaddingBottom(); + int panelHeight = mPanelHeight; + + final int childCount = getChildCount(); + + if (childCount > 2) { + Log.e(TAG, "onMeasure: More than two child views are not supported."); + } else if (getChildAt(1).getVisibility() == GONE) { + panelHeight = 0; + } + + // We'll find the current one below. + mSlideableView = null; + mCanSlide = false; + + // First pass. Measure based on child LayoutParams width/height. + for (int i = 0; i < childCount; i++) { + final View child = getChildAt(i); + final LayoutParams lp = (LayoutParams) child.getLayoutParams(); + + int height = layoutHeight; + if (child.getVisibility() == GONE) { + lp.dimWhenOffset = false; + continue; + } + + if (i == 1) { + lp.slideable = true; + lp.dimWhenOffset = true; + mSlideableView = child; + mCanSlide = true; + } else { + if (!mOverlayContent) { + height -= panelHeight; + } + mMainView = child; + } + + int childWidthSpec; + if (lp.width == LayoutParams.WRAP_CONTENT) { + childWidthSpec = MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.AT_MOST); + } else if (lp.width == LayoutParams.MATCH_PARENT) { + childWidthSpec = MeasureSpec.makeMeasureSpec(widthSize, MeasureSpec.EXACTLY); + } else { + childWidthSpec = MeasureSpec.makeMeasureSpec(lp.width, MeasureSpec.EXACTLY); + } + + int childHeightSpec; + if (lp.height == LayoutParams.WRAP_CONTENT) { + childHeightSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST); + } else if (lp.height == LayoutParams.MATCH_PARENT) { + childHeightSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); + } else { + childHeightSpec = MeasureSpec.makeMeasureSpec(lp.height, MeasureSpec.EXACTLY); + } + + child.measure(childWidthSpec, childHeightSpec); + } + + setMeasuredDimension(widthSize, heightSize); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + final int paddingLeft = getPaddingLeft(); + final int paddingTop = getPaddingTop(); + final int slidingTop = getSlidingTop(); + + final int childCount = getChildCount(); + + if (mFirstLayout) { + switch (mSlideState) { + case EXPANDED: + mSlideOffset = mCanSlide ? 0.f : 1.f; + break; + case ANCHORED: + mSlideOffset = mCanSlide ? mAnchorPoint : 1.f; + break; + default: + mSlideOffset = 1.f; + break; + } + } + + for (int i = 0; i < childCount; i++) { + final View child = getChildAt(i); + + if (child.getVisibility() == GONE) { + continue; + } + + final LayoutParams lp = (LayoutParams) child.getLayoutParams(); + final int childHeight = child.getMeasuredHeight(); + + if (lp.slideable) { + mSlideRange = childHeight - mPanelHeight; + } + + int childTop; + if (mIsSlidingUp) { + childTop = lp.slideable ? slidingTop + (int) (mSlideRange * mSlideOffset) : paddingTop; + } else { + childTop = lp.slideable ? slidingTop - (int) (mSlideRange * mSlideOffset) : paddingTop; + if (!lp.slideable && !mOverlayContent) { + childTop += mPanelHeight; + } + } + final int childBottom = childTop + childHeight; + final int childLeft = paddingLeft; + final int childRight = childLeft + child.getMeasuredWidth(); + + child.layout(childLeft, childTop, childRight, childBottom); + } + + if (mFirstLayout) { + updateObscuredViewVisibility(); + } + + mFirstLayout = false; + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + // Recalculate sliding panes and their details + if (h != oldh) { + mFirstLayout = true; + } + } + + /** + * Set if the drag view can have its own touch events. If set + * to true, a drag view can scroll horizontally and have its own click listener. + * + * Default is set to false. + */ + public void setEnableDragViewTouchEvents(boolean enabled) { + mIsUsingDragViewTouchEvents = enabled; + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + final int action = MotionEventCompat.getActionMasked(ev); + + if (mAnimation != null || !mCanSlide || !mIsSlidingEnabled || (mIsUnableToDrag && action != MotionEvent.ACTION_DOWN)) { + mDragHelper.cancel(); + return super.onInterceptTouchEvent(ev); + } + + if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) { + mDragHelper.cancel(); + return false; + } + + final float x = ev.getX(); + final float y = ev.getY(); + boolean interceptTap = false; + + switch (action) { + case MotionEvent.ACTION_DOWN: { + mIsUnableToDrag = false; + mInitialMotionX = x; + mInitialMotionY = y; + if (isDragViewUnder((int) x, (int) y) && !mIsUsingDragViewTouchEvents) { + interceptTap = true; + } + break; + } + + case MotionEvent.ACTION_MOVE: { + final float adx = Math.abs(x - mInitialMotionX); + final float ady = Math.abs(y - mInitialMotionY); + final int dragSlop = mDragHelper.getTouchSlop(); + + // Handle any horizontal scrolling on the drag view. + if (mIsUsingDragViewTouchEvents) { + if (adx > mScrollTouchSlop && ady < mScrollTouchSlop) { + return super.onInterceptTouchEvent(ev); + } + // Intercept the touch if the drag view has any vertical scroll. + // onTouchEvent will determine if the view should drag vertically. + else if (ady > mScrollTouchSlop) { + interceptTap = isDragViewUnder((int) x, (int) y); + } + } + + if ((ady > dragSlop && adx > ady) || !isDragViewUnder((int) x, (int) y)) { + mDragHelper.cancel(); + mIsUnableToDrag = true; + return false; + } + break; + } + } + + final boolean interceptForDrag = mDragHelper.shouldInterceptTouchEvent(ev); + + return interceptForDrag; + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + if (!mCanSlide || !mIsSlidingEnabled || mAnimation != null) { + return super.onTouchEvent(ev); + } + + mDragHelper.processTouchEvent(ev); + + final int action = ev.getAction(); + boolean wantTouchEvents = true; + + switch (action & MotionEventCompat.ACTION_MASK) { + case MotionEvent.ACTION_DOWN: { + final float x = ev.getX(); + final float y = ev.getY(); + + //Fix to allow both SettingPanel Drag and Workspace Drag + if (mSlideState == SlideState.COLLAPSED) { + if (y < mSlideableView.getTop()) { + return false; + } + } + + mInitialMotionX = x; + mInitialMotionY = y; + break; + } + + case MotionEvent.ACTION_UP: { + final float x = ev.getX(); + final float y = ev.getY(); + final float dx = x - mInitialMotionX; + final float dy = y - mInitialMotionY; + final int slop = mDragHelper.getTouchSlop(); + View dragView = mDragView != null ? mDragView : mSlideableView; + if (dx * dx + dy * dy < slop * slop && + isDragViewUnder((int) x, (int) y)) { + dragView.playSoundEffect(SoundEffectConstants.CLICK); + if (!isExpanded() && !isAnchored()) { + expandPane(mAnchorPoint); + } else { + collapsePane(); + } + break; + } + break; + } + } + + return wantTouchEvents; + } + + private boolean isDragViewUnder(int x, int y) { + View dragView = mDragView != null ? mDragView : mSlideableView; + if (dragView == null) return false; + int[] viewLocation = new int[2]; + dragView.getLocationOnScreen(viewLocation); + int[] parentLocation = new int[2]; + this.getLocationOnScreen(parentLocation); + int screenX = parentLocation[0] + x; + int screenY = parentLocation[1] + y; + return screenX >= viewLocation[0] && screenX < viewLocation[0] + dragView.getWidth() && + screenY >= viewLocation[1] && screenY < viewLocation[1] + dragView.getHeight(); + } + + private boolean expandPane(View pane, int initialVelocity, float mSlideOffset) { + if (mFirstLayout || smoothSlideTo(mSlideOffset, initialVelocity)) { + return true; + } + return false; + } + + private boolean collapsePane(View pane, int initialVelocity) { + if (mFirstLayout || smoothSlideTo(1.f, initialVelocity)) { + return true; + } + return false; + } + + private int getSlidingTop() { + if (mSlideableView != null) { + return mIsSlidingUp + ? getMeasuredHeight() - getPaddingBottom() - mSlideableView.getMeasuredHeight() + : getPaddingTop(); + } + + return getMeasuredHeight() - getPaddingBottom(); + } + + /** + * Collapse the sliding pane if it is currently slideable. If first layout + * has already completed this will animate. + * + * @return true if the pane was slideable and is now collapsed/in the process of collapsing + */ + public boolean collapsePane() { + return collapsePane(mSlideableView, 0); + } + + /** + * Expand the sliding pane if it is currently slideable. If first layout + * has already completed this will animate. + * + * @return true if the pane was slideable and is now expanded/in the process of expading + */ + public boolean expandPane() { + return expandPane(0); + } + + /** + * Partially expand the sliding pane up to a specific offset + * + * @param mSlideOffset Value between 0 and 1, where 0 is completely expanded. + * @return true if the pane was slideable and is now expanded/in the process of expading + */ + public boolean expandPane(float mSlideOffset) { + if (!isPaneVisible()) { + showPane(); + } + return expandPane(mSlideableView, 0, mSlideOffset); + } + + /** + * Check if the layout is completely expanded. + * + * @return true if sliding panels are completely expanded + */ + public boolean isExpanded() { + return mSlideState == SlideState.EXPANDED; + } + + /** + * Check if the layout is anchored in an intermediate point. + * + * @return true if sliding panels are anchored + */ + public boolean isAnchored() { + return mSlideState == SlideState.ANCHORED; + } + + /** + * Check if the content in this layout cannot fully fit side by side and therefore + * the content pane can be slid back and forth. + * + * @return true if content in this layout can be expanded + */ + public boolean isSlideable() { + return mCanSlide; + } + + public boolean isPaneVisible() { + if (getChildCount() < 2) { + return false; + } + View slidingPane = getChildAt(1); + return slidingPane.getVisibility() == View.VISIBLE; + } + + public void showPane() { + if (getChildCount() < 2) { + return; + } + final View slidingPane = getChildAt(1); + mAnimation = new TranslateAnimation(0, 0, (mIsSlidingUp ? 1 : -1) * getPanelHeight(), 0); + mAnimation.setDuration(400); + mAnimation.setAnimationListener(new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + slidingPane.setVisibility(View.VISIBLE); + } + + @Override + public void onAnimationEnd(Animation animation) { + requestLayout(); + mAnimation = null; + } + + @Override + public void onAnimationRepeat(Animation animation) { + } + }); + slidingPane.startAnimation(mAnimation); + } + + public void hidePane() { + if (mSlideableView == null) { + return; + } + mAnimation = new TranslateAnimation(0, 0, 0, (mIsSlidingUp ? 1 : -1) * getPanelHeight()); + mAnimation.setDuration(500); + mAnimation.setAnimationListener(new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + + } + + @Override + public void onAnimationEnd(Animation animation) { + mSlideableView.setVisibility(View.GONE); + requestLayout(); + mAnimation = null; + } + + @Override + public void onAnimationRepeat(Animation animation) { + + } + }); + mSlideableView.startAnimation(mAnimation); + } + + private void onPanelDragged(int newTop) { + final int topBound = getSlidingTop(); + mSlideOffset = mIsSlidingUp + ? (float) (newTop - topBound) / mSlideRange + : (float) (topBound - newTop) / mSlideRange; + dispatchOnPanelSlide(mSlideableView); + + if (mParalaxOffset > 0) { + int mainViewOffset = getCurrentParalaxOffset(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + mMainView.setTranslationY(mainViewOffset); + } else { + mMainView.animate().translationY(mainViewOffset); + } + } + } + + @Override + protected boolean drawChild(Canvas canvas, View child, long drawingTime) { + final LayoutParams lp = (LayoutParams) child.getLayoutParams(); + boolean result; + final int save = canvas.save(Canvas.CLIP_SAVE_FLAG); + + boolean drawScrim = false; + + if (mCanSlide && !lp.slideable && mSlideableView != null) { + // Clip against the slider; no sense drawing what will immediately be covered, + // Unless the panel is set to overlay content + if (!mOverlayContent) { + canvas.getClipBounds(mTmpRect); + if (mIsSlidingUp) { + mTmpRect.bottom = Math.min(mTmpRect.bottom, mSlideableView.getTop()); + } else { + mTmpRect.top = Math.max(mTmpRect.top, mSlideableView.getBottom()); + } + canvas.clipRect(mTmpRect); + } + if (mSlideOffset < 1) { + drawScrim = true; + } + } + + result = super.drawChild(canvas, child, drawingTime); + canvas.restoreToCount(save); + + if (drawScrim) { + final int baseAlpha = (mCoveredFadeColor & 0xff000000) >>> 24; + final int imag = (int) (baseAlpha * (1 - mSlideOffset)); + final int color = imag << 24 | (mCoveredFadeColor & 0xffffff); + mCoveredFadePaint.setColor(color); + canvas.drawRect(mTmpRect, mCoveredFadePaint); + } + + return result; + } + + /** + * Smoothly animate mDraggingPane to the target X position within its range. + * + * @param slideOffset position to animate to + * @param velocity initial velocity in case of fling, or 0. + */ + boolean smoothSlideTo(float slideOffset, int velocity) { + if (!mCanSlide) { + // Nothing to do. + return false; + } + + final int topBound = getSlidingTop(); + int y = mIsSlidingUp + ? (int) (topBound + slideOffset * mSlideRange) + : (int) (topBound - slideOffset * mSlideRange); + + if (mDragHelper.smoothSlideViewTo(mSlideableView, mSlideableView.getLeft(), y)) { + setAllChildrenVisible(); + ViewCompat.postInvalidateOnAnimation(this); + return true; + } + return false; + } + + @Override + public void computeScroll() { + if (mDragHelper.continueSettling(true)) { + if (!mCanSlide) { + mDragHelper.abort(); + return; + } + + ViewCompat.postInvalidateOnAnimation(this); + } + } + + @Override + public void draw(Canvas c) { + super.draw(c); + + if (mSlideableView == null) { + // No need to draw a shadow if we don't have one. + return; + } + + final int right = mSlideableView.getRight(); + final int top; + final int bottom; + if (mIsSlidingUp) { + top = mSlideableView.getTop() - mShadowHeight; + bottom = mSlideableView.getTop(); + } else { + top = mSlideableView.getBottom(); + bottom = mSlideableView.getBottom() + mShadowHeight; + } + final int left = mSlideableView.getLeft(); + + if (mShadowDrawable != null) { + mShadowDrawable.setBounds(left, top, right, bottom); + mShadowDrawable.draw(c); + } + } + + /** + * Tests scrollability within child views of v given a delta of dx. + * + * @param v View to test for horizontal scrollability + * @param checkV Whether the view v passed should itself be checked for scrollability (true), + * or just its children (false). + * @param dx Delta scrolled in pixels + * @param x X coordinate of the active touch point + * @param y Y coordinate of the active touch point + * @return true if child views of v can be scrolled by delta of dx. + */ + protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) { + if (v instanceof ViewGroup) { + final ViewGroup group = (ViewGroup) v; + final int scrollX = v.getScrollX(); + final int scrollY = v.getScrollY(); + final int count = group.getChildCount(); + // Count backwards - let topmost views consume scroll distance first. + for (int i = count - 1; i >= 0; i--) { + final View child = group.getChildAt(i); + if (x + scrollX >= child.getLeft() && x + scrollX < child.getRight() && + y + scrollY >= child.getTop() && y + scrollY < child.getBottom() && + canScroll(child, true, dx, x + scrollX - child.getLeft(), + y + scrollY - child.getTop())) { + return true; + } + } + } + return checkV && ViewCompat.canScrollHorizontally(v, -dx); + } + + + @Override + protected ViewGroup.LayoutParams generateDefaultLayoutParams() { + return new LayoutParams(); + } + + @Override + protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) { + return p instanceof MarginLayoutParams + ? new LayoutParams((MarginLayoutParams) p) + : new LayoutParams(p); + } + + @Override + protected boolean checkLayoutParams(ViewGroup.LayoutParams p) { + return p instanceof LayoutParams && super.checkLayoutParams(p); + } + + @Override + public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs) { + return new LayoutParams(getContext(), attrs); + } + + @Override + protected Parcelable onSaveInstanceState() { + Parcelable superState = super.onSaveInstanceState(); + + SavedState ss = new SavedState(superState); + ss.mSlideState = mSlideState; + + return ss; + } + + @Override + protected void onRestoreInstanceState(Parcelable state) { + SavedState ss = (SavedState) state; + super.onRestoreInstanceState(ss.getSuperState()); + mSlideState = ss.mSlideState; + } + + private class DragHelperCallback extends ViewDragHelper.Callback { + + @Override + public boolean tryCaptureView(View child, int pointerId) { + if (mIsUnableToDrag) { + return false; + } + + return ((LayoutParams) child.getLayoutParams()).slideable; + } + + @Override + public void onViewDragStateChanged(int state) { + int anchoredTop = (int)(mAnchorPoint*mSlideRange); + + if (mDragHelper.getViewDragState() == ViewDragHelper.STATE_IDLE) { + if (mSlideOffset == 0) { + if (mSlideState != SlideState.EXPANDED) { + updateObscuredViewVisibility(); + dispatchOnPanelExpanded(mSlideableView); + mSlideState = SlideState.EXPANDED; + } + } else if (mSlideOffset == (float)anchoredTop/(float)mSlideRange) { + if (mSlideState != SlideState.ANCHORED) { + updateObscuredViewVisibility(); + dispatchOnPanelAnchored(mSlideableView); + mSlideState = SlideState.ANCHORED; + } + } else if (mSlideState != SlideState.COLLAPSED) { + dispatchOnPanelCollapsed(mSlideableView); + mSlideState = SlideState.COLLAPSED; + } + } + } + + @Override + public void onViewCaptured(View capturedChild, int activePointerId) { + // Make all child views visible in preparation for sliding things around + setAllChildrenVisible(); + } + + @Override + public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) { + onPanelDragged(top); + invalidate(); + } + + @Override + public void onViewReleased(View releasedChild, float xvel, float yvel) { + int top = mIsSlidingUp + ? getSlidingTop() + : getSlidingTop() - mSlideRange; + + if (mAnchorPoint != 0) { + int anchoredTop; + float anchorOffset; + if (mIsSlidingUp) { + anchoredTop = (int)(mAnchorPoint*mSlideRange); + anchorOffset = (float)anchoredTop/(float)mSlideRange; + } else { + anchoredTop = mPanelHeight - (int)(mAnchorPoint*mSlideRange); + anchorOffset = (float)(mPanelHeight - anchoredTop)/(float)mSlideRange; + } + + if (yvel > 0 || (yvel == 0 && mSlideOffset >= (1f+anchorOffset)/2)) { + top += mSlideRange; + } else if (yvel == 0 && mSlideOffset < (1f+anchorOffset)/2 + && mSlideOffset >= anchorOffset/2) { + top += mSlideRange * mAnchorPoint; + } + + } else if (yvel > 0 || (yvel == 0 && mSlideOffset > 0.5f)) { + top += mSlideRange; + } + + mDragHelper.settleCapturedViewAt(releasedChild.getLeft(), top); + invalidate(); + } + + @Override + public int getViewVerticalDragRange(View child) { + return mSlideRange; + } + + @Override + public int clampViewPositionVertical(View child, int top, int dy) { + final int topBound; + final int bottomBound; + if (mIsSlidingUp) { + topBound = getSlidingTop(); + bottomBound = topBound + mSlideRange; + } else { + bottomBound = getPaddingTop(); + topBound = bottomBound - mSlideRange; + } + + return Math.min(Math.max(top, topBound), bottomBound); + } + } + + public static class LayoutParams extends ViewGroup.MarginLayoutParams { + private static final int[] ATTRS = new int[] { + android.R.attr.layout_weight + }; + + /** + * True if this pane is the slideable pane in the layout. + */ + boolean slideable; + + /** + * True if this view should be drawn dimmed + * when it's been offset from its default position. + */ + boolean dimWhenOffset; + + Paint dimPaint; + + public LayoutParams() { + super(MATCH_PARENT, MATCH_PARENT); + } + + public LayoutParams(int width, int height) { + super(width, height); + } + + public LayoutParams(android.view.ViewGroup.LayoutParams source) { + super(source); + } + + public LayoutParams(MarginLayoutParams source) { + super(source); + } + + public LayoutParams(LayoutParams source) { + super(source); + } + + public LayoutParams(Context c, AttributeSet attrs) { + super(c, attrs); + + final TypedArray a = c.obtainStyledAttributes(attrs, ATTRS); + a.recycle(); + } + + } + + static class SavedState extends BaseSavedState { + SlideState mSlideState; + + SavedState(Parcelable superState) { + super(superState); + } + + private SavedState(Parcel in) { + super(in); + try { + mSlideState = Enum.valueOf(SlideState.class, in.readString()); + } catch (IllegalArgumentException e) { + mSlideState = SlideState.COLLAPSED; + } + } + + @Override + public void writeToParcel(Parcel out, int flags) { + super.writeToParcel(out, flags); + out.writeString(mSlideState.toString()); + } + + public static final Parcelable.Creator<SavedState> CREATOR = + new Parcelable.Creator<SavedState>() { + @Override + public SavedState createFromParcel(Parcel in) { + return new SavedState(in); + } + + @Override + public SavedState[] newArray(int size) { + return new SavedState[size]; + } + }; + } +} diff --git a/src/com/android/launcher3/TransitionEffectsFragment.java b/src/com/android/launcher3/TransitionEffectsFragment.java new file mode 100644 index 000000000..69231a8f0 --- /dev/null +++ b/src/com/android/launcher3/TransitionEffectsFragment.java @@ -0,0 +1,222 @@ +package com.android.launcher3; + +import android.animation.Animator; +import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; +import android.app.Fragment; +import android.content.Context; +import android.content.Intent; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Color; +import android.graphics.drawable.AnimationDrawable; +import android.os.Bundle; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.ScrollView; +import android.widget.TextView; +import com.android.launcher3.settings.SettingsProvider; + +public class TransitionEffectsFragment extends Fragment { + public static final String PAGE_OR_DRAWER_SCROLL_SELECT = "pageOrDrawer"; + public static final String SELECTED_TRANSITION_EFFECT = "selectedTransitionEffect"; + public static final String TRANSITION_EFFECTS_FRAGMENT = "transitionEffectsFragment"; + ImageView mTransitionIcon; + ListView mListView; + View mCurrentSelection; + ScrollView mScrollView; + + String[] mTransitionStates; + TypedArray mTransitionDrawables; + String mCurrentState; + int mCurrentPosition; + boolean mPageOrDrawer; + String mSettingsProviderValue; + int mPreferenceValue; + + OnClickListener mSettingsItemListener = new OnClickListener() { + + @Override + public void onClick(View v) { + if (mCurrentPosition == (Integer) v.getTag()) { + return; + } + mCurrentPosition = (Integer) v.getTag(); + mCurrentState = mTransitionStates[mCurrentPosition]; + + setCleared(mCurrentSelection); + setSelected(v); + mCurrentSelection = v; + + new Thread(new Runnable() { + public void run() { + mTransitionIcon.post(new Runnable() { + public void run() { + setImageViewToEffect(); + } + }); + } + }).start(); + + ((TransitionsArrayAdapter) mListView.getAdapter()).notifyDataSetChanged(); + } + }; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.settings_transitions_screen, container, false); + + mPageOrDrawer = getArguments().getBoolean(PAGE_OR_DRAWER_SCROLL_SELECT); + + mSettingsProviderValue = mPageOrDrawer ? + SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_TRANSITION_EFFECT + : SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_TRANSITION_EFFECT; + mPreferenceValue = mPageOrDrawer ? R.string.preferences_interface_drawer_scrolling_transition_effect + : R.string.preferences_interface_homescreen_scrolling_transition_effect; + + mTransitionIcon = (ImageView) v.findViewById(R.id.settings_transition_image); + mListView = (ListView) v.findViewById(R.id.settings_transitions_list); + mScrollView = (ScrollView) v.findViewById(R.id.scroll_view); + TextView title = (TextView) v.findViewById(R.id.transition_effect_title); + title.setText(mPageOrDrawer ? getResources().getString( + R.string.drawer_scroll_effect_text) : getResources().getString( + R.string.page_scroll_effect_text)); + LinearLayout titleLayout = (LinearLayout) v.findViewById(R.id.transition_title); + titleLayout.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + setEffect(); + } + }); + + String[] titles = getResources().getStringArray( + R.array.transition_effect_entries); + mListView.setAdapter(new TransitionsArrayAdapter(getActivity(), + R.layout.settings_pane_list_item, titles)); + + mTransitionStates = getResources().getStringArray( + R.array.transition_effect_values); + mTransitionDrawables = getResources().obtainTypedArray( + R.array.transition_effect_drawables); + + mCurrentState = SettingsProvider.getString(getActivity(), + mSettingsProviderValue, mPreferenceValue); + mCurrentPosition = mapEffectToPosition(mCurrentState); + + mListView.setSelection(mCurrentPosition); + + return v; + } + + public void setEffect() { + ((Launcher) getActivity()).setTransitionEffect(mPageOrDrawer, mCurrentState); + } + + private int mapEffectToPosition(String effect) { + int length = mTransitionStates.length; + for (int i = 0; i < length; i++) { + if (effect.equals(mTransitionStates[i])) { + return i; + } + } + return -1; + } + + private void setImageViewToEffect() { + mTransitionIcon.setBackgroundResource(mTransitionDrawables + .getResourceId(mCurrentPosition, R.drawable.transition_none)); + + AnimationDrawable frameAnimation = (AnimationDrawable) mTransitionIcon.getBackground(); + frameAnimation.start(); + } + + private void setSelected(View v) { + v.setBackgroundColor(Color.WHITE); + TextView t = (TextView) v.findViewById(R.id.item_name); + t.setTextColor(getResources().getColor(R.color.settings_bg_color)); + } + + private void setCleared(View v) { + v.setBackgroundColor(getResources().getColor(R.color.settings_bg_color)); + TextView t = (TextView) v.findViewById(R.id.item_name); + t.setTextColor(Color.WHITE); + } + + @Override + public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) { + if (enter) { + DisplayMetrics displaymetrics = new DisplayMetrics(); + getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); + int width = displaymetrics.widthPixels; + final ObjectAnimator anim = ObjectAnimator.ofFloat(this, "translationX", width, 0); + + final View darkPanel = ((Launcher) getActivity()).getDarkPanel(); + darkPanel.setVisibility(View.VISIBLE); + ObjectAnimator anim2 = ObjectAnimator.ofFloat( + darkPanel , "alpha", 0.0f, 0.3f); + anim2.start(); + + anim.addListener(new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator arg0) {} + @Override + public void onAnimationRepeat(Animator arg0) {} + @Override + public void onAnimationEnd(Animator arg0) { + darkPanel.setVisibility(View.GONE); + setImageViewToEffect(); + } + @Override + public void onAnimationCancel(Animator arg0) {} + }); + + return anim; + } else { + return super.onCreateAnimator(transit, enter, nextAnim); + } + } + + private class TransitionsArrayAdapter extends ArrayAdapter<String> { + Context mContext; + String[] titles; + + public TransitionsArrayAdapter(Context context, int textViewResourceId, + String[] objects) { + super(context, textViewResourceId, objects); + + mContext = context; + titles = objects; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + LayoutInflater inflater = (LayoutInflater) mContext + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + convertView = inflater.inflate(R.layout.settings_pane_list_item, + parent, false); + TextView textView = (TextView) convertView + .findViewById(R.id.item_name); + textView.setText(titles[position]); + // Set Selected State + if (position == mCurrentPosition) { + mCurrentSelection = convertView; + setSelected(mCurrentSelection); + } + + convertView.setOnClickListener(mSettingsItemListener); + convertView.setTag(position); + return convertView; + } + } +}
\ No newline at end of file diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 37bd8aa73..d70875a42 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -55,6 +55,8 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityManager; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; import android.view.animation.DecelerateInterpolator; import android.view.animation.Interpolator; import android.widget.TextView; @@ -62,6 +64,7 @@ import android.widget.TextView; import com.android.launcher3.FolderIcon.FolderRingAnimator; import com.android.launcher3.Launcher.CustomContentCallbacks; import com.android.launcher3.LauncherSettings.Favorites; +import com.android.launcher3.backup.BackupProtos; import com.android.launcher3.settings.SettingsProvider; import java.util.ArrayList; @@ -864,6 +867,8 @@ public class Workspace extends SmoothPagedView */ void addInScreen(View child, long container, long screenId, int x, int y, int spanX, int spanY, boolean insert, boolean computeXYFromRank) { + //Reload settings + reloadSettings(); if (container == LauncherSettings.Favorites.CONTAINER_DESKTOP) { if (getScreenWithId(screenId) == null) { Log.e(TAG, "Skipping child, screenId " + screenId + " not found"); @@ -1900,7 +1905,7 @@ public class Workspace extends SmoothPagedView mDefaultScreenId = getScreenIdForPageIndex(getPageNearestToCenterOfScreen()); - exitOverviewMode(getPageNearestToCenterOfScreen(), true); + updateDefaultScreenButton(); SettingsProvider.get(mLauncher).edit() .putLong(SettingsProvider.SETTINGS_UI_HOMESCREEN_DEFAULT_SCREEN_ID, mDefaultScreenId) @@ -1972,6 +1977,9 @@ public class Workspace extends SmoothPagedView } private void enableOverviewMode(boolean enable, int snapPage, boolean animated) { + //Check to see if Settings need to taken + reloadSettings(); + State finalState = Workspace.State.OVERVIEW; if (!enable) { finalState = Workspace.State.NORMAL; @@ -1995,7 +2003,7 @@ public class Workspace extends SmoothPagedView int getOverviewModeTranslationY() { int childHeight = getNormalChildHeight(); int viewPortHeight = getViewportHeight(); - int scaledChildHeight = (int) (mOverviewModeShrinkFactor * childHeight); + int scaledChildHeight = (int) (getOverviewModeScaleY() * childHeight); int offset = (viewPortHeight - scaledChildHeight) / 2; int offsetDelta = mOverviewModePageOffset - offset + mInsets.top; @@ -2003,6 +2011,21 @@ public class Workspace extends SmoothPagedView return offsetDelta; } + float getOverviewModeScaleY() { + float childHeight = getNormalChildHeight(); + int viewPortHeight = getViewportHeight(); + + Resources res = getResources(); + int top = res.getDimensionPixelSize(R.dimen.overview_panel_top_padding); + top += res.getDimensionPixelSize(R.dimen.sliding_panel_padding); + top += res.getDimensionPixelSize(R.dimen.overview_scaling_padding); + + float scaledChildHeight = viewPortHeight - top; + + float scale = scaledChildHeight / childHeight; + return scale; + } + boolean shouldVoiceButtonProxyBeVisible() { if (isOnOrMovingToCustomContent()) { return false; @@ -2070,15 +2093,13 @@ public class Workspace extends SmoothPagedView if (oldStateIsOverview) { disableFreeScroll(snapPage); - } else if (stateIsOverview) { - enableFreeScroll(); } if (state != State.NORMAL) { if (stateIsSpringLoaded) { mNewScale = mSpringLoadedShrinkFactor; } else if (stateIsOverview) { - mNewScale = mOverviewModeShrinkFactor; + mNewScale = getOverviewModeScaleY(); } else if (stateIsSmall){ mNewScale = mOverviewModeShrinkFactor - 0.3f; } @@ -2217,7 +2238,10 @@ public class Workspace extends SmoothPagedView pageIndicatorAlpha.addListener(new AlphaUpdateListener(getPageIndicator())); } - anim.play(overviewPanelAlpha); + overviewPanel.setAlpha(finalOverviewPanelAlpha); + AlphaUpdateListener.updateVisibility(overviewPanel); + Animation animation = AnimationUtils.loadAnimation(mLauncher, R.anim.drop_down); + overviewPanel.startAnimation(animation); anim.play(hotseatAlpha); if (mShowSearchBar) anim.play(searchBarAlpha); anim.play(pageIndicatorAlpha); @@ -4592,4 +4616,29 @@ public class Workspace extends SmoothPagedView public void getLocationInDragLayer(int[] loc) { mLauncher.getDragLayer().getLocationInDragLayer(this, loc); } + + private void reloadSettings() { + mShowSearchBar = SettingsProvider.getBoolean(mLauncher, SettingsProvider.SETTINGS_UI_HOMESCREEN_SEARCH, + R.bool.preferences_interface_homescreen_search_default); + mShowOutlines = SettingsProvider.getBoolean(mLauncher, + SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_PAGE_OUTLINES, + R.bool.preferences_interface_homescreen_scrolling_page_outlines_default); + mHideIconLabels = SettingsProvider.getBoolean(mLauncher, + SettingsProvider.SETTINGS_UI_HOMESCREEN_HIDE_ICON_LABELS, + R.bool.preferences_interface_homescreen_hide_icon_labels_default); + mWorkspaceFadeInAdjacentScreens = SettingsProvider.getBoolean(mLauncher, + SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_FADE_ADJACENT, + R.bool.preferences_interface_homescreen_scrolling_fade_adjacent_default); + TransitionEffect.setFromString(this, SettingsProvider.getString(mLauncher, + SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_TRANSITION_EFFECT, + R.string.preferences_interface_homescreen_scrolling_transition_effect)); + } + + public boolean getShowSearchBar() { + return mShowSearchBar; + } + + public boolean getHideIconLables() { + return mHideIconLabels; + } } diff --git a/src/com/android/launcher3/list/AutoScrollListView.java b/src/com/android/launcher3/list/AutoScrollListView.java new file mode 100644 index 000000000..66336bc71 --- /dev/null +++ b/src/com/android/launcher3/list/AutoScrollListView.java @@ -0,0 +1,117 @@ +/* + * Copyright (C) 2010 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 com.android.launcher3.list; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.ListView; + +/** + * A ListView that can be asked to scroll (smoothly or otherwise) to a specific + * position. This class takes advantage of similar functionality that exists + * in {@link ListView} and enhances it. + */ +public class AutoScrollListView extends ListView { + + /** + * Position the element at about 1/3 of the list height + */ + private static final float PREFERRED_SELECTION_OFFSET_FROM_TOP = 0.33f; + + private int mRequestedScrollPosition = -1; + private boolean mSmoothScrollRequested; + + public AutoScrollListView(Context context) { + super(context); + } + + public AutoScrollListView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public AutoScrollListView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + /** + * Brings the specified position to view by optionally performing a jump-scroll maneuver: + * first it jumps to some position near the one requested and then does a smooth + * scroll to the requested position. This creates an impression of full smooth + * scrolling without actually traversing the entire list. If smooth scrolling is + * not requested, instantly positions the requested item at a preferred offset. + */ + public void requestPositionToScreen(int position, boolean smoothScroll) { + mRequestedScrollPosition = position; + mSmoothScrollRequested = smoothScroll; + requestLayout(); + } + + @Override + protected void layoutChildren() { + super.layoutChildren(); + if (mRequestedScrollPosition == -1) { + return; + } + + final int position = mRequestedScrollPosition; + mRequestedScrollPosition = -1; + + int firstPosition = getFirstVisiblePosition() + 1; + int lastPosition = getLastVisiblePosition(); + if (position >= firstPosition && position <= lastPosition) { + return; // Already on screen + } + + final int offset = (int) (getHeight() * PREFERRED_SELECTION_OFFSET_FROM_TOP); + if (!mSmoothScrollRequested) { + setSelectionFromTop(position, offset); + + // Since we have changed the scrolling position, we need to redo child layout + // Calling "requestLayout" in the middle of a layout pass has no effect, + // so we call layoutChildren explicitly + super.layoutChildren(); + + } else { + // We will first position the list a couple of screens before or after + // the new selection and then scroll smoothly to it. + int twoScreens = (lastPosition - firstPosition) * 2; + int preliminaryPosition; + if (position < firstPosition) { + preliminaryPosition = position + twoScreens; + if (preliminaryPosition >= getCount()) { + preliminaryPosition = getCount() - 1; + } + if (preliminaryPosition < firstPosition) { + setSelection(preliminaryPosition); + super.layoutChildren(); + } + } else { + preliminaryPosition = position - twoScreens; + if (preliminaryPosition < 0) { + preliminaryPosition = 0; + } + if (preliminaryPosition > lastPosition) { + setSelection(preliminaryPosition); + super.layoutChildren(); + } + } + + + smoothScrollToPositionFromTop(position, offset); + } + } +} diff --git a/src/com/android/launcher3/list/CompositeCursorAdapter.java b/src/com/android/launcher3/list/CompositeCursorAdapter.java new file mode 100644 index 000000000..b1ddb67fb --- /dev/null +++ b/src/com/android/launcher3/list/CompositeCursorAdapter.java @@ -0,0 +1,532 @@ +/* + * Copyright (C) 2010 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 com.android.launcher3.list; + +import android.content.Context; +import android.database.Cursor; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; + +import java.util.ArrayList; + +/** + * A general purpose adapter that is composed of multiple cursors. It just + * appends them in the order they are added. + */ +public abstract class CompositeCursorAdapter extends BaseAdapter { + + private static final int INITIAL_CAPACITY = 2; + + public static class Partition { + boolean showIfEmpty; + boolean hasHeader; + + Cursor cursor; + int idColumnIndex; + int count; + + public Partition(boolean showIfEmpty, boolean hasHeader) { + this.showIfEmpty = showIfEmpty; + this.hasHeader = hasHeader; + } + + /** + * True if the directory should be shown even if no contacts are found. + */ + public boolean getShowIfEmpty() { + return showIfEmpty; + } + + public boolean getHasHeader() { + return hasHeader; + } + } + + private final Context mContext; + private ArrayList<Partition> mPartitions; + private int mCount = 0; + private boolean mCacheValid = true; + private boolean mNotificationsEnabled = true; + private boolean mNotificationNeeded; + + public CompositeCursorAdapter(Context context) { + this(context, INITIAL_CAPACITY); + } + + public CompositeCursorAdapter(Context context, int initialCapacity) { + mContext = context; + mPartitions = new ArrayList<Partition>(); + } + + public Context getContext() { + return mContext; + } + + /** + * Registers a partition. The cursor for that partition can be set later. + * Partitions should be added in the order they are supposed to appear in the + * list. + */ + public void addPartition(boolean showIfEmpty, boolean hasHeader) { + addPartition(new Partition(showIfEmpty, hasHeader)); + } + + public void addPartition(Partition partition) { + mPartitions.add(partition); + invalidate(); + notifyDataSetChanged(); + } + + public void addPartition(int location, Partition partition) { + mPartitions.add(location, partition); + invalidate(); + notifyDataSetChanged(); + } + + public void removePartition(int partitionIndex) { + Cursor cursor = mPartitions.get(partitionIndex).cursor; + if (cursor != null && !cursor.isClosed()) { + cursor.close(); + } + mPartitions.remove(partitionIndex); + invalidate(); + notifyDataSetChanged(); + } + + /** + * Removes cursors for all partitions. + */ + // TODO: Is this really what this is supposed to do? Just remove the cursors? Not close them? + // Not remove the partitions themselves? Isn't this leaking? + + public void clearPartitions() { + for (Partition partition : mPartitions) { + partition.cursor = null; + } + invalidate(); + notifyDataSetChanged(); + } + + /** + * Closes all cursors and removes all partitions. + */ + public void close() { + for (Partition partition : mPartitions) { + Cursor cursor = partition.cursor; + if (cursor != null && !cursor.isClosed()) { + cursor.close(); + } + } + mPartitions.clear(); + invalidate(); + notifyDataSetChanged(); + } + + public void setHasHeader(int partitionIndex, boolean flag) { + mPartitions.get(partitionIndex).hasHeader = flag; + invalidate(); + } + + public void setShowIfEmpty(int partitionIndex, boolean flag) { + mPartitions.get(partitionIndex).showIfEmpty = flag; + invalidate(); + } + + public Partition getPartition(int partitionIndex) { + return mPartitions.get(partitionIndex); + } + + protected void invalidate() { + mCacheValid = false; + } + + public int getPartitionCount() { + return mPartitions.size(); + } + + protected void ensureCacheValid() { + if (mCacheValid) { + return; + } + + mCount = 0; + for (Partition partition : mPartitions) { + Cursor cursor = partition.cursor; + int count = cursor != null ? cursor.getCount() : 0; + if (partition.hasHeader) { + if (count != 0 || partition.showIfEmpty) { + count++; + } + } + partition.count = count; + mCount += count; + } + + mCacheValid = true; + } + + /** + * Returns true if the specified partition was configured to have a header. + */ + public boolean hasHeader(int partition) { + return mPartitions.get(partition).hasHeader; + } + + /** + * Returns the total number of list items in all partitions. + */ + public int getCount() { + ensureCacheValid(); + return mCount; + } + + /** + * Returns the cursor for the given partition + */ + public Cursor getCursor(int partition) { + return mPartitions.get(partition).cursor; + } + + /** + * Changes the cursor for an individual partition. + */ + public void changeCursor(int partition, Cursor cursor) { + Cursor prevCursor = mPartitions.get(partition).cursor; + if (prevCursor != cursor) { + if (prevCursor != null && !prevCursor.isClosed()) { + prevCursor.close(); + } + mPartitions.get(partition).cursor = cursor; + if (cursor != null) { + mPartitions.get(partition).idColumnIndex = cursor.getColumnIndex("_id"); + } + invalidate(); + notifyDataSetChanged(); + } + } + + /** + * Returns true if the specified partition has no cursor or an empty cursor. + */ + public boolean isPartitionEmpty(int partition) { + Cursor cursor = mPartitions.get(partition).cursor; + return cursor == null || cursor.getCount() == 0; + } + + /** + * Given a list position, returns the index of the corresponding partition. + */ + public int getPartitionForPosition(int position) { + ensureCacheValid(); + int start = 0; + for (int i = 0, n = mPartitions.size(); i < n; i++) { + int end = start + mPartitions.get(i).count; + if (position >= start && position < end) { + return i; + } + start = end; + } + return -1; + } + + /** + * Given a list position, return the offset of the corresponding item in its + * partition. The header, if any, will have offset -1. + */ + public int getOffsetInPartition(int position) { + ensureCacheValid(); + int start = 0; + for (Partition partition : mPartitions) { + int end = start + partition.count; + if (position >= start && position < end) { + int offset = position - start; + if (partition.hasHeader) { + offset--; + } + return offset; + } + start = end; + } + return -1; + } + + /** + * Returns the first list position for the specified partition. + */ + public int getPositionForPartition(int partition) { + ensureCacheValid(); + int position = 0; + for (int i = 0; i < partition; i++) { + position += mPartitions.get(i).count; + } + return position; + } + + @Override + public int getViewTypeCount() { + return getItemViewTypeCount() + 1; + } + + /** + * Returns the overall number of item view types across all partitions. An + * implementation of this method needs to ensure that the returned count is + * consistent with the values returned by {@link #getItemViewType(int,int)}. + */ + public int getItemViewTypeCount() { + return 1; + } + + /** + * Returns the view type for the list item at the specified position in the + * specified partition. + */ + protected int getItemViewType(int partition, int position) { + return 1; + } + + @Override + public int getItemViewType(int position) { + ensureCacheValid(); + int start = 0; + for (int i = 0, n = mPartitions.size(); i < n; i++) { + int end = start + mPartitions.get(i).count; + if (position >= start && position < end) { + int offset = position - start; + if (mPartitions.get(i).hasHeader) { + offset--; + } + if (offset == -1) { + return IGNORE_ITEM_VIEW_TYPE; + } else { + return getItemViewType(i, offset); + } + } + start = end; + } + + throw new ArrayIndexOutOfBoundsException(position); + } + + public View getView(int position, View convertView, ViewGroup parent) { + ensureCacheValid(); + int start = 0; + for (int i = 0, n = mPartitions.size(); i < n; i++) { + int end = start + mPartitions.get(i).count; + if (position >= start && position < end) { + int offset = position - start; + if (mPartitions.get(i).hasHeader) { + offset--; + } + View view; + if (offset == -1) { + view = getHeaderView(i, mPartitions.get(i).cursor, convertView, parent); + } else { + if (!mPartitions.get(i).cursor.moveToPosition(offset)) { + throw new IllegalStateException("Couldn't move cursor to position " + + offset); + } + view = getView(i, mPartitions.get(i).cursor, offset, convertView, parent); + } + if (view == null) { + throw new NullPointerException("View should not be null, partition: " + i + + " position: " + offset); + } + return view; + } + start = end; + } + + throw new ArrayIndexOutOfBoundsException(position); + } + + /** + * Returns the header view for the specified partition, creating one if needed. + */ + protected View getHeaderView(int partition, Cursor cursor, View convertView, + ViewGroup parent) { + View view = convertView != null + ? convertView + : newHeaderView(mContext, partition, cursor, parent); + bindHeaderView(view, partition, cursor); + return view; + } + + /** + * Creates the header view for the specified partition. + */ + protected View newHeaderView(Context context, int partition, Cursor cursor, + ViewGroup parent) { + return null; + } + + /** + * Binds the header view for the specified partition. + */ + protected void bindHeaderView(View view, int partition, Cursor cursor) { + } + + /** + * Returns an item view for the specified partition, creating one if needed. + */ + protected View getView(int partition, Cursor cursor, int position, View convertView, + ViewGroup parent) { + View view; + if (convertView != null) { + view = convertView; + } else { + view = newView(mContext, partition, cursor, position, parent); + } + bindView(view, partition, cursor, position); + return view; + } + + /** + * Creates an item view for the specified partition and position. Position + * corresponds directly to the current cursor position. + */ + protected abstract View newView(Context context, int partition, Cursor cursor, int position, + ViewGroup parent); + + /** + * Binds an item view for the specified partition and position. Position + * corresponds directly to the current cursor position. + */ + protected abstract void bindView(View v, int partition, Cursor cursor, int position); + + /** + * Returns a pre-positioned cursor for the specified list position. + */ + public Object getItem(int position) { + ensureCacheValid(); + int start = 0; + for (Partition mPartition : mPartitions) { + int end = start + mPartition.count; + if (position >= start && position < end) { + int offset = position - start; + if (mPartition.hasHeader) { + offset--; + } + if (offset == -1) { + return null; + } + Cursor cursor = mPartition.cursor; + cursor.moveToPosition(offset); + return cursor; + } + start = end; + } + + return null; + } + + /** + * Returns the item ID for the specified list position. + */ + public long getItemId(int position) { + ensureCacheValid(); + int start = 0; + for (Partition mPartition : mPartitions) { + int end = start + mPartition.count; + if (position >= start && position < end) { + int offset = position - start; + if (mPartition.hasHeader) { + offset--; + } + if (offset == -1) { + return 0; + } + if (mPartition.idColumnIndex == -1) { + return 0; + } + + Cursor cursor = mPartition.cursor; + if (cursor == null || cursor.isClosed() || !cursor.moveToPosition(offset)) { + return 0; + } + return cursor.getLong(mPartition.idColumnIndex); + } + start = end; + } + + return 0; + } + + /** + * Returns false if any partition has a header. + */ + @Override + public boolean areAllItemsEnabled() { + for (Partition mPartition : mPartitions) { + if (mPartition.hasHeader) { + return false; + } + } + return true; + } + + /** + * Returns true for all items except headers. + */ + @Override + public boolean isEnabled(int position) { + ensureCacheValid(); + int start = 0; + for (int i = 0, n = mPartitions.size(); i < n; i++) { + int end = start + mPartitions.get(i).count; + if (position >= start && position < end) { + int offset = position - start; + if (mPartitions.get(i).hasHeader && offset == 0) { + return false; + } else { + return isEnabled(i, offset); + } + } + start = end; + } + + return false; + } + + /** + * Returns true if the item at the specified offset of the specified + * partition is selectable and clickable. + */ + protected boolean isEnabled(int partition, int position) { + return true; + } + + /** + * Enable or disable data change notifications. It may be a good idea to + * disable notifications before making changes to several partitions at once. + */ + public void setNotificationsEnabled(boolean flag) { + mNotificationsEnabled = flag; + if (flag && mNotificationNeeded) { + notifyDataSetChanged(); + } + } + + @Override + public void notifyDataSetChanged() { + if (mNotificationsEnabled) { + mNotificationNeeded = false; + super.notifyDataSetChanged(); + } else { + mNotificationNeeded = true; + } + } +} diff --git a/src/com/android/launcher3/list/PinnedHeaderListAdapter.java b/src/com/android/launcher3/list/PinnedHeaderListAdapter.java new file mode 100644 index 000000000..c15e87a46 --- /dev/null +++ b/src/com/android/launcher3/list/PinnedHeaderListAdapter.java @@ -0,0 +1,172 @@ +/* + * Copyright (C) 2010 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 com.android.launcher3.list; + +import android.content.Context; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; + +/** + * A subclass of {@link CompositeCursorAdapter} that manages pinned partition headers. + */ +public abstract class PinnedHeaderListAdapter extends CompositeCursorAdapter + implements PinnedHeaderListView.PinnedHeaderAdapter { + + public static final int PARTITION_HEADER_TYPE = 0; + + private boolean mPinnedPartitionHeadersEnabled; + private boolean mHeaderVisibility[]; + + public PinnedHeaderListAdapter(Context context) { + super(context); + } + + public PinnedHeaderListAdapter(Context context, int initialCapacity) { + super(context, initialCapacity); + } + + public boolean getPinnedPartitionHeadersEnabled() { + return mPinnedPartitionHeadersEnabled; + } + + public void setPinnedPartitionHeadersEnabled(boolean flag) { + this.mPinnedPartitionHeadersEnabled = flag; + } + + @Override + public int getPinnedHeaderCount() { + if (mPinnedPartitionHeadersEnabled) { + return getPartitionCount(); + } else { + return 0; + } + } + + protected boolean isPinnedPartitionHeaderVisible(int partition) { + return getPinnedPartitionHeadersEnabled() && hasHeader(partition) + && !isPartitionEmpty(partition); + } + + /** + * The default implementation creates the same type of view as a normal + * partition header. + */ + @Override + public View getPinnedHeaderView(int partition, View convertView, ViewGroup parent) { + if (hasHeader(partition)) { + View view = null; + if (convertView != null) { + Integer headerType = (Integer)convertView.getTag(); + if (headerType != null && headerType == PARTITION_HEADER_TYPE) { + view = convertView; + } + } + if (view == null) { + view = newHeaderView(getContext(), partition, null, parent); + view.setTag(PARTITION_HEADER_TYPE); + view.setFocusable(false); + view.setEnabled(false); + } + bindHeaderView(view, partition, getCursor(partition)); + view.setLayoutDirection(parent.getLayoutDirection()); + return view; + } else { + return null; + } + } + + @Override + public void configurePinnedHeaders(PinnedHeaderListView listView) { + if (!getPinnedPartitionHeadersEnabled()) { + return; + } + + int size = getPartitionCount(); + boolean unCached = false; + // Cache visibility bits, because we will need them several times later on + if (mHeaderVisibility == null || mHeaderVisibility.length != size) { + mHeaderVisibility = new boolean[size]; + unCached = true; + } + for (int i = 0; i < size; i++) { + boolean visible = isPinnedPartitionHeaderVisible(i); + mHeaderVisibility[i] = visible; + if (!visible) { + listView.setHeaderInvisible(i, true); + } + } + + int headerViewsCount = listView.getHeaderViewsCount(); + + // Starting at the top, find and pin headers for partitions preceding the visible one(s) + int maxTopHeader = -1; + int topHeaderHeight = 0; + for (int i = 0; i < size; i++) { + if (mHeaderVisibility[i]) { + int position = listView.getPositionAt(topHeaderHeight) - headerViewsCount; + int partition = getPartitionForPosition(position); + if (i > partition) { + break; + } + + if (!unCached){ + listView.setHeaderPinnedAtTop(i, topHeaderHeight, false); + topHeaderHeight += listView.getPinnedHeaderHeight(i); + maxTopHeader = i; + } + + } + } + + // Starting at the bottom, find and pin headers for partitions following the visible one(s) + /*int maxBottomHeader = size; + int bottomHeaderHeight = 0; + int listHeight = listView.getHeight(); + for (int i = size; --i > maxTopHeader;) { + if (mHeaderVisibility[i]) { + int position = listView.getPositionAt(listHeight - bottomHeaderHeight) + - headerViewsCount; + if (position < 0) { + break; + } + + int partition = getPartitionForPosition(position - 1); + if (partition == -1 || i <= partition) { + break; + } + + int height = listView.getPinnedHeaderHeight(i); + bottomHeaderHeight += height; + + listView.setHeaderPinnedAtBottom(i, listHeight - bottomHeaderHeight, false); + maxBottomHeader = i; + } + } + + // Headers in between the top-pinned and bottom-pinned should be hidden + for (int i = maxTopHeader + 1; i < maxBottomHeader; i++) { + if (mHeaderVisibility[i]) { + listView.setHeaderInvisible(i, isPartitionEmpty(i)); + } + }*/ + } + + @Override + public int getScrollPositionForHeader(int viewIndex) { + return getPositionForPartition(viewIndex); + } +} diff --git a/src/com/android/launcher3/list/PinnedHeaderListView.java b/src/com/android/launcher3/list/PinnedHeaderListView.java new file mode 100644 index 000000000..30688fea3 --- /dev/null +++ b/src/com/android/launcher3/list/PinnedHeaderListView.java @@ -0,0 +1,565 @@ +/* + * Copyright (C) 2010 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 com.android.launcher3.list; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.graphics.RectF; +import android.util.AttributeSet; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AbsListView; +import android.widget.AbsListView.OnScrollListener; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemSelectedListener; +import android.widget.ListAdapter; + +/** + * A ListView that maintains a header pinned at the top of the list. The + * pinned header can be pushed up and dissolved as needed. + */ +public class PinnedHeaderListView extends AutoScrollListView + implements OnScrollListener, OnItemSelectedListener { + + /** + * Adapter interface. The list adapter must implement this interface. + */ + public interface PinnedHeaderAdapter { + + /** + * Returns the overall number of pinned headers, visible or not. + */ + int getPinnedHeaderCount(); + + /** + * Creates or updates the pinned header view. + */ + View getPinnedHeaderView(int viewIndex, View convertView, ViewGroup parent); + + /** + * Configures the pinned headers to match the visible list items. The + * adapter should call {@link PinnedHeaderListView#setHeaderPinnedAtTop}, + * {@link PinnedHeaderListView#setHeaderPinnedAtBottom}, + * {@link PinnedHeaderListView#setFadingHeader} or + * {@link PinnedHeaderListView#setHeaderInvisible}, for each header that + * needs to change its position or visibility. + */ + void configurePinnedHeaders(PinnedHeaderListView listView); + + /** + * Returns the list position to scroll to if the pinned header is touched. + * Return -1 if the list does not need to be scrolled. + */ + int getScrollPositionForHeader(int viewIndex); + } + + private static final int MAX_ALPHA = 255; + private static final int TOP = 0; + private static final int BOTTOM = 1; + private static final int FADING = 2; + + private static final int DEFAULT_ANIMATION_DURATION = 20; + + private static final int DEFAULT_SMOOTH_SCROLL_DURATION = 100; + + private static final class PinnedHeader { + View view; + boolean visible; + int y; + int height; + int alpha; + int state; + + boolean animating; + boolean targetVisible; + int sourceY; + int targetY; + long targetTime; + } + + private PinnedHeaderAdapter mAdapter; + private int mSize; + private PinnedHeader[] mHeaders; + private RectF mBounds = new RectF(); + private Rect mClipRect = new Rect(); + private OnScrollListener mOnScrollListener; + private OnItemSelectedListener mOnItemSelectedListener; + private int mScrollState; + + private boolean mScrollToSectionOnHeaderTouch = false; + private boolean mHeaderTouched = false; + + private int mAnimationDuration = DEFAULT_ANIMATION_DURATION; + private boolean mAnimating; + private long mAnimationTargetTime; + private int mHeaderPaddingStart; + private int mHeaderWidth; + + public PinnedHeaderListView(Context context) { + this(context, null, android.R.attr.listViewStyle); + } + + public PinnedHeaderListView(Context context, AttributeSet attrs) { + this(context, attrs, android.R.attr.listViewStyle); + } + + public PinnedHeaderListView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + super.setOnScrollListener(this); + super.setOnItemSelectedListener(this); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + super.onLayout(changed, l, t, r, b); + mHeaderPaddingStart = getPaddingStart(); + mHeaderWidth = r - l - mHeaderPaddingStart - getPaddingEnd(); + } + + public void setPinnedHeaderAnimationDuration(int duration) { + mAnimationDuration = duration; + } + + @Override + public void setAdapter(ListAdapter adapter) { + mAdapter = (PinnedHeaderAdapter)adapter; + super.setAdapter(adapter); + } + + @Override + public void setOnScrollListener(OnScrollListener onScrollListener) { + mOnScrollListener = onScrollListener; + super.setOnScrollListener(this); + } + + @Override + public void setOnItemSelectedListener(OnItemSelectedListener listener) { + mOnItemSelectedListener = listener; + super.setOnItemSelectedListener(this); + } + + public void setScrollToSectionOnHeaderTouch(boolean value) { + mScrollToSectionOnHeaderTouch = value; + } + + @Override + public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, + int totalItemCount) { + if (mAdapter != null) { + int count = mAdapter.getPinnedHeaderCount(); + if (count != mSize) { + mSize = count; + if (mHeaders == null) { + mHeaders = new PinnedHeader[mSize]; + } else if (mHeaders.length < mSize) { + PinnedHeader[] headers = mHeaders; + mHeaders = new PinnedHeader[mSize]; + System.arraycopy(headers, 0, mHeaders, 0, headers.length); + } + } + + for (int i = 0; i < mSize; i++) { + if (mHeaders[i] == null) { + mHeaders[i] = new PinnedHeader(); + } + mHeaders[i].view = mAdapter.getPinnedHeaderView(i, mHeaders[i].view, this); + } + + mAnimationTargetTime = System.currentTimeMillis() + mAnimationDuration; + mAdapter.configurePinnedHeaders(this); + invalidateIfAnimating(); + + } + if (mOnScrollListener != null) { + mOnScrollListener.onScroll(this, firstVisibleItem, visibleItemCount, totalItemCount); + } + } + + @Override + protected float getTopFadingEdgeStrength() { + // Disable vertical fading at the top when the pinned header is present + return mSize > 0 ? 0 : super.getTopFadingEdgeStrength(); + } + + @Override + public void onScrollStateChanged(AbsListView view, int scrollState) { + mScrollState = scrollState; + if (mOnScrollListener != null) { + mOnScrollListener.onScrollStateChanged(this, scrollState); + } + } + + /** + * Ensures that the selected item is positioned below the top-pinned headers + * and above the bottom-pinned ones. + */ + @Override + public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { + int height = getHeight(); + + int windowTop = 0; + int windowBottom = height; + + for (int i = 0; i < mSize; i++) { + PinnedHeader header = mHeaders[i]; + if (header.visible) { + if (header.state == TOP) { + windowTop = header.y + header.height; + } else if (header.state == BOTTOM) { + windowBottom = header.y; + break; + } + } + } + + View selectedView = getSelectedView(); + if (selectedView != null) { + if (selectedView.getTop() < windowTop) { + setSelectionFromTop(position, windowTop); + } else if (selectedView.getBottom() > windowBottom) { + setSelectionFromTop(position, windowBottom - selectedView.getHeight()); + } + } + + if (mOnItemSelectedListener != null) { + mOnItemSelectedListener.onItemSelected(parent, view, position, id); + } + } + + @Override + public void onNothingSelected(AdapterView<?> parent) { + if (mOnItemSelectedListener != null) { + mOnItemSelectedListener.onNothingSelected(parent); + } + } + + public int getPinnedHeaderHeight(int viewIndex) { + ensurePinnedHeaderLayout(viewIndex); + return mHeaders[viewIndex].view.getHeight(); + } + + /** + * Set header to be pinned at the top. + * + * @param viewIndex index of the header view + * @param y is position of the header in pixels. + * @param animate true if the transition to the new coordinate should be animated + */ + public void setHeaderPinnedAtTop(int viewIndex, int y, boolean animate) { + ensurePinnedHeaderLayout(viewIndex); + PinnedHeader header = mHeaders[viewIndex]; + header.visible = true; + header.y = y; + header.state = TOP; + + // TODO perhaps we should animate at the top as well + header.animating = false; + } + + /** + * Set header to be pinned at the bottom. + * + * @param viewIndex index of the header view + * @param y is position of the header in pixels. + * @param animate true if the transition to the new coordinate should be animated + */ + public void setHeaderPinnedAtBottom(int viewIndex, int y, boolean animate) { + ensurePinnedHeaderLayout(viewIndex); + PinnedHeader header = mHeaders[viewIndex]; + header.state = BOTTOM; + if (header.animating) { + header.targetTime = mAnimationTargetTime; + header.sourceY = header.y; + header.targetY = y; + } else if (animate && (header.y != y || !header.visible)) { + if (header.visible) { + header.sourceY = header.y; + } else { + header.visible = true; + header.sourceY = y + header.height; + } + header.animating = true; + header.targetVisible = true; + header.targetTime = mAnimationTargetTime; + header.targetY = y; + } else { + header.visible = true; + header.y = y; + } + } + + /** + * Set header to be pinned at the top of the first visible item. + * + * @param viewIndex index of the header view + * @param position is position of the header in pixels. + */ + public void setFadingHeader(int viewIndex, int position, boolean fade) { + ensurePinnedHeaderLayout(viewIndex); + + View child = getChildAt(position - getFirstVisiblePosition()); + if (child == null) return; + + PinnedHeader header = mHeaders[viewIndex]; + header.visible = true; + header.state = FADING; + header.alpha = MAX_ALPHA; + header.animating = false; + + int top = getTotalTopPinnedHeaderHeight(); + header.y = top; + if (fade) { + int bottom = child.getBottom() - top; + int headerHeight = header.height; + if (bottom < headerHeight) { + int portion = bottom - headerHeight; + header.alpha = MAX_ALPHA * (headerHeight + portion) / headerHeight; + header.y = top + portion; + } + } + } + + /** + * Makes header invisible. + * + * @param viewIndex index of the header view + * @param animate true if the transition to the new coordinate should be animated + */ + public void setHeaderInvisible(int viewIndex, boolean animate) { + PinnedHeader header = mHeaders[viewIndex]; + if (header.visible && (animate || header.animating) && header.state == BOTTOM) { + header.sourceY = header.y; + if (!header.animating) { + header.visible = true; + header.targetY = getBottom() + header.height; + } + header.animating = true; + header.targetTime = mAnimationTargetTime; + header.targetVisible = false; + } else { + header.visible = false; + } + } + + private void ensurePinnedHeaderLayout(int viewIndex) { + View view = mHeaders[viewIndex].view; + if (view.isLayoutRequested()) { + int widthSpec = View.MeasureSpec.makeMeasureSpec(mHeaderWidth, View.MeasureSpec.EXACTLY); + int heightSpec; + ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); + if (layoutParams != null && layoutParams.height > 0) { + heightSpec = View.MeasureSpec + .makeMeasureSpec(layoutParams.height, View.MeasureSpec.EXACTLY); + } else { + heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); + } + view.measure(widthSpec, heightSpec); + int height = view.getMeasuredHeight(); + mHeaders[viewIndex].height = height; + view.layout(0, 0, mHeaderWidth, height); + } + } + + /** + * Returns the sum of heights of headers pinned to the top. + */ + public int getTotalTopPinnedHeaderHeight() { + for (int i = mSize; --i >= 0;) { + PinnedHeader header = mHeaders[i]; + if (header.visible && header.state == TOP) { + return header.y + header.height; + } + } + return 0; + } + + /** + * Returns the list item position at the specified y coordinate. + */ + public int getPositionAt(int y) { + do { + int position = pointToPosition(getPaddingLeft() + 1, y); + if (position != -1) { + return position; + } + // If position == -1, we must have hit a separator. Let's examine + // a nearby pixel + y--; + } while (y > 0); + return 0; + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + mHeaderTouched = false; + if (super.onInterceptTouchEvent(ev)) { + return true; + } + + if (mScrollState == SCROLL_STATE_IDLE) { + final int y = (int)ev.getY(); + final int x = (int)ev.getX(); + for (int i = mSize; --i >= 0;) { + PinnedHeader header = mHeaders[i]; + // For RTL layouts, this also takes into account that the scrollbar is on the left + // side. + final int padding = getPaddingLeft(); + if (header.visible && header.y <= y && header.y + header.height > y && + x >= padding && padding + mHeaderWidth >= x) { + mHeaderTouched = true; + if (mScrollToSectionOnHeaderTouch && + ev.getAction() == MotionEvent.ACTION_DOWN) { + return smoothScrollToPartition(i); + } else { + return true; + } + } + } + } + + return false; + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + if (mHeaderTouched) { + if (ev.getAction() == MotionEvent.ACTION_UP) { + mHeaderTouched = false; + } + return true; + } + return super.onTouchEvent(ev); + }; + + private boolean smoothScrollToPartition(int partition) { + final int position = mAdapter.getScrollPositionForHeader(partition); + if (position == -1) { + return false; + } + + int offset = 0; + for (int i = 0; i < partition; i++) { + PinnedHeader header = mHeaders[i]; + if (header.visible) { + offset += header.height; + } + } + smoothScrollToPositionFromTop(position + getHeaderViewsCount(), offset, + DEFAULT_SMOOTH_SCROLL_DURATION); + return true; + } + + private void invalidateIfAnimating() { + mAnimating = false; + for (int i = 0; i < mSize; i++) { + if (mHeaders[i].animating) { + mAnimating = true; + invalidate(); + return; + } + } + } + + @Override + protected void dispatchDraw(Canvas canvas) { + long currentTime = mAnimating ? System.currentTimeMillis() : 0; + + int top = 0; + int bottom = getBottom(); + boolean hasVisibleHeaders = false; + for (int i = 0; i < mSize; i++) { + PinnedHeader header = mHeaders[i]; + if (header.visible) { + hasVisibleHeaders = true; + if (header.state == BOTTOM && header.y < bottom) { + bottom = header.y; + } else if (header.state == TOP || header.state == FADING) { + int newTop = header.y + header.height; + if (newTop > top) { + top = newTop; + } + } + } + } + + if (hasVisibleHeaders) { + canvas.save(); + mClipRect.set(0, top, getWidth(), bottom); + canvas.clipRect(mClipRect); + } + + super.dispatchDraw(canvas); + + if (hasVisibleHeaders) { + canvas.restore(); + + // First draw top headers, then the bottom ones to handle the Z axis correctly + for (int i = mSize; --i >= 0;) { + PinnedHeader header = mHeaders[i]; + if (header.visible && (header.state == TOP || header.state == FADING)) { + drawHeader(canvas, header, currentTime); + } + } + + for (int i = 0; i < mSize; i++) { + PinnedHeader header = mHeaders[i]; + if (header.visible && header.state == BOTTOM) { + drawHeader(canvas, header, currentTime); + } + } + } + + invalidateIfAnimating(); + } + + private void drawHeader(Canvas canvas, PinnedHeader header, long currentTime) { + if (header.animating) { + int timeLeft = (int)(header.targetTime - currentTime); + if (timeLeft <= 0) { + header.y = header.targetY; + header.visible = header.targetVisible; + header.animating = false; + } else { + header.y = header.targetY + (header.sourceY - header.targetY) * timeLeft + / mAnimationDuration; + } + } + if (header.visible) { + View view = header.view; + int saveCount = canvas.save(); + canvas.translate(isLayoutRtl() ? + getWidth() - mHeaderPaddingStart - mHeaderWidth : mHeaderPaddingStart, + header.y); + if (header.state == FADING) { + mBounds.set(0, 0, mHeaderWidth, view.getHeight()); + canvas.saveLayerAlpha(mBounds, header.alpha, Canvas.ALL_SAVE_FLAG); + } + view.draw(canvas); + canvas.restoreToCount(saveCount); + } + } + + /** + * Note: this is a reimplementation of View.isLayoutRtl() since that is currently hidden api. + */ + public boolean isLayoutRtl() { + return (getLayoutDirection() == LAYOUT_DIRECTION_RTL); + } +} diff --git a/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java new file mode 100644 index 000000000..1b6316293 --- /dev/null +++ b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java @@ -0,0 +1,248 @@ +package com.android.launcher3.list; + +import android.content.Context; +import android.content.res.Resources; +import android.database.Cursor; +import android.graphics.Typeface; +import android.util.TypedValue; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import com.android.launcher3.Launcher; +import com.android.launcher3.OverviewSettingsPanel; +import com.android.launcher3.R; +import com.android.launcher3.settings.SettingsProvider; +import android.view.View.OnClickListener; +import android.content.SharedPreferences; + +public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { + private Launcher mLauncher; + private Context mContext; + + public SettingsPinnedHeaderAdapter(Context context) { + super(context); + mLauncher = (Launcher) context; + mContext = context; + } + + private String[] mHeaders; + public int mPinnedHeaderCount; + + public void setHeaders(String[] headers) { + this.mHeaders = headers; + } + + @Override + protected View newHeaderView(Context context, int partition, Cursor cursor, + ViewGroup parent) { + LayoutInflater inflater = LayoutInflater.from(context); + return inflater.inflate(R.layout.settings_pane_list_header, null); + } + + @Override + protected void bindHeaderView(View view, int partition, Cursor cursor) { + TextView textView = (TextView) view.findViewById(R.id.item_name); + textView.setText(mHeaders[partition]); + textView.setTypeface(textView.getTypeface(), Typeface.BOLD); + + textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16); + } + + @Override + protected View newView(Context context, int partition, Cursor cursor, int position, + ViewGroup parent) { + LayoutInflater inflater = LayoutInflater.from(context); + return inflater.inflate(R.layout.settings_pane_list_item, null); + } + + @Override + protected void bindView(View v, int partition, Cursor cursor, int position) { + TextView text = (TextView)v.findViewById(R.id.item_name); + String title = cursor.getString(1); + text.setText(title); + + Resources res = mLauncher.getResources(); + + if (title.equals(res + .getString(R.string.home_screen_search_text))) { + boolean current = mLauncher.shouldShowSearchBar(); + String state = current ? res.getString( + R.string.setting_state_on) : res.getString( + R.string.setting_state_off); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } else if (title.equals(res + .getString(R.string.drawer_sorting_text))) { + updateDrawerSortSettingsItem(v); + } else if (title.equals(res + .getString(R.string.drawer_scroll_effect_text)) && + partition == OverviewSettingsPanel.DRAWER_SETTINGS_POSITION) { + String state = mLauncher.getAppsCustomizeTransitionEffect(); + state = mapEffectToValue(state); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } else if (title.equals(res + .getString(R.string.page_scroll_effect_text)) && + partition == OverviewSettingsPanel.HOME_SETTINGS_POSITION) { + String state = mLauncher.getWorkspaceTransitionEffect(); + state = mapEffectToValue(state); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } else if (title.equals(res + .getString(R.string.larger_icons_text))) { + boolean current = SettingsProvider + .getBoolean( + mContext, + SettingsProvider.SETTINGS_UI_GENERAL_ICONS_LARGE, + R.bool.preferences_interface_general_icons_large_default); + String state = current ? res.getString( + R.string.setting_state_on) : res.getString( + R.string.setting_state_off); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } else if (title.equals(res + .getString(R.string.hide_icon_labels)) && + partition == OverviewSettingsPanel.HOME_SETTINGS_POSITION) { + boolean current = mLauncher.shouldHideWorkspaceIconLables(); + String state = current ? res.getString( + R.string.setting_state_on) : res.getString( + R.string.setting_state_off); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } else if (title.equals(res + .getString(R.string.hide_icon_labels)) && + partition == OverviewSettingsPanel.DRAWER_SETTINGS_POSITION) { + boolean current = SettingsProvider + .getBoolean( + mContext, + SettingsProvider.SETTINGS_UI_DRAWER_HIDE_ICON_LABELS, + R.bool.preferences_interface_drawer_hide_icon_labels_default); + String state = current ? res.getString( + R.string.setting_state_on) : res.getString( + R.string.setting_state_off); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } + + v.setTag(partition); + v.setOnClickListener(mSettingsItemListener); + } + + @Override + public View getPinnedHeaderView(int viewIndex, View convertView, ViewGroup parent) { + LayoutInflater inflater = LayoutInflater.from(getContext()); + View view = inflater.inflate(R.layout.settings_pane_list_header, parent, false); + view.setFocusable(false); + view.setEnabled(false); + bindHeaderView(view, viewIndex, null); + return view; + } + + @Override + public int getPinnedHeaderCount() { + return mPinnedHeaderCount; + } + + public void updateDrawerSortSettingsItem(View v) { + String state = ""; + switch (mLauncher.getAppsCustomizeContentSortMode()) { + case Title: + state = mLauncher.getResources().getString(R.string.sort_mode_title); + break; + case LaunchCount: + state = mLauncher.getResources().getString( + R.string.sort_mode_launch_count); + break; + case InstallTime: + state = mLauncher.getResources().getString( + R.string.sort_mode_install_time); + break; + } + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } + + private String mapEffectToValue(String effect) { + final String[] titles = mLauncher.getResources().getStringArray( + R.array.transition_effect_entries); + final String[] values = mLauncher.getResources().getStringArray( + R.array.transition_effect_values); + + int length = values.length; + for (int i = 0; i < length; i++) { + if (effect.equals(values[i])) { + return titles[i]; + } + } + return ""; + } + + OnClickListener mSettingsItemListener = new OnClickListener() { + + @Override + public void onClick(View v) { + // TODO Auto-generated method stub + String value = ((TextView) v.findViewById(R.id.item_name)).getText().toString(); + Resources res = mLauncher.getResources(); + + // Handle toggles or launch pickers + if (value.equals(res + .getString(R.string.home_screen_search_text))) { + onSettingsBooleanChanged( + v, + SettingsProvider.SETTINGS_UI_HOMESCREEN_SEARCH, + R.bool.preferences_interface_homescreen_search_default); + mLauncher.updateDynamicGrid(); + } else if (value.equals(res + .getString(R.string.drawer_sorting_text))) { + mLauncher.onClickSortModeButton(v); + } else if (value.equals(res + .getString(R.string.drawer_scroll_effect_text)) && + ((Integer)v.getTag() == OverviewSettingsPanel.DRAWER_SETTINGS_POSITION)) { + mLauncher.onClickTransitionEffectButton(v, true); + } else if (value.equals(res + .getString(R.string.page_scroll_effect_text)) && + ((Integer)v.getTag() == OverviewSettingsPanel.HOME_SETTINGS_POSITION)) { + mLauncher.onClickTransitionEffectButton(v, false); + } else if (value.equals(res + .getString(R.string.larger_icons_text))) { + onSettingsBooleanChanged( + v, + SettingsProvider.SETTINGS_UI_GENERAL_ICONS_LARGE, + R.bool.preferences_interface_general_icons_large_default); + mLauncher.updateDynamicGrid(); + } else if (value.equals(res + .getString(R.string.hide_icon_labels)) && + ((Integer)v.getTag() == OverviewSettingsPanel.HOME_SETTINGS_POSITION)) { + onSettingsBooleanChanged( + v, + SettingsProvider.SETTINGS_UI_HOMESCREEN_HIDE_ICON_LABELS, + R.bool.preferences_interface_homescreen_hide_icon_labels_default); + mLauncher.updateDynamicGrid(); + } else if (value.equals(res + .getString(R.string.hide_icon_labels)) && + ((Integer)v.getTag() == OverviewSettingsPanel.DRAWER_SETTINGS_POSITION)) { + onSettingsBooleanChanged( + v, + SettingsProvider.SETTINGS_UI_DRAWER_HIDE_ICON_LABELS, + R.bool.preferences_interface_drawer_hide_icon_labels_default); + mLauncher.updateDynamicGrid(); + } + + View defaultHome = mLauncher.findViewById(R.id.default_home_screen_panel); + defaultHome.setVisibility(getCursor(0).getCount() > 1 ? View.VISIBLE : View.GONE); + } + }; + + private void onSettingsBooleanChanged(View v, String key, int res) { + boolean current = SettingsProvider.getBoolean( + mContext, key, res); + + // Set new state + SharedPreferences sharedPref = SettingsProvider + .get(mContext); + sharedPref.edit().putBoolean(key, !current).commit(); + sharedPref.edit() + .putBoolean(SettingsProvider.SETTINGS_CHANGED, true) + .commit(); + + String state = current ? mLauncher.getResources().getString( + R.string.setting_state_off) : mLauncher.getResources().getString( + R.string.setting_state_on); + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } +} |