summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaj Yengisetty <rajesh@cyngn.com>2014-11-10 18:35:00 (GMT)
committerAdnan <adnan@cyngn.com>2014-11-19 23:53:46 (GMT)
commit0daed36da7dab3172f05aa3dc29b7facac01ce6e (patch)
tree284e4d166ce0ffaa557c7fe1c99cbd35ac35aa70
parentae5f7ce8ed2e385cba8d65a67d9b108c9c3590e8 (diff)
downloadandroid_packages_apps_Trebuchet-0daed36da7dab3172f05aa3dc29b7facac01ce6e.zip
android_packages_apps_Trebuchet-0daed36da7dab3172f05aa3dc29b7facac01ce6e.tar.gz
android_packages_apps_Trebuchet-0daed36da7dab3172f05aa3dc29b7facac01ce6e.tar.bz2
Trebuchet Settings UI Refresh.
- Overview Panel contains all Launcher Settings - Accessible through long press on Workspace or HW Menu button - Settings are held in a SlidingPanel in the Overview Panel - Replace the Settings shortcut in Overview Panel with Themes shortcut - Replace widgets icon with new widgets icon from Launcher3 - Trebuchet Settings changes no longer require restarting Process - Transition Effects have PNG Sequence to show animation sequence - Remove PageIndicator click event to open Overview Panel in AppTray Contributors: Adrian Foulk - UX Lead Abishek Devkota - Project Manager Hayden Schoen - UX Designer Change-Id: I2186213960cf12e840e814757894fe104551856b
-rw-r--r--Android.mk2
-rw-r--r--res/anim/drop_down.xml13
-rw-r--r--res/anim/enter_from_left.xml12
-rw-r--r--res/anim/enter_from_right.xml12
-rw-r--r--res/anim/exit_out_left.xml13
-rw-r--r--res/anim/exit_out_right.xml12
-rw-r--r--res/color/listitem_text.xml6
-rw-r--r--res/drawable-hdpi/ic_default_screen.pngbin0 -> 2046 bytes
-rw-r--r--res/drawable-hdpi/ic_default_screen_pressed.pngbin0 -> 1993 bytes
-rw-r--r--res/drawable-mdpi/ic_default_screen.pngbin0 -> 1597 bytes
-rw-r--r--res/drawable-mdpi/ic_default_screen_pressed.pngbin0 -> 1626 bytes
-rw-r--r--res/drawable-xhdpi/ic_default_screen.pngbin0 -> 2323 bytes
-rw-r--r--res/drawable-xhdpi/ic_default_screen_pressed.pngbin0 -> 2385 bytes
-rw-r--r--res/drawable-xxhdpi/ic_default_screen.pngbin0 -> 3187 bytes
-rw-r--r--res/drawable-xxhdpi/ic_default_screen_pressed.pngbin0 -> 3237 bytes
-rw-r--r--res/drawable/above_shadow.xml8
-rw-r--r--res/drawable/acordian_00000.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00001.pngbin0 -> 209 bytes
-rw-r--r--res/drawable/acordian_00002.pngbin0 -> 225 bytes
-rw-r--r--res/drawable/acordian_00003.pngbin0 -> 235 bytes
-rw-r--r--res/drawable/acordian_00004.pngbin0 -> 233 bytes
-rw-r--r--res/drawable/acordian_00005.pngbin0 -> 230 bytes
-rw-r--r--res/drawable/acordian_00006.pngbin0 -> 245 bytes
-rw-r--r--res/drawable/acordian_00007.pngbin0 -> 243 bytes
-rw-r--r--res/drawable/acordian_00008.pngbin0 -> 258 bytes
-rw-r--r--res/drawable/acordian_00009.pngbin0 -> 204 bytes
-rw-r--r--res/drawable/acordian_00010.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00011.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00012.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00013.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00014.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00015.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00016.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00017.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00018.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00019.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00020.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00021.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00022.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00023.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00024.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00025.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00026.pngbin0 -> 210 bytes
-rw-r--r--res/drawable/acordian_00027.pngbin0 -> 204 bytes
-rw-r--r--res/drawable/acordian_00028.pngbin0 -> 258 bytes
-rw-r--r--res/drawable/acordian_00029.pngbin0 -> 243 bytes
-rw-r--r--res/drawable/acordian_00030.pngbin0 -> 245 bytes
-rw-r--r--res/drawable/acordian_00031.pngbin0 -> 239 bytes
-rw-r--r--res/drawable/acordian_00032.pngbin0 -> 233 bytes
-rw-r--r--res/drawable/acordian_00033.pngbin0 -> 235 bytes
-rw-r--r--res/drawable/acordian_00034.pngbin0 -> 225 bytes
-rw-r--r--res/drawable/acordian_00035.pngbin0 -> 209 bytes
-rw-r--r--res/drawable/acordian_00036.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00037.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00038.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00039.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00040.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00041.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00042.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00043.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00044.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00045.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00046.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00047.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00048.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/acordian_00049.pngbin0 -> 214 bytes
-rw-r--r--res/drawable/below_shadow.xml8
-rw-r--r--res/drawable/carousel_00000.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00001.pngbin0 -> 168 bytes
-rw-r--r--res/drawable/carousel_00002.pngbin0 -> 192 bytes
-rw-r--r--res/drawable/carousel_00003.pngbin0 -> 218 bytes
-rw-r--r--res/drawable/carousel_00004.pngbin0 -> 267 bytes
-rw-r--r--res/drawable/carousel_00005.pngbin0 -> 257 bytes
-rw-r--r--res/drawable/carousel_00006.pngbin0 -> 285 bytes
-rw-r--r--res/drawable/carousel_00007.pngbin0 -> 299 bytes
-rw-r--r--res/drawable/carousel_00008.pngbin0 -> 282 bytes
-rw-r--r--res/drawable/carousel_00009.pngbin0 -> 298 bytes
-rw-r--r--res/drawable/carousel_00010.pngbin0 -> 299 bytes
-rw-r--r--res/drawable/carousel_00011.pngbin0 -> 296 bytes
-rw-r--r--res/drawable/carousel_00012.pngbin0 -> 348 bytes
-rw-r--r--res/drawable/carousel_00013.pngbin0 -> 366 bytes
-rw-r--r--res/drawable/carousel_00014.pngbin0 -> 360 bytes
-rw-r--r--res/drawable/carousel_00015.pngbin0 -> 373 bytes
-rw-r--r--res/drawable/carousel_00016.pngbin0 -> 364 bytes
-rw-r--r--res/drawable/carousel_00017.pngbin0 -> 307 bytes
-rw-r--r--res/drawable/carousel_00018.pngbin0 -> 267 bytes
-rw-r--r--res/drawable/carousel_00019.pngbin0 -> 202 bytes
-rw-r--r--res/drawable/carousel_00020.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00021.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00022.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00023.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00024.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00025.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00026.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00027.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00028.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00029.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00030.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00031.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00032.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00033.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00034.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00035.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00036.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00037.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00038.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00039.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00040.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00041.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00042.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00043.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00044.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00045.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00046.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00047.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00048.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/carousel_00049.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/cubein_00000.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/cubein_00001.pngbin0 -> 201 bytes
-rw-r--r--res/drawable/cubein_00002.pngbin0 -> 260 bytes
-rw-r--r--res/drawable/cubein_00003.pngbin0 -> 316 bytes
-rw-r--r--res/drawable/cubein_00004.pngbin0 -> 358 bytes
-rw-r--r--res/drawable/cubein_00005.pngbin0 -> 365 bytes
-rw-r--r--res/drawable/cubein_00006.pngbin0 -> 411 bytes
-rw-r--r--res/drawable/cubein_00007.pngbin0 -> 425 bytes
-rw-r--r--res/drawable/cubein_00008.pngbin0 -> 407 bytes
-rw-r--r--res/drawable/cubein_00009.pngbin0 -> 415 bytes
-rw-r--r--res/drawable/cubein_00010.pngbin0 -> 411 bytes
-rw-r--r--res/drawable/cubein_00011.pngbin0 -> 429 bytes
-rw-r--r--res/drawable/cubein_00012.pngbin0 -> 413 bytes
-rw-r--r--res/drawable/cubein_00013.pngbin0 -> 405 bytes
-rw-r--r--res/drawable/cubein_00014.pngbin0 -> 383 bytes
-rw-r--r--res/drawable/cubein_00015.pngbin0 -> 356 bytes
-rw-r--r--res/drawable/cubein_00016.pngbin0 -> 368 bytes
-rw-r--r--res/drawable/cubein_00017.pngbin0 -> 318 bytes
-rw-r--r--res/drawable/cubein_00018.pngbin0 -> 257 bytes
-rw-r--r--res/drawable/cubein_00019.pngbin0 -> 198 bytes
-rw-r--r--res/drawable/cubein_00020.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00021.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00022.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00023.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00024.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00025.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00026.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00027.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00028.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00029.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00030.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00031.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00032.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00033.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00034.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00035.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00036.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00037.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00038.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00039.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00040.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00041.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00042.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00043.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00044.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00045.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00046.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00047.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00048.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubein_00049.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00000.pngbin0 -> 153 bytes
-rw-r--r--res/drawable/cubeout_00001.pngbin0 -> 206 bytes
-rw-r--r--res/drawable/cubeout_00002.pngbin0 -> 208 bytes
-rw-r--r--res/drawable/cubeout_00003.pngbin0 -> 225 bytes
-rw-r--r--res/drawable/cubeout_00004.pngbin0 -> 260 bytes
-rw-r--r--res/drawable/cubeout_00005.pngbin0 -> 327 bytes
-rw-r--r--res/drawable/cubeout_00006.pngbin0 -> 340 bytes
-rw-r--r--res/drawable/cubeout_00007.pngbin0 -> 327 bytes
-rw-r--r--res/drawable/cubeout_00008.pngbin0 -> 346 bytes
-rw-r--r--res/drawable/cubeout_00009.pngbin0 -> 343 bytes
-rw-r--r--res/drawable/cubeout_00010.pngbin0 -> 339 bytes
-rw-r--r--res/drawable/cubeout_00011.pngbin0 -> 332 bytes
-rw-r--r--res/drawable/cubeout_00012.pngbin0 -> 352 bytes
-rw-r--r--res/drawable/cubeout_00013.pngbin0 -> 327 bytes
-rw-r--r--res/drawable/cubeout_00014.pngbin0 -> 329 bytes
-rw-r--r--res/drawable/cubeout_00015.pngbin0 -> 318 bytes
-rw-r--r--res/drawable/cubeout_00016.pngbin0 -> 266 bytes
-rw-r--r--res/drawable/cubeout_00017.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/cubeout_00018.pngbin0 -> 205 bytes
-rw-r--r--res/drawable/cubeout_00019.pngbin0 -> 167 bytes
-rw-r--r--res/drawable/cubeout_00020.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00021.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00022.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00023.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00024.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00025.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00026.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00027.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00028.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00029.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00030.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00031.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00032.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00033.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00034.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00035.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00036.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00037.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00038.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00039.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00040.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00041.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00042.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00043.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00044.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00045.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00046.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00047.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00048.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cubeout_00049.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/cylinderin_00000.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00001.pngbin0 -> 451 bytes
-rw-r--r--res/drawable/cylinderin_00002.pngbin0 -> 449 bytes
-rw-r--r--res/drawable/cylinderin_00003.pngbin0 -> 436 bytes
-rw-r--r--res/drawable/cylinderin_00004.pngbin0 -> 477 bytes
-rw-r--r--res/drawable/cylinderin_00005.pngbin0 -> 502 bytes
-rw-r--r--res/drawable/cylinderin_00006.pngbin0 -> 489 bytes
-rw-r--r--res/drawable/cylinderin_00007.pngbin0 -> 494 bytes
-rw-r--r--res/drawable/cylinderin_00008.pngbin0 -> 491 bytes
-rw-r--r--res/drawable/cylinderin_00009.pngbin0 -> 516 bytes
-rw-r--r--res/drawable/cylinderin_00010.pngbin0 -> 476 bytes
-rw-r--r--res/drawable/cylinderin_00011.pngbin0 -> 500 bytes
-rw-r--r--res/drawable/cylinderin_00012.pngbin0 -> 475 bytes
-rw-r--r--res/drawable/cylinderin_00013.pngbin0 -> 487 bytes
-rw-r--r--res/drawable/cylinderin_00014.pngbin0 -> 555 bytes
-rw-r--r--res/drawable/cylinderin_00015.pngbin0 -> 475 bytes
-rw-r--r--res/drawable/cylinderin_00016.pngbin0 -> 485 bytes
-rw-r--r--res/drawable/cylinderin_00017.pngbin0 -> 487 bytes
-rw-r--r--res/drawable/cylinderin_00018.pngbin0 -> 430 bytes
-rw-r--r--res/drawable/cylinderin_00019.pngbin0 -> 444 bytes
-rw-r--r--res/drawable/cylinderin_00020.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00021.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00022.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00023.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00024.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00025.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00026.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00027.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00028.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00029.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00030.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00031.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00032.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00033.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00034.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00035.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00036.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00037.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00038.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00039.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00040.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00041.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00042.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00043.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00044.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00045.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00046.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00047.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00048.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderin_00049.pngbin0 -> 421 bytes
-rw-r--r--res/drawable/cylinderout_00000.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00001.pngbin0 -> 389 bytes
-rw-r--r--res/drawable/cylinderout_00002.pngbin0 -> 376 bytes
-rw-r--r--res/drawable/cylinderout_00003.pngbin0 -> 374 bytes
-rw-r--r--res/drawable/cylinderout_00004.pngbin0 -> 419 bytes
-rw-r--r--res/drawable/cylinderout_00005.pngbin0 -> 417 bytes
-rw-r--r--res/drawable/cylinderout_00006.pngbin0 -> 414 bytes
-rw-r--r--res/drawable/cylinderout_00007.pngbin0 -> 400 bytes
-rw-r--r--res/drawable/cylinderout_00008.pngbin0 -> 466 bytes
-rw-r--r--res/drawable/cylinderout_00009.pngbin0 -> 430 bytes
-rw-r--r--res/drawable/cylinderout_00010.pngbin0 -> 394 bytes
-rw-r--r--res/drawable/cylinderout_00011.pngbin0 -> 412 bytes
-rw-r--r--res/drawable/cylinderout_00012.pngbin0 -> 420 bytes
-rw-r--r--res/drawable/cylinderout_00013.pngbin0 -> 404 bytes
-rw-r--r--res/drawable/cylinderout_00014.pngbin0 -> 415 bytes
-rw-r--r--res/drawable/cylinderout_00015.pngbin0 -> 446 bytes
-rw-r--r--res/drawable/cylinderout_00016.pngbin0 -> 418 bytes
-rw-r--r--res/drawable/cylinderout_00017.pngbin0 -> 377 bytes
-rw-r--r--res/drawable/cylinderout_00018.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00019.pngbin0 -> 394 bytes
-rw-r--r--res/drawable/cylinderout_00020.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00021.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00022.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00023.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00024.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00025.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00026.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00027.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00028.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00029.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00030.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00031.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00032.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00033.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00034.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00035.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00036.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00037.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00038.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00039.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00040.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00041.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00042.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00043.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00044.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00045.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00046.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00047.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00048.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/cylinderout_00049.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/flip_00000.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00001.pngbin0 -> 208 bytes
-rw-r--r--res/drawable/flip_00002.pngbin0 -> 221 bytes
-rw-r--r--res/drawable/flip_00003.pngbin0 -> 243 bytes
-rw-r--r--res/drawable/flip_00004.pngbin0 -> 346 bytes
-rw-r--r--res/drawable/flip_00005.pngbin0 -> 321 bytes
-rw-r--r--res/drawable/flip_00006.pngbin0 -> 364 bytes
-rw-r--r--res/drawable/flip_00007.pngbin0 -> 377 bytes
-rw-r--r--res/drawable/flip_00008.pngbin0 -> 359 bytes
-rw-r--r--res/drawable/flip_00009.pngbin0 -> 360 bytes
-rw-r--r--res/drawable/flip_00010.pngbin0 -> 359 bytes
-rw-r--r--res/drawable/flip_00011.pngbin0 -> 378 bytes
-rw-r--r--res/drawable/flip_00012.pngbin0 -> 378 bytes
-rw-r--r--res/drawable/flip_00013.pngbin0 -> 369 bytes
-rw-r--r--res/drawable/flip_00014.pngbin0 -> 341 bytes
-rw-r--r--res/drawable/flip_00015.pngbin0 -> 353 bytes
-rw-r--r--res/drawable/flip_00016.pngbin0 -> 325 bytes
-rw-r--r--res/drawable/flip_00017.pngbin0 -> 259 bytes
-rw-r--r--res/drawable/flip_00018.pngbin0 -> 204 bytes
-rw-r--r--res/drawable/flip_00019.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/flip_00020.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00021.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00022.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00023.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00024.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00025.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00026.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00027.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00028.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00029.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00030.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00031.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00032.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00033.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00034.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00035.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00036.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00037.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00038.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00039.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00040.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00041.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00042.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00043.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00044.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00045.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00046.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00047.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00048.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/flip_00049.pngbin0 -> 178 bytes
-rw-r--r--res/drawable/handle.pngbin0 -> 442 bytes
-rw-r--r--res/drawable/handle_left.pngbin0 -> 370 bytes
-rw-r--r--res/drawable/handle_reversed.pngbin0 -> 442 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00000.pngbin0 -> 661 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00001.pngbin0 -> 749 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00002.pngbin0 -> 705 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00003.pngbin0 -> 746 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00004.pngbin0 -> 747 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00005.pngbin0 -> 664 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00006.pngbin0 -> 1007 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00007.pngbin0 -> 999 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00008.pngbin0 -> 710 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00009.pngbin0 -> 968 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00010.pngbin0 -> 990 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00011.pngbin0 -> 671 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00012.pngbin0 -> 744 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00013.pngbin0 -> 750 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00014.pngbin0 -> 747 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00015.pngbin0 -> 736 bytes
-rw-r--r--res/drawable/launcheranimatedarrow_00016.pngbin0 -> 668 bytes
-rw-r--r--res/drawable/listitem_bg.xml6
-rw-r--r--res/drawable/listitem_selector.xml6
-rw-r--r--res/drawable/lock.pngbin0 -> 19461 bytes
-rw-r--r--res/drawable/none_00000.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/none_00001.pngbin0 -> 234 bytes
-rw-r--r--res/drawable/none_00002.pngbin0 -> 247 bytes
-rw-r--r--res/drawable/none_00003.pngbin0 -> 222 bytes
-rw-r--r--res/drawable/none_00004.pngbin0 -> 265 bytes
-rw-r--r--res/drawable/none_00005.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/none_00006.pngbin0 -> 258 bytes
-rw-r--r--res/drawable/none_00007.pngbin0 -> 250 bytes
-rw-r--r--res/drawable/none_00008.pngbin0 -> 256 bytes
-rw-r--r--res/drawable/none_00009.pngbin0 -> 247 bytes
-rw-r--r--res/drawable/none_00010.pngbin0 -> 253 bytes
-rw-r--r--res/drawable/none_00011.pngbin0 -> 261 bytes
-rw-r--r--res/drawable/none_00012.pngbin0 -> 274 bytes
-rw-r--r--res/drawable/none_00013.pngbin0 -> 252 bytes
-rw-r--r--res/drawable/none_00014.pngbin0 -> 263 bytes
-rw-r--r--res/drawable/none_00015.pngbin0 -> 267 bytes
-rw-r--r--res/drawable/none_00016.pngbin0 -> 232 bytes
-rw-r--r--res/drawable/none_00017.pngbin0 -> 222 bytes
-rw-r--r--res/drawable/none_00018.pngbin0 -> 219 bytes
-rw-r--r--res/drawable/none_00019.pngbin0 -> 223 bytes
-rw-r--r--res/drawable/none_00020.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00021.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00022.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00023.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00024.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00025.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00026.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00027.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00028.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00029.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00030.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00031.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00032.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00033.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00034.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00035.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00036.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00037.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00038.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00039.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00040.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00041.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00042.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00043.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00044.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00045.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00046.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00047.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00048.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/none_00049.pngbin0 -> 220 bytes
-rw-r--r--res/drawable/overview_00000.pngbin0 -> 223 bytes
-rw-r--r--res/drawable/overview_00001.pngbin0 -> 268 bytes
-rw-r--r--res/drawable/overview_00002.pngbin0 -> 283 bytes
-rw-r--r--res/drawable/overview_00003.pngbin0 -> 265 bytes
-rw-r--r--res/drawable/overview_00004.pngbin0 -> 277 bytes
-rw-r--r--res/drawable/overview_00005.pngbin0 -> 251 bytes
-rw-r--r--res/drawable/overview_00006.pngbin0 -> 256 bytes
-rw-r--r--res/drawable/overview_00007.pngbin0 -> 242 bytes
-rw-r--r--res/drawable/overview_00008.pngbin0 -> 254 bytes
-rw-r--r--res/drawable/overview_00009.pngbin0 -> 265 bytes
-rw-r--r--res/drawable/overview_00010.pngbin0 -> 247 bytes
-rw-r--r--res/drawable/overview_00011.pngbin0 -> 266 bytes
-rw-r--r--res/drawable/overview_00012.pngbin0 -> 244 bytes
-rw-r--r--res/drawable/overview_00013.pngbin0 -> 240 bytes
-rw-r--r--res/drawable/overview_00014.pngbin0 -> 224 bytes
-rw-r--r--res/drawable/overview_00015.pngbin0 -> 244 bytes
-rw-r--r--res/drawable/overview_00016.pngbin0 -> 254 bytes
-rw-r--r--res/drawable/overview_00017.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/overview_00018.pngbin0 -> 253 bytes
-rw-r--r--res/drawable/overview_00019.pngbin0 -> 259 bytes
-rw-r--r--res/drawable/overview_00020.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00021.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00022.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00023.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00024.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00025.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00026.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00027.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00028.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00029.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00030.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00031.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00032.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00033.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00034.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00035.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00036.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00037.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00038.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00039.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00040.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00041.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00042.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00043.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00044.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00045.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00046.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00047.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00048.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/overview_00049.pngbin0 -> 226 bytes
-rw-r--r--res/drawable/rotatedown_00000.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00001.pngbin0 -> 189 bytes
-rw-r--r--res/drawable/rotatedown_00002.pngbin0 -> 285 bytes
-rw-r--r--res/drawable/rotatedown_00003.pngbin0 -> 375 bytes
-rw-r--r--res/drawable/rotatedown_00004.pngbin0 -> 435 bytes
-rw-r--r--res/drawable/rotatedown_00005.pngbin0 -> 502 bytes
-rw-r--r--res/drawable/rotatedown_00006.pngbin0 -> 485 bytes
-rw-r--r--res/drawable/rotatedown_00007.pngbin0 -> 530 bytes
-rw-r--r--res/drawable/rotatedown_00008.pngbin0 -> 491 bytes
-rw-r--r--res/drawable/rotatedown_00009.pngbin0 -> 488 bytes
-rw-r--r--res/drawable/rotatedown_00010.pngbin0 -> 578 bytes
-rw-r--r--res/drawable/rotatedown_00011.pngbin0 -> 498 bytes
-rw-r--r--res/drawable/rotatedown_00012.pngbin0 -> 520 bytes
-rw-r--r--res/drawable/rotatedown_00013.pngbin0 -> 1100 bytes
-rw-r--r--res/drawable/rotatedown_00014.pngbin0 -> 1016 bytes
-rw-r--r--res/drawable/rotatedown_00015.pngbin0 -> 761 bytes
-rw-r--r--res/drawable/rotatedown_00016.pngbin0 -> 924 bytes
-rw-r--r--res/drawable/rotatedown_00017.pngbin0 -> 1024 bytes
-rw-r--r--res/drawable/rotatedown_00018.pngbin0 -> 514 bytes
-rw-r--r--res/drawable/rotatedown_00019.pngbin0 -> 479 bytes
-rw-r--r--res/drawable/rotatedown_00020.pngbin0 -> 532 bytes
-rw-r--r--res/drawable/rotatedown_00021.pngbin0 -> 519 bytes
-rw-r--r--res/drawable/rotatedown_00022.pngbin0 -> 491 bytes
-rw-r--r--res/drawable/rotatedown_00023.pngbin0 -> 533 bytes
-rw-r--r--res/drawable/rotatedown_00024.pngbin0 -> 482 bytes
-rw-r--r--res/drawable/rotatedown_00025.pngbin0 -> 465 bytes
-rw-r--r--res/drawable/rotatedown_00026.pngbin0 -> 429 bytes
-rw-r--r--res/drawable/rotatedown_00027.pngbin0 -> 384 bytes
-rw-r--r--res/drawable/rotatedown_00028.pngbin0 -> 280 bytes
-rw-r--r--res/drawable/rotatedown_00029.pngbin0 -> 205 bytes
-rw-r--r--res/drawable/rotatedown_00030.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00031.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00032.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00033.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00034.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00035.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00036.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00037.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00038.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00039.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00040.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00041.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00042.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00043.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00044.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00045.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00046.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00047.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00048.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotatedown_00049.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00000.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00001.pngbin0 -> 189 bytes
-rw-r--r--res/drawable/rotateup_00002.pngbin0 -> 285 bytes
-rw-r--r--res/drawable/rotateup_00003.pngbin0 -> 368 bytes
-rw-r--r--res/drawable/rotateup_00004.pngbin0 -> 432 bytes
-rw-r--r--res/drawable/rotateup_00005.pngbin0 -> 495 bytes
-rw-r--r--res/drawable/rotateup_00006.pngbin0 -> 485 bytes
-rw-r--r--res/drawable/rotateup_00007.pngbin0 -> 536 bytes
-rw-r--r--res/drawable/rotateup_00008.pngbin0 -> 495 bytes
-rw-r--r--res/drawable/rotateup_00009.pngbin0 -> 527 bytes
-rw-r--r--res/drawable/rotateup_00010.pngbin0 -> 569 bytes
-rw-r--r--res/drawable/rotateup_00011.pngbin0 -> 505 bytes
-rw-r--r--res/drawable/rotateup_00012.pngbin0 -> 517 bytes
-rw-r--r--res/drawable/rotateup_00013.pngbin0 -> 1114 bytes
-rw-r--r--res/drawable/rotateup_00014.pngbin0 -> 996 bytes
-rw-r--r--res/drawable/rotateup_00015.pngbin0 -> 768 bytes
-rw-r--r--res/drawable/rotateup_00016.pngbin0 -> 937 bytes
-rw-r--r--res/drawable/rotateup_00017.pngbin0 -> 1013 bytes
-rw-r--r--res/drawable/rotateup_00018.pngbin0 -> 517 bytes
-rw-r--r--res/drawable/rotateup_00019.pngbin0 -> 469 bytes
-rw-r--r--res/drawable/rotateup_00020.pngbin0 -> 587 bytes
-rw-r--r--res/drawable/rotateup_00021.pngbin0 -> 519 bytes
-rw-r--r--res/drawable/rotateup_00022.pngbin0 -> 479 bytes
-rw-r--r--res/drawable/rotateup_00023.pngbin0 -> 535 bytes
-rw-r--r--res/drawable/rotateup_00024.pngbin0 -> 486 bytes
-rw-r--r--res/drawable/rotateup_00025.pngbin0 -> 461 bytes
-rw-r--r--res/drawable/rotateup_00026.pngbin0 -> 438 bytes
-rw-r--r--res/drawable/rotateup_00027.pngbin0 -> 380 bytes
-rw-r--r--res/drawable/rotateup_00028.pngbin0 -> 274 bytes
-rw-r--r--res/drawable/rotateup_00029.pngbin0 -> 205 bytes
-rw-r--r--res/drawable/rotateup_00030.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00031.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00032.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00033.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00034.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00035.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00036.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00037.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00038.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00039.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00040.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00041.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00042.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00043.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00044.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00045.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00046.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00047.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00048.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/rotateup_00049.pngbin0 -> 173 bytes
-rw-r--r--res/drawable/stack_00000.pngbin0 -> 203 bytes
-rw-r--r--res/drawable/stack_00001.pngbin0 -> 217 bytes
-rw-r--r--res/drawable/stack_00002.pngbin0 -> 216 bytes
-rw-r--r--res/drawable/stack_00003.pngbin0 -> 216 bytes
-rw-r--r--res/drawable/stack_00004.pngbin0 -> 241 bytes
-rw-r--r--res/drawable/stack_00005.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/stack_00006.pngbin0 -> 234 bytes
-rw-r--r--res/drawable/stack_00007.pngbin0 -> 240 bytes
-rw-r--r--res/drawable/stack_00008.pngbin0 -> 285 bytes
-rw-r--r--res/drawable/stack_00009.pngbin0 -> 295 bytes
-rw-r--r--res/drawable/stack_00010.pngbin0 -> 289 bytes
-rw-r--r--res/drawable/stack_00011.pngbin0 -> 284 bytes
-rw-r--r--res/drawable/stack_00012.pngbin0 -> 290 bytes
-rw-r--r--res/drawable/stack_00013.pngbin0 -> 278 bytes
-rw-r--r--res/drawable/stack_00014.pngbin0 -> 266 bytes
-rw-r--r--res/drawable/stack_00015.pngbin0 -> 294 bytes
-rw-r--r--res/drawable/stack_00016.pngbin0 -> 285 bytes
-rw-r--r--res/drawable/stack_00017.pngbin0 -> 272 bytes
-rw-r--r--res/drawable/stack_00018.pngbin0 -> 574 bytes
-rw-r--r--res/drawable/stack_00019.pngbin0 -> 213 bytes
-rw-r--r--res/drawable/stack_00020.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00021.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00022.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00023.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00024.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00025.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00026.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00027.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00028.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00029.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00030.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00031.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00032.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00033.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00034.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00035.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00036.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00037.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00038.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00039.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00040.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00041.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00042.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00043.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00044.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00045.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00046.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00047.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00048.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/stack_00049.pngbin0 -> 215 bytes
-rw-r--r--res/drawable/transition_accordion.xml54
-rw-r--r--res/drawable/transition_arrow.xml21
-rw-r--r--res/drawable/transition_arrow_reverse.xml21
-rw-r--r--res/drawable/transition_carousel.xml55
-rw-r--r--res/drawable/transition_cubein.xml55
-rw-r--r--res/drawable/transition_cubeout.xml55
-rw-r--r--res/drawable/transition_cylinderin.xml55
-rw-r--r--res/drawable/transition_cylinderout.xml55
-rw-r--r--res/drawable/transition_flip.xml55
-rw-r--r--res/drawable/transition_none.xml55
-rw-r--r--res/drawable/transition_overview.xml55
-rw-r--r--res/drawable/transition_rotatedown.xml55
-rw-r--r--res/drawable/transition_rotateup.xml55
-rw-r--r--res/drawable/transition_stack.xml55
-rw-r--r--res/drawable/transition_zoomin.xml55
-rw-r--r--res/drawable/transition_zoomout.xml55
-rw-r--r--res/drawable/zoomin_00000.pngbin0 -> 231 bytes
-rw-r--r--res/drawable/zoomin_00001.pngbin0 -> 263 bytes
-rw-r--r--res/drawable/zoomin_00002.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomin_00003.pngbin0 -> 272 bytes
-rw-r--r--res/drawable/zoomin_00004.pngbin0 -> 287 bytes
-rw-r--r--res/drawable/zoomin_00005.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomin_00006.pngbin0 -> 285 bytes
-rw-r--r--res/drawable/zoomin_00007.pngbin0 -> 328 bytes
-rw-r--r--res/drawable/zoomin_00008.pngbin0 -> 303 bytes
-rw-r--r--res/drawable/zoomin_00009.pngbin0 -> 296 bytes
-rw-r--r--res/drawable/zoomin_00010.pngbin0 -> 307 bytes
-rw-r--r--res/drawable/zoomin_00011.pngbin0 -> 306 bytes
-rw-r--r--res/drawable/zoomin_00012.pngbin0 -> 300 bytes
-rw-r--r--res/drawable/zoomin_00013.pngbin0 -> 294 bytes
-rw-r--r--res/drawable/zoomin_00014.pngbin0 -> 308 bytes
-rw-r--r--res/drawable/zoomin_00015.pngbin0 -> 321 bytes
-rw-r--r--res/drawable/zoomin_00016.pngbin0 -> 321 bytes
-rw-r--r--res/drawable/zoomin_00017.pngbin0 -> 270 bytes
-rw-r--r--res/drawable/zoomin_00018.pngbin0 -> 248 bytes
-rw-r--r--res/drawable/zoomin_00019.pngbin0 -> 247 bytes
-rw-r--r--res/drawable/zoomin_00020.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00021.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00022.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00023.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00024.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00025.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00026.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00027.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00028.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00029.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00030.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00031.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00032.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00033.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00034.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00035.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00036.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00037.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00038.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00039.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00040.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00041.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00042.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00043.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00044.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00045.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00046.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00047.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00048.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomin_00049.pngbin0 -> 246 bytes
-rw-r--r--res/drawable/zoomout_00000.pngbin0 -> 286 bytes
-rw-r--r--res/drawable/zoomout_00001.pngbin0 -> 271 bytes
-rw-r--r--res/drawable/zoomout_00002.pngbin0 -> 295 bytes
-rw-r--r--res/drawable/zoomout_00003.pngbin0 -> 293 bytes
-rw-r--r--res/drawable/zoomout_00004.pngbin0 -> 334 bytes
-rw-r--r--res/drawable/zoomout_00005.pngbin0 -> 337 bytes
-rw-r--r--res/drawable/zoomout_00006.pngbin0 -> 342 bytes
-rw-r--r--res/drawable/zoomout_00007.pngbin0 -> 336 bytes
-rw-r--r--res/drawable/zoomout_00008.pngbin0 -> 343 bytes
-rw-r--r--res/drawable/zoomout_00009.pngbin0 -> 344 bytes
-rw-r--r--res/drawable/zoomout_00010.pngbin0 -> 336 bytes
-rw-r--r--res/drawable/zoomout_00011.pngbin0 -> 332 bytes
-rw-r--r--res/drawable/zoomout_00012.pngbin0 -> 333 bytes
-rw-r--r--res/drawable/zoomout_00013.pngbin0 -> 339 bytes
-rw-r--r--res/drawable/zoomout_00014.pngbin0 -> 346 bytes
-rw-r--r--res/drawable/zoomout_00015.pngbin0 -> 325 bytes
-rw-r--r--res/drawable/zoomout_00016.pngbin0 -> 372 bytes
-rw-r--r--res/drawable/zoomout_00017.pngbin0 -> 309 bytes
-rw-r--r--res/drawable/zoomout_00018.pngbin0 -> 292 bytes
-rw-r--r--res/drawable/zoomout_00019.pngbin0 -> 300 bytes
-rw-r--r--res/drawable/zoomout_00020.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00021.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00022.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00023.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00024.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00025.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00026.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00027.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00028.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00029.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00030.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00031.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00032.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00033.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00034.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00035.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00036.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00037.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00038.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00039.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00040.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00041.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00042.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00043.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00044.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00045.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00046.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00047.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00048.pngbin0 -> 279 bytes
-rw-r--r--res/drawable/zoomout_00049.pngbin0 -> 279 bytes
-rw-r--r--res/layout/overview_panel.xml76
-rw-r--r--res/layout/settings_pane.xml121
-rw-r--r--res/layout/settings_pane_list_header.xml19
-rw-r--r--res/layout/settings_pane_list_item.xml36
-rw-r--r--res/layout/settings_transitions_screen.xml51
-rw-r--r--res/values-sw320dp/dimens.xml23
-rw-r--r--res/values-sw600dp/dimens.xml3
-rw-r--r--res/values/attrs.xml11
-rw-r--r--res/values/cm_arrays.xml77
-rw-r--r--res/values/cm_strings.xml123
-rw-r--r--res/values/colors.xml6
-rw-r--r--res/values/config.xml2
-rw-r--r--res/values/dimens.xml10
-rw-r--r--src/com/android/launcher3/DragLayer.java13
-rw-r--r--src/com/android/launcher3/DynamicGrid.java1
-rw-r--r--src/com/android/launcher3/Launcher.java352
-rw-r--r--src/com/android/launcher3/LauncherAppState.java11
-rw-r--r--src/com/android/launcher3/OverviewSettingsPanel.java199
-rw-r--r--src/com/android/launcher3/PagedView.java5
-rw-r--r--src/com/android/launcher3/SearchDropTargetBar.java9
-rw-r--r--src/com/android/launcher3/SlidingUpPanelLayout.java1315
-rw-r--r--src/com/android/launcher3/TransitionEffectsFragment.java222
-rw-r--r--src/com/android/launcher3/Workspace.java65
-rw-r--r--src/com/android/launcher3/list/AutoScrollListView.java117
-rw-r--r--src/com/android/launcher3/list/CompositeCursorAdapter.java532
-rw-r--r--src/com/android/launcher3/list/PinnedHeaderListAdapter.java172
-rw-r--r--src/com/android/launcher3/list/PinnedHeaderListView.java565
-rw-r--r--src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java248
-rw-r--r--src/com/android/launcher3/settings/SettingsProvider.java88
785 files changed, 5257 insertions, 124 deletions
diff --git a/Android.mk b/Android.mk
index 110117b..63e85ae 100644
--- a/Android.mk
+++ b/Android.mk
@@ -36,7 +36,7 @@ LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_PROTOC_OPTIMIZE_TYPE := nano
LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/protos/
-LOCAL_SDK_VERSION := 21
+# LOCAL_SDK_VERSION := 21
LOCAL_PACKAGE_NAME := Launcher3
#LOCAL_CERTIFICATE := shared
diff --git a/res/anim/drop_down.xml b/res/anim/drop_down.xml
new file mode 100644
index 0000000..49059a0
--- /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 0000000..e2bdbdd
--- /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 0000000..02a56c7
--- /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 0000000..eae925a
--- /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 0000000..7345c94
--- /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 0000000..c17b855
--- /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
new file mode 100644
index 0000000..41dcf8f
--- /dev/null
+++ b/res/drawable-hdpi/ic_default_screen.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_default_screen_pressed.png b/res/drawable-hdpi/ic_default_screen_pressed.png
new file mode 100644
index 0000000..7779058
--- /dev/null
+++ b/res/drawable-hdpi/ic_default_screen_pressed.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_default_screen.png b/res/drawable-mdpi/ic_default_screen.png
new file mode 100644
index 0000000..8a2c1e1
--- /dev/null
+++ b/res/drawable-mdpi/ic_default_screen.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_default_screen_pressed.png b/res/drawable-mdpi/ic_default_screen_pressed.png
new file mode 100644
index 0000000..20606ce
--- /dev/null
+++ b/res/drawable-mdpi/ic_default_screen_pressed.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_default_screen.png b/res/drawable-xhdpi/ic_default_screen.png
new file mode 100644
index 0000000..735332a
--- /dev/null
+++ b/res/drawable-xhdpi/ic_default_screen.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_default_screen_pressed.png b/res/drawable-xhdpi/ic_default_screen_pressed.png
new file mode 100644
index 0000000..11dede0
--- /dev/null
+++ b/res/drawable-xhdpi/ic_default_screen_pressed.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_default_screen.png b/res/drawable-xxhdpi/ic_default_screen.png
new file mode 100644
index 0000000..253bd2d
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_default_screen.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_default_screen_pressed.png b/res/drawable-xxhdpi/ic_default_screen_pressed.png
new file mode 100644
index 0000000..5367b7a
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_default_screen_pressed.png
Binary files differ
diff --git a/res/drawable/above_shadow.xml b/res/drawable/above_shadow.xml
new file mode 100644
index 0000000..5965c97
--- /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
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00000.png
Binary files differ
diff --git a/res/drawable/acordian_00001.png b/res/drawable/acordian_00001.png
new file mode 100644
index 0000000..48f0749
--- /dev/null
+++ b/res/drawable/acordian_00001.png
Binary files differ
diff --git a/res/drawable/acordian_00002.png b/res/drawable/acordian_00002.png
new file mode 100644
index 0000000..3ae1b69
--- /dev/null
+++ b/res/drawable/acordian_00002.png
Binary files differ
diff --git a/res/drawable/acordian_00003.png b/res/drawable/acordian_00003.png
new file mode 100644
index 0000000..da2ffe0
--- /dev/null
+++ b/res/drawable/acordian_00003.png
Binary files differ
diff --git a/res/drawable/acordian_00004.png b/res/drawable/acordian_00004.png
new file mode 100644
index 0000000..66f0a26
--- /dev/null
+++ b/res/drawable/acordian_00004.png
Binary files differ
diff --git a/res/drawable/acordian_00005.png b/res/drawable/acordian_00005.png
new file mode 100644
index 0000000..4750607
--- /dev/null
+++ b/res/drawable/acordian_00005.png
Binary files differ
diff --git a/res/drawable/acordian_00006.png b/res/drawable/acordian_00006.png
new file mode 100644
index 0000000..b523888
--- /dev/null
+++ b/res/drawable/acordian_00006.png
Binary files differ
diff --git a/res/drawable/acordian_00007.png b/res/drawable/acordian_00007.png
new file mode 100644
index 0000000..0530367
--- /dev/null
+++ b/res/drawable/acordian_00007.png
Binary files differ
diff --git a/res/drawable/acordian_00008.png b/res/drawable/acordian_00008.png
new file mode 100644
index 0000000..11c23fe
--- /dev/null
+++ b/res/drawable/acordian_00008.png
Binary files differ
diff --git a/res/drawable/acordian_00009.png b/res/drawable/acordian_00009.png
new file mode 100644
index 0000000..2fd060a
--- /dev/null
+++ b/res/drawable/acordian_00009.png
Binary files differ
diff --git a/res/drawable/acordian_00010.png b/res/drawable/acordian_00010.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00010.png
Binary files differ
diff --git a/res/drawable/acordian_00011.png b/res/drawable/acordian_00011.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00011.png
Binary files differ
diff --git a/res/drawable/acordian_00012.png b/res/drawable/acordian_00012.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00012.png
Binary files differ
diff --git a/res/drawable/acordian_00013.png b/res/drawable/acordian_00013.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00013.png
Binary files differ
diff --git a/res/drawable/acordian_00014.png b/res/drawable/acordian_00014.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00014.png
Binary files differ
diff --git a/res/drawable/acordian_00015.png b/res/drawable/acordian_00015.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00015.png
Binary files differ
diff --git a/res/drawable/acordian_00016.png b/res/drawable/acordian_00016.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00016.png
Binary files differ
diff --git a/res/drawable/acordian_00017.png b/res/drawable/acordian_00017.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00017.png
Binary files differ
diff --git a/res/drawable/acordian_00018.png b/res/drawable/acordian_00018.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00018.png
Binary files differ
diff --git a/res/drawable/acordian_00019.png b/res/drawable/acordian_00019.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00019.png
Binary files differ
diff --git a/res/drawable/acordian_00020.png b/res/drawable/acordian_00020.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00020.png
Binary files differ
diff --git a/res/drawable/acordian_00021.png b/res/drawable/acordian_00021.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00021.png
Binary files differ
diff --git a/res/drawable/acordian_00022.png b/res/drawable/acordian_00022.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00022.png
Binary files differ
diff --git a/res/drawable/acordian_00023.png b/res/drawable/acordian_00023.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00023.png
Binary files differ
diff --git a/res/drawable/acordian_00024.png b/res/drawable/acordian_00024.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00024.png
Binary files differ
diff --git a/res/drawable/acordian_00025.png b/res/drawable/acordian_00025.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00025.png
Binary files differ
diff --git a/res/drawable/acordian_00026.png b/res/drawable/acordian_00026.png
new file mode 100644
index 0000000..5debae4
--- /dev/null
+++ b/res/drawable/acordian_00026.png
Binary files differ
diff --git a/res/drawable/acordian_00027.png b/res/drawable/acordian_00027.png
new file mode 100644
index 0000000..2fd060a
--- /dev/null
+++ b/res/drawable/acordian_00027.png
Binary files differ
diff --git a/res/drawable/acordian_00028.png b/res/drawable/acordian_00028.png
new file mode 100644
index 0000000..11c23fe
--- /dev/null
+++ b/res/drawable/acordian_00028.png
Binary files differ
diff --git a/res/drawable/acordian_00029.png b/res/drawable/acordian_00029.png
new file mode 100644
index 0000000..0530367
--- /dev/null
+++ b/res/drawable/acordian_00029.png
Binary files differ
diff --git a/res/drawable/acordian_00030.png b/res/drawable/acordian_00030.png
new file mode 100644
index 0000000..b523888
--- /dev/null
+++ b/res/drawable/acordian_00030.png
Binary files differ
diff --git a/res/drawable/acordian_00031.png b/res/drawable/acordian_00031.png
new file mode 100644
index 0000000..734bb39
--- /dev/null
+++ b/res/drawable/acordian_00031.png
Binary files differ
diff --git a/res/drawable/acordian_00032.png b/res/drawable/acordian_00032.png
new file mode 100644
index 0000000..66f0a26
--- /dev/null
+++ b/res/drawable/acordian_00032.png
Binary files differ
diff --git a/res/drawable/acordian_00033.png b/res/drawable/acordian_00033.png
new file mode 100644
index 0000000..da2ffe0
--- /dev/null
+++ b/res/drawable/acordian_00033.png
Binary files differ
diff --git a/res/drawable/acordian_00034.png b/res/drawable/acordian_00034.png
new file mode 100644
index 0000000..3ae1b69
--- /dev/null
+++ b/res/drawable/acordian_00034.png
Binary files differ
diff --git a/res/drawable/acordian_00035.png b/res/drawable/acordian_00035.png
new file mode 100644
index 0000000..48f0749
--- /dev/null
+++ b/res/drawable/acordian_00035.png
Binary files differ
diff --git a/res/drawable/acordian_00036.png b/res/drawable/acordian_00036.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00036.png
Binary files differ
diff --git a/res/drawable/acordian_00037.png b/res/drawable/acordian_00037.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00037.png
Binary files differ
diff --git a/res/drawable/acordian_00038.png b/res/drawable/acordian_00038.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00038.png
Binary files differ
diff --git a/res/drawable/acordian_00039.png b/res/drawable/acordian_00039.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00039.png
Binary files differ
diff --git a/res/drawable/acordian_00040.png b/res/drawable/acordian_00040.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00040.png
Binary files differ
diff --git a/res/drawable/acordian_00041.png b/res/drawable/acordian_00041.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00041.png
Binary files differ
diff --git a/res/drawable/acordian_00042.png b/res/drawable/acordian_00042.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00042.png
Binary files differ
diff --git a/res/drawable/acordian_00043.png b/res/drawable/acordian_00043.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00043.png
Binary files differ
diff --git a/res/drawable/acordian_00044.png b/res/drawable/acordian_00044.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00044.png
Binary files differ
diff --git a/res/drawable/acordian_00045.png b/res/drawable/acordian_00045.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00045.png
Binary files differ
diff --git a/res/drawable/acordian_00046.png b/res/drawable/acordian_00046.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00046.png
Binary files differ
diff --git a/res/drawable/acordian_00047.png b/res/drawable/acordian_00047.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00047.png
Binary files differ
diff --git a/res/drawable/acordian_00048.png b/res/drawable/acordian_00048.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00048.png
Binary files differ
diff --git a/res/drawable/acordian_00049.png b/res/drawable/acordian_00049.png
new file mode 100644
index 0000000..72bebb4
--- /dev/null
+++ b/res/drawable/acordian_00049.png
Binary files differ
diff --git a/res/drawable/below_shadow.xml b/res/drawable/below_shadow.xml
new file mode 100644
index 0000000..c724e27
--- /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
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00000.png
Binary files differ
diff --git a/res/drawable/carousel_00001.png b/res/drawable/carousel_00001.png
new file mode 100644
index 0000000..ebd6200
--- /dev/null
+++ b/res/drawable/carousel_00001.png
Binary files differ
diff --git a/res/drawable/carousel_00002.png b/res/drawable/carousel_00002.png
new file mode 100644
index 0000000..121f26f
--- /dev/null
+++ b/res/drawable/carousel_00002.png
Binary files differ
diff --git a/res/drawable/carousel_00003.png b/res/drawable/carousel_00003.png
new file mode 100644
index 0000000..9a61cb4
--- /dev/null
+++ b/res/drawable/carousel_00003.png
Binary files differ
diff --git a/res/drawable/carousel_00004.png b/res/drawable/carousel_00004.png
new file mode 100644
index 0000000..4f9a741
--- /dev/null
+++ b/res/drawable/carousel_00004.png
Binary files differ
diff --git a/res/drawable/carousel_00005.png b/res/drawable/carousel_00005.png
new file mode 100644
index 0000000..32eadfe
--- /dev/null
+++ b/res/drawable/carousel_00005.png
Binary files differ
diff --git a/res/drawable/carousel_00006.png b/res/drawable/carousel_00006.png
new file mode 100644
index 0000000..e9d8cd6
--- /dev/null
+++ b/res/drawable/carousel_00006.png
Binary files differ
diff --git a/res/drawable/carousel_00007.png b/res/drawable/carousel_00007.png
new file mode 100644
index 0000000..d4202b1
--- /dev/null
+++ b/res/drawable/carousel_00007.png
Binary files differ
diff --git a/res/drawable/carousel_00008.png b/res/drawable/carousel_00008.png
new file mode 100644
index 0000000..88247f8
--- /dev/null
+++ b/res/drawable/carousel_00008.png
Binary files differ
diff --git a/res/drawable/carousel_00009.png b/res/drawable/carousel_00009.png
new file mode 100644
index 0000000..503f791
--- /dev/null
+++ b/res/drawable/carousel_00009.png
Binary files differ
diff --git a/res/drawable/carousel_00010.png b/res/drawable/carousel_00010.png
new file mode 100644
index 0000000..b439edc
--- /dev/null
+++ b/res/drawable/carousel_00010.png
Binary files differ
diff --git a/res/drawable/carousel_00011.png b/res/drawable/carousel_00011.png
new file mode 100644
index 0000000..80a7eca
--- /dev/null
+++ b/res/drawable/carousel_00011.png
Binary files differ
diff --git a/res/drawable/carousel_00012.png b/res/drawable/carousel_00012.png
new file mode 100644
index 0000000..57e72b8
--- /dev/null
+++ b/res/drawable/carousel_00012.png
Binary files differ
diff --git a/res/drawable/carousel_00013.png b/res/drawable/carousel_00013.png
new file mode 100644
index 0000000..6211a52
--- /dev/null
+++ b/res/drawable/carousel_00013.png
Binary files differ
diff --git a/res/drawable/carousel_00014.png b/res/drawable/carousel_00014.png
new file mode 100644
index 0000000..714466b
--- /dev/null
+++ b/res/drawable/carousel_00014.png
Binary files differ
diff --git a/res/drawable/carousel_00015.png b/res/drawable/carousel_00015.png
new file mode 100644
index 0000000..0b34111
--- /dev/null
+++ b/res/drawable/carousel_00015.png
Binary files differ
diff --git a/res/drawable/carousel_00016.png b/res/drawable/carousel_00016.png
new file mode 100644
index 0000000..a3c08cd
--- /dev/null
+++ b/res/drawable/carousel_00016.png
Binary files differ
diff --git a/res/drawable/carousel_00017.png b/res/drawable/carousel_00017.png
new file mode 100644
index 0000000..5fa15a7
--- /dev/null
+++ b/res/drawable/carousel_00017.png
Binary files differ
diff --git a/res/drawable/carousel_00018.png b/res/drawable/carousel_00018.png
new file mode 100644
index 0000000..e10df7d
--- /dev/null
+++ b/res/drawable/carousel_00018.png
Binary files differ
diff --git a/res/drawable/carousel_00019.png b/res/drawable/carousel_00019.png
new file mode 100644
index 0000000..4e3765b
--- /dev/null
+++ b/res/drawable/carousel_00019.png
Binary files differ
diff --git a/res/drawable/carousel_00020.png b/res/drawable/carousel_00020.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00020.png
Binary files differ
diff --git a/res/drawable/carousel_00021.png b/res/drawable/carousel_00021.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00021.png
Binary files differ
diff --git a/res/drawable/carousel_00022.png b/res/drawable/carousel_00022.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00022.png
Binary files differ
diff --git a/res/drawable/carousel_00023.png b/res/drawable/carousel_00023.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00023.png
Binary files differ
diff --git a/res/drawable/carousel_00024.png b/res/drawable/carousel_00024.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00024.png
Binary files differ
diff --git a/res/drawable/carousel_00025.png b/res/drawable/carousel_00025.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00025.png
Binary files differ
diff --git a/res/drawable/carousel_00026.png b/res/drawable/carousel_00026.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00026.png
Binary files differ
diff --git a/res/drawable/carousel_00027.png b/res/drawable/carousel_00027.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00027.png
Binary files differ
diff --git a/res/drawable/carousel_00028.png b/res/drawable/carousel_00028.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00028.png
Binary files differ
diff --git a/res/drawable/carousel_00029.png b/res/drawable/carousel_00029.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00029.png
Binary files differ
diff --git a/res/drawable/carousel_00030.png b/res/drawable/carousel_00030.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00030.png
Binary files differ
diff --git a/res/drawable/carousel_00031.png b/res/drawable/carousel_00031.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00031.png
Binary files differ
diff --git a/res/drawable/carousel_00032.png b/res/drawable/carousel_00032.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00032.png
Binary files differ
diff --git a/res/drawable/carousel_00033.png b/res/drawable/carousel_00033.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00033.png
Binary files differ
diff --git a/res/drawable/carousel_00034.png b/res/drawable/carousel_00034.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00034.png
Binary files differ
diff --git a/res/drawable/carousel_00035.png b/res/drawable/carousel_00035.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00035.png
Binary files differ
diff --git a/res/drawable/carousel_00036.png b/res/drawable/carousel_00036.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00036.png
Binary files differ
diff --git a/res/drawable/carousel_00037.png b/res/drawable/carousel_00037.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00037.png
Binary files differ
diff --git a/res/drawable/carousel_00038.png b/res/drawable/carousel_00038.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00038.png
Binary files differ
diff --git a/res/drawable/carousel_00039.png b/res/drawable/carousel_00039.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00039.png
Binary files differ
diff --git a/res/drawable/carousel_00040.png b/res/drawable/carousel_00040.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00040.png
Binary files differ
diff --git a/res/drawable/carousel_00041.png b/res/drawable/carousel_00041.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00041.png
Binary files differ
diff --git a/res/drawable/carousel_00042.png b/res/drawable/carousel_00042.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00042.png
Binary files differ
diff --git a/res/drawable/carousel_00043.png b/res/drawable/carousel_00043.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00043.png
Binary files differ
diff --git a/res/drawable/carousel_00044.png b/res/drawable/carousel_00044.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00044.png
Binary files differ
diff --git a/res/drawable/carousel_00045.png b/res/drawable/carousel_00045.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00045.png
Binary files differ
diff --git a/res/drawable/carousel_00046.png b/res/drawable/carousel_00046.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00046.png
Binary files differ
diff --git a/res/drawable/carousel_00047.png b/res/drawable/carousel_00047.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00047.png
Binary files differ
diff --git a/res/drawable/carousel_00048.png b/res/drawable/carousel_00048.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00048.png
Binary files differ
diff --git a/res/drawable/carousel_00049.png b/res/drawable/carousel_00049.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/carousel_00049.png
Binary files differ
diff --git a/res/drawable/cubein_00000.png b/res/drawable/cubein_00000.png
new file mode 100644
index 0000000..678a89d
--- /dev/null
+++ b/res/drawable/cubein_00000.png
Binary files differ
diff --git a/res/drawable/cubein_00001.png b/res/drawable/cubein_00001.png
new file mode 100644
index 0000000..322899f
--- /dev/null
+++ b/res/drawable/cubein_00001.png
Binary files differ
diff --git a/res/drawable/cubein_00002.png b/res/drawable/cubein_00002.png
new file mode 100644
index 0000000..3d963c7
--- /dev/null
+++ b/res/drawable/cubein_00002.png
Binary files differ
diff --git a/res/drawable/cubein_00003.png b/res/drawable/cubein_00003.png
new file mode 100644
index 0000000..7dabd0b
--- /dev/null
+++ b/res/drawable/cubein_00003.png
Binary files differ
diff --git a/res/drawable/cubein_00004.png b/res/drawable/cubein_00004.png
new file mode 100644
index 0000000..b73ce02
--- /dev/null
+++ b/res/drawable/cubein_00004.png
Binary files differ
diff --git a/res/drawable/cubein_00005.png b/res/drawable/cubein_00005.png
new file mode 100644
index 0000000..d9c7ea1
--- /dev/null
+++ b/res/drawable/cubein_00005.png
Binary files differ
diff --git a/res/drawable/cubein_00006.png b/res/drawable/cubein_00006.png
new file mode 100644
index 0000000..2b3198b
--- /dev/null
+++ b/res/drawable/cubein_00006.png
Binary files differ
diff --git a/res/drawable/cubein_00007.png b/res/drawable/cubein_00007.png
new file mode 100644
index 0000000..915fbe7
--- /dev/null
+++ b/res/drawable/cubein_00007.png
Binary files differ
diff --git a/res/drawable/cubein_00008.png b/res/drawable/cubein_00008.png
new file mode 100644
index 0000000..4eee981
--- /dev/null
+++ b/res/drawable/cubein_00008.png
Binary files differ
diff --git a/res/drawable/cubein_00009.png b/res/drawable/cubein_00009.png
new file mode 100644
index 0000000..5166619
--- /dev/null
+++ b/res/drawable/cubein_00009.png
Binary files differ
diff --git a/res/drawable/cubein_00010.png b/res/drawable/cubein_00010.png
new file mode 100644
index 0000000..3fdb7af
--- /dev/null
+++ b/res/drawable/cubein_00010.png
Binary files differ
diff --git a/res/drawable/cubein_00011.png b/res/drawable/cubein_00011.png
new file mode 100644
index 0000000..273b70a
--- /dev/null
+++ b/res/drawable/cubein_00011.png
Binary files differ
diff --git a/res/drawable/cubein_00012.png b/res/drawable/cubein_00012.png
new file mode 100644
index 0000000..4ed7571
--- /dev/null
+++ b/res/drawable/cubein_00012.png
Binary files differ
diff --git a/res/drawable/cubein_00013.png b/res/drawable/cubein_00013.png
new file mode 100644
index 0000000..6ec50e7
--- /dev/null
+++ b/res/drawable/cubein_00013.png
Binary files differ
diff --git a/res/drawable/cubein_00014.png b/res/drawable/cubein_00014.png
new file mode 100644
index 0000000..78eee8c
--- /dev/null
+++ b/res/drawable/cubein_00014.png
Binary files differ
diff --git a/res/drawable/cubein_00015.png b/res/drawable/cubein_00015.png
new file mode 100644
index 0000000..cbf4bbd
--- /dev/null
+++ b/res/drawable/cubein_00015.png
Binary files differ
diff --git a/res/drawable/cubein_00016.png b/res/drawable/cubein_00016.png
new file mode 100644
index 0000000..3bd56fc
--- /dev/null
+++ b/res/drawable/cubein_00016.png
Binary files differ
diff --git a/res/drawable/cubein_00017.png b/res/drawable/cubein_00017.png
new file mode 100644
index 0000000..2783f73
--- /dev/null
+++ b/res/drawable/cubein_00017.png
Binary files differ
diff --git a/res/drawable/cubein_00018.png b/res/drawable/cubein_00018.png
new file mode 100644
index 0000000..052c7b2
--- /dev/null
+++ b/res/drawable/cubein_00018.png
Binary files differ
diff --git a/res/drawable/cubein_00019.png b/res/drawable/cubein_00019.png
new file mode 100644
index 0000000..7c99a67
--- /dev/null
+++ b/res/drawable/cubein_00019.png
Binary files differ
diff --git a/res/drawable/cubein_00020.png b/res/drawable/cubein_00020.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00020.png
Binary files differ
diff --git a/res/drawable/cubein_00021.png b/res/drawable/cubein_00021.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00021.png
Binary files differ
diff --git a/res/drawable/cubein_00022.png b/res/drawable/cubein_00022.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00022.png
Binary files differ
diff --git a/res/drawable/cubein_00023.png b/res/drawable/cubein_00023.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00023.png
Binary files differ
diff --git a/res/drawable/cubein_00024.png b/res/drawable/cubein_00024.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00024.png
Binary files differ
diff --git a/res/drawable/cubein_00025.png b/res/drawable/cubein_00025.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00025.png
Binary files differ
diff --git a/res/drawable/cubein_00026.png b/res/drawable/cubein_00026.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00026.png
Binary files differ
diff --git a/res/drawable/cubein_00027.png b/res/drawable/cubein_00027.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00027.png
Binary files differ
diff --git a/res/drawable/cubein_00028.png b/res/drawable/cubein_00028.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00028.png
Binary files differ
diff --git a/res/drawable/cubein_00029.png b/res/drawable/cubein_00029.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00029.png
Binary files differ
diff --git a/res/drawable/cubein_00030.png b/res/drawable/cubein_00030.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00030.png
Binary files differ
diff --git a/res/drawable/cubein_00031.png b/res/drawable/cubein_00031.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00031.png
Binary files differ
diff --git a/res/drawable/cubein_00032.png b/res/drawable/cubein_00032.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00032.png
Binary files differ
diff --git a/res/drawable/cubein_00033.png b/res/drawable/cubein_00033.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00033.png
Binary files differ
diff --git a/res/drawable/cubein_00034.png b/res/drawable/cubein_00034.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00034.png
Binary files differ
diff --git a/res/drawable/cubein_00035.png b/res/drawable/cubein_00035.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00035.png
Binary files differ
diff --git a/res/drawable/cubein_00036.png b/res/drawable/cubein_00036.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00036.png
Binary files differ
diff --git a/res/drawable/cubein_00037.png b/res/drawable/cubein_00037.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00037.png
Binary files differ
diff --git a/res/drawable/cubein_00038.png b/res/drawable/cubein_00038.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00038.png
Binary files differ
diff --git a/res/drawable/cubein_00039.png b/res/drawable/cubein_00039.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00039.png
Binary files differ
diff --git a/res/drawable/cubein_00040.png b/res/drawable/cubein_00040.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00040.png
Binary files differ
diff --git a/res/drawable/cubein_00041.png b/res/drawable/cubein_00041.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00041.png
Binary files differ
diff --git a/res/drawable/cubein_00042.png b/res/drawable/cubein_00042.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00042.png
Binary files differ
diff --git a/res/drawable/cubein_00043.png b/res/drawable/cubein_00043.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00043.png
Binary files differ
diff --git a/res/drawable/cubein_00044.png b/res/drawable/cubein_00044.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00044.png
Binary files differ
diff --git a/res/drawable/cubein_00045.png b/res/drawable/cubein_00045.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00045.png
Binary files differ
diff --git a/res/drawable/cubein_00046.png b/res/drawable/cubein_00046.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00046.png
Binary files differ
diff --git a/res/drawable/cubein_00047.png b/res/drawable/cubein_00047.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00047.png
Binary files differ
diff --git a/res/drawable/cubein_00048.png b/res/drawable/cubein_00048.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00048.png
Binary files differ
diff --git a/res/drawable/cubein_00049.png b/res/drawable/cubein_00049.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubein_00049.png
Binary files differ
diff --git a/res/drawable/cubeout_00000.png b/res/drawable/cubeout_00000.png
new file mode 100644
index 0000000..d444d13
--- /dev/null
+++ b/res/drawable/cubeout_00000.png
Binary files differ
diff --git a/res/drawable/cubeout_00001.png b/res/drawable/cubeout_00001.png
new file mode 100644
index 0000000..69b5748
--- /dev/null
+++ b/res/drawable/cubeout_00001.png
Binary files differ
diff --git a/res/drawable/cubeout_00002.png b/res/drawable/cubeout_00002.png
new file mode 100644
index 0000000..58f4191
--- /dev/null
+++ b/res/drawable/cubeout_00002.png
Binary files differ
diff --git a/res/drawable/cubeout_00003.png b/res/drawable/cubeout_00003.png
new file mode 100644
index 0000000..096771e
--- /dev/null
+++ b/res/drawable/cubeout_00003.png
Binary files differ
diff --git a/res/drawable/cubeout_00004.png b/res/drawable/cubeout_00004.png
new file mode 100644
index 0000000..2d027ff
--- /dev/null
+++ b/res/drawable/cubeout_00004.png
Binary files differ
diff --git a/res/drawable/cubeout_00005.png b/res/drawable/cubeout_00005.png
new file mode 100644
index 0000000..bc38765
--- /dev/null
+++ b/res/drawable/cubeout_00005.png
Binary files differ
diff --git a/res/drawable/cubeout_00006.png b/res/drawable/cubeout_00006.png
new file mode 100644
index 0000000..742bebd
--- /dev/null
+++ b/res/drawable/cubeout_00006.png
Binary files differ
diff --git a/res/drawable/cubeout_00007.png b/res/drawable/cubeout_00007.png
new file mode 100644
index 0000000..ec7b633
--- /dev/null
+++ b/res/drawable/cubeout_00007.png
Binary files differ
diff --git a/res/drawable/cubeout_00008.png b/res/drawable/cubeout_00008.png
new file mode 100644
index 0000000..5eb6014
--- /dev/null
+++ b/res/drawable/cubeout_00008.png
Binary files differ
diff --git a/res/drawable/cubeout_00009.png b/res/drawable/cubeout_00009.png
new file mode 100644
index 0000000..30559fb
--- /dev/null
+++ b/res/drawable/cubeout_00009.png
Binary files differ
diff --git a/res/drawable/cubeout_00010.png b/res/drawable/cubeout_00010.png
new file mode 100644
index 0000000..fa8b785
--- /dev/null
+++ b/res/drawable/cubeout_00010.png
Binary files differ
diff --git a/res/drawable/cubeout_00011.png b/res/drawable/cubeout_00011.png
new file mode 100644
index 0000000..9de04f3
--- /dev/null
+++ b/res/drawable/cubeout_00011.png
Binary files differ
diff --git a/res/drawable/cubeout_00012.png b/res/drawable/cubeout_00012.png
new file mode 100644
index 0000000..3439013
--- /dev/null
+++ b/res/drawable/cubeout_00012.png
Binary files differ
diff --git a/res/drawable/cubeout_00013.png b/res/drawable/cubeout_00013.png
new file mode 100644
index 0000000..4fcd844
--- /dev/null
+++ b/res/drawable/cubeout_00013.png
Binary files differ
diff --git a/res/drawable/cubeout_00014.png b/res/drawable/cubeout_00014.png
new file mode 100644
index 0000000..df3b993
--- /dev/null
+++ b/res/drawable/cubeout_00014.png
Binary files differ
diff --git a/res/drawable/cubeout_00015.png b/res/drawable/cubeout_00015.png
new file mode 100644
index 0000000..b4f910f
--- /dev/null
+++ b/res/drawable/cubeout_00015.png
Binary files differ
diff --git a/res/drawable/cubeout_00016.png b/res/drawable/cubeout_00016.png
new file mode 100644
index 0000000..262e129
--- /dev/null
+++ b/res/drawable/cubeout_00016.png
Binary files differ
diff --git a/res/drawable/cubeout_00017.png b/res/drawable/cubeout_00017.png
new file mode 100644
index 0000000..873146b
--- /dev/null
+++ b/res/drawable/cubeout_00017.png
Binary files differ
diff --git a/res/drawable/cubeout_00018.png b/res/drawable/cubeout_00018.png
new file mode 100644
index 0000000..2d52f23
--- /dev/null
+++ b/res/drawable/cubeout_00018.png
Binary files differ
diff --git a/res/drawable/cubeout_00019.png b/res/drawable/cubeout_00019.png
new file mode 100644
index 0000000..1b7bff4
--- /dev/null
+++ b/res/drawable/cubeout_00019.png
Binary files differ
diff --git a/res/drawable/cubeout_00020.png b/res/drawable/cubeout_00020.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00020.png
Binary files differ
diff --git a/res/drawable/cubeout_00021.png b/res/drawable/cubeout_00021.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00021.png
Binary files differ
diff --git a/res/drawable/cubeout_00022.png b/res/drawable/cubeout_00022.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00022.png
Binary files differ
diff --git a/res/drawable/cubeout_00023.png b/res/drawable/cubeout_00023.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00023.png
Binary files differ
diff --git a/res/drawable/cubeout_00024.png b/res/drawable/cubeout_00024.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00024.png
Binary files differ
diff --git a/res/drawable/cubeout_00025.png b/res/drawable/cubeout_00025.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00025.png
Binary files differ
diff --git a/res/drawable/cubeout_00026.png b/res/drawable/cubeout_00026.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00026.png
Binary files differ
diff --git a/res/drawable/cubeout_00027.png b/res/drawable/cubeout_00027.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00027.png
Binary files differ
diff --git a/res/drawable/cubeout_00028.png b/res/drawable/cubeout_00028.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00028.png
Binary files differ
diff --git a/res/drawable/cubeout_00029.png b/res/drawable/cubeout_00029.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00029.png
Binary files differ
diff --git a/res/drawable/cubeout_00030.png b/res/drawable/cubeout_00030.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00030.png
Binary files differ
diff --git a/res/drawable/cubeout_00031.png b/res/drawable/cubeout_00031.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00031.png
Binary files differ
diff --git a/res/drawable/cubeout_00032.png b/res/drawable/cubeout_00032.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00032.png
Binary files differ
diff --git a/res/drawable/cubeout_00033.png b/res/drawable/cubeout_00033.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00033.png
Binary files differ
diff --git a/res/drawable/cubeout_00034.png b/res/drawable/cubeout_00034.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00034.png
Binary files differ
diff --git a/res/drawable/cubeout_00035.png b/res/drawable/cubeout_00035.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00035.png
Binary files differ
diff --git a/res/drawable/cubeout_00036.png b/res/drawable/cubeout_00036.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00036.png
Binary files differ
diff --git a/res/drawable/cubeout_00037.png b/res/drawable/cubeout_00037.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00037.png
Binary files differ
diff --git a/res/drawable/cubeout_00038.png b/res/drawable/cubeout_00038.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00038.png
Binary files differ
diff --git a/res/drawable/cubeout_00039.png b/res/drawable/cubeout_00039.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00039.png
Binary files differ
diff --git a/res/drawable/cubeout_00040.png b/res/drawable/cubeout_00040.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00040.png
Binary files differ
diff --git a/res/drawable/cubeout_00041.png b/res/drawable/cubeout_00041.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00041.png
Binary files differ
diff --git a/res/drawable/cubeout_00042.png b/res/drawable/cubeout_00042.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00042.png
Binary files differ
diff --git a/res/drawable/cubeout_00043.png b/res/drawable/cubeout_00043.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00043.png
Binary files differ
diff --git a/res/drawable/cubeout_00044.png b/res/drawable/cubeout_00044.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00044.png
Binary files differ
diff --git a/res/drawable/cubeout_00045.png b/res/drawable/cubeout_00045.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00045.png
Binary files differ
diff --git a/res/drawable/cubeout_00046.png b/res/drawable/cubeout_00046.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00046.png
Binary files differ
diff --git a/res/drawable/cubeout_00047.png b/res/drawable/cubeout_00047.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00047.png
Binary files differ
diff --git a/res/drawable/cubeout_00048.png b/res/drawable/cubeout_00048.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00048.png
Binary files differ
diff --git a/res/drawable/cubeout_00049.png b/res/drawable/cubeout_00049.png
new file mode 100644
index 0000000..1662df8
--- /dev/null
+++ b/res/drawable/cubeout_00049.png
Binary files differ
diff --git a/res/drawable/cylinderin_00000.png b/res/drawable/cylinderin_00000.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00000.png
Binary files differ
diff --git a/res/drawable/cylinderin_00001.png b/res/drawable/cylinderin_00001.png
new file mode 100644
index 0000000..bfc597a
--- /dev/null
+++ b/res/drawable/cylinderin_00001.png
Binary files differ
diff --git a/res/drawable/cylinderin_00002.png b/res/drawable/cylinderin_00002.png
new file mode 100644
index 0000000..88114b7
--- /dev/null
+++ b/res/drawable/cylinderin_00002.png
Binary files differ
diff --git a/res/drawable/cylinderin_00003.png b/res/drawable/cylinderin_00003.png
new file mode 100644
index 0000000..fe24f3f
--- /dev/null
+++ b/res/drawable/cylinderin_00003.png
Binary files differ
diff --git a/res/drawable/cylinderin_00004.png b/res/drawable/cylinderin_00004.png
new file mode 100644
index 0000000..c3a655b
--- /dev/null
+++ b/res/drawable/cylinderin_00004.png
Binary files differ
diff --git a/res/drawable/cylinderin_00005.png b/res/drawable/cylinderin_00005.png
new file mode 100644
index 0000000..e34b658
--- /dev/null
+++ b/res/drawable/cylinderin_00005.png
Binary files differ
diff --git a/res/drawable/cylinderin_00006.png b/res/drawable/cylinderin_00006.png
new file mode 100644
index 0000000..7f4d7b9
--- /dev/null
+++ b/res/drawable/cylinderin_00006.png
Binary files differ
diff --git a/res/drawable/cylinderin_00007.png b/res/drawable/cylinderin_00007.png
new file mode 100644
index 0000000..bef4a2d
--- /dev/null
+++ b/res/drawable/cylinderin_00007.png
Binary files differ
diff --git a/res/drawable/cylinderin_00008.png b/res/drawable/cylinderin_00008.png
new file mode 100644
index 0000000..3ed252e
--- /dev/null
+++ b/res/drawable/cylinderin_00008.png
Binary files differ
diff --git a/res/drawable/cylinderin_00009.png b/res/drawable/cylinderin_00009.png
new file mode 100644
index 0000000..6b47c40
--- /dev/null
+++ b/res/drawable/cylinderin_00009.png
Binary files differ
diff --git a/res/drawable/cylinderin_00010.png b/res/drawable/cylinderin_00010.png
new file mode 100644
index 0000000..5ffd650
--- /dev/null
+++ b/res/drawable/cylinderin_00010.png
Binary files differ
diff --git a/res/drawable/cylinderin_00011.png b/res/drawable/cylinderin_00011.png
new file mode 100644
index 0000000..f6ad8cc
--- /dev/null
+++ b/res/drawable/cylinderin_00011.png
Binary files differ
diff --git a/res/drawable/cylinderin_00012.png b/res/drawable/cylinderin_00012.png
new file mode 100644
index 0000000..27c7d69
--- /dev/null
+++ b/res/drawable/cylinderin_00012.png
Binary files differ
diff --git a/res/drawable/cylinderin_00013.png b/res/drawable/cylinderin_00013.png
new file mode 100644
index 0000000..a78a435
--- /dev/null
+++ b/res/drawable/cylinderin_00013.png
Binary files differ
diff --git a/res/drawable/cylinderin_00014.png b/res/drawable/cylinderin_00014.png
new file mode 100644
index 0000000..4eda970
--- /dev/null
+++ b/res/drawable/cylinderin_00014.png
Binary files differ
diff --git a/res/drawable/cylinderin_00015.png b/res/drawable/cylinderin_00015.png
new file mode 100644
index 0000000..e3ddc7e
--- /dev/null
+++ b/res/drawable/cylinderin_00015.png
Binary files differ
diff --git a/res/drawable/cylinderin_00016.png b/res/drawable/cylinderin_00016.png
new file mode 100644
index 0000000..eb48e29
--- /dev/null
+++ b/res/drawable/cylinderin_00016.png
Binary files differ
diff --git a/res/drawable/cylinderin_00017.png b/res/drawable/cylinderin_00017.png
new file mode 100644
index 0000000..fb7b3af
--- /dev/null
+++ b/res/drawable/cylinderin_00017.png
Binary files differ
diff --git a/res/drawable/cylinderin_00018.png b/res/drawable/cylinderin_00018.png
new file mode 100644
index 0000000..5c73e4d
--- /dev/null
+++ b/res/drawable/cylinderin_00018.png
Binary files differ
diff --git a/res/drawable/cylinderin_00019.png b/res/drawable/cylinderin_00019.png
new file mode 100644
index 0000000..9674239
--- /dev/null
+++ b/res/drawable/cylinderin_00019.png
Binary files differ
diff --git a/res/drawable/cylinderin_00020.png b/res/drawable/cylinderin_00020.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00020.png
Binary files differ
diff --git a/res/drawable/cylinderin_00021.png b/res/drawable/cylinderin_00021.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00021.png
Binary files differ
diff --git a/res/drawable/cylinderin_00022.png b/res/drawable/cylinderin_00022.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00022.png
Binary files differ
diff --git a/res/drawable/cylinderin_00023.png b/res/drawable/cylinderin_00023.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00023.png
Binary files differ
diff --git a/res/drawable/cylinderin_00024.png b/res/drawable/cylinderin_00024.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00024.png
Binary files differ
diff --git a/res/drawable/cylinderin_00025.png b/res/drawable/cylinderin_00025.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00025.png
Binary files differ
diff --git a/res/drawable/cylinderin_00026.png b/res/drawable/cylinderin_00026.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00026.png
Binary files differ
diff --git a/res/drawable/cylinderin_00027.png b/res/drawable/cylinderin_00027.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00027.png
Binary files differ
diff --git a/res/drawable/cylinderin_00028.png b/res/drawable/cylinderin_00028.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00028.png
Binary files differ
diff --git a/res/drawable/cylinderin_00029.png b/res/drawable/cylinderin_00029.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00029.png
Binary files differ
diff --git a/res/drawable/cylinderin_00030.png b/res/drawable/cylinderin_00030.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00030.png
Binary files differ
diff --git a/res/drawable/cylinderin_00031.png b/res/drawable/cylinderin_00031.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00031.png
Binary files differ
diff --git a/res/drawable/cylinderin_00032.png b/res/drawable/cylinderin_00032.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00032.png
Binary files differ
diff --git a/res/drawable/cylinderin_00033.png b/res/drawable/cylinderin_00033.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00033.png
Binary files differ
diff --git a/res/drawable/cylinderin_00034.png b/res/drawable/cylinderin_00034.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00034.png
Binary files differ
diff --git a/res/drawable/cylinderin_00035.png b/res/drawable/cylinderin_00035.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00035.png
Binary files differ
diff --git a/res/drawable/cylinderin_00036.png b/res/drawable/cylinderin_00036.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00036.png
Binary files differ
diff --git a/res/drawable/cylinderin_00037.png b/res/drawable/cylinderin_00037.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00037.png
Binary files differ
diff --git a/res/drawable/cylinderin_00038.png b/res/drawable/cylinderin_00038.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00038.png
Binary files differ
diff --git a/res/drawable/cylinderin_00039.png b/res/drawable/cylinderin_00039.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00039.png
Binary files differ
diff --git a/res/drawable/cylinderin_00040.png b/res/drawable/cylinderin_00040.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00040.png
Binary files differ
diff --git a/res/drawable/cylinderin_00041.png b/res/drawable/cylinderin_00041.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00041.png
Binary files differ
diff --git a/res/drawable/cylinderin_00042.png b/res/drawable/cylinderin_00042.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00042.png
Binary files differ
diff --git a/res/drawable/cylinderin_00043.png b/res/drawable/cylinderin_00043.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00043.png
Binary files differ
diff --git a/res/drawable/cylinderin_00044.png b/res/drawable/cylinderin_00044.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00044.png
Binary files differ
diff --git a/res/drawable/cylinderin_00045.png b/res/drawable/cylinderin_00045.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00045.png
Binary files differ
diff --git a/res/drawable/cylinderin_00046.png b/res/drawable/cylinderin_00046.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00046.png
Binary files differ
diff --git a/res/drawable/cylinderin_00047.png b/res/drawable/cylinderin_00047.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00047.png
Binary files differ
diff --git a/res/drawable/cylinderin_00048.png b/res/drawable/cylinderin_00048.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00048.png
Binary files differ
diff --git a/res/drawable/cylinderin_00049.png b/res/drawable/cylinderin_00049.png
new file mode 100644
index 0000000..c5eeb55
--- /dev/null
+++ b/res/drawable/cylinderin_00049.png
Binary files differ
diff --git a/res/drawable/cylinderout_00000.png b/res/drawable/cylinderout_00000.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00000.png
Binary files differ
diff --git a/res/drawable/cylinderout_00001.png b/res/drawable/cylinderout_00001.png
new file mode 100644
index 0000000..ba768d3
--- /dev/null
+++ b/res/drawable/cylinderout_00001.png
Binary files differ
diff --git a/res/drawable/cylinderout_00002.png b/res/drawable/cylinderout_00002.png
new file mode 100644
index 0000000..c753c3b
--- /dev/null
+++ b/res/drawable/cylinderout_00002.png
Binary files differ
diff --git a/res/drawable/cylinderout_00003.png b/res/drawable/cylinderout_00003.png
new file mode 100644
index 0000000..903d160
--- /dev/null
+++ b/res/drawable/cylinderout_00003.png
Binary files differ
diff --git a/res/drawable/cylinderout_00004.png b/res/drawable/cylinderout_00004.png
new file mode 100644
index 0000000..803ba23
--- /dev/null
+++ b/res/drawable/cylinderout_00004.png
Binary files differ
diff --git a/res/drawable/cylinderout_00005.png b/res/drawable/cylinderout_00005.png
new file mode 100644
index 0000000..ccfb96d
--- /dev/null
+++ b/res/drawable/cylinderout_00005.png
Binary files differ
diff --git a/res/drawable/cylinderout_00006.png b/res/drawable/cylinderout_00006.png
new file mode 100644
index 0000000..1b7a4c8
--- /dev/null
+++ b/res/drawable/cylinderout_00006.png
Binary files differ
diff --git a/res/drawable/cylinderout_00007.png b/res/drawable/cylinderout_00007.png
new file mode 100644
index 0000000..5366845
--- /dev/null
+++ b/res/drawable/cylinderout_00007.png
Binary files differ
diff --git a/res/drawable/cylinderout_00008.png b/res/drawable/cylinderout_00008.png
new file mode 100644
index 0000000..325574a
--- /dev/null
+++ b/res/drawable/cylinderout_00008.png
Binary files differ
diff --git a/res/drawable/cylinderout_00009.png b/res/drawable/cylinderout_00009.png
new file mode 100644
index 0000000..9280ff3
--- /dev/null
+++ b/res/drawable/cylinderout_00009.png
Binary files differ
diff --git a/res/drawable/cylinderout_00010.png b/res/drawable/cylinderout_00010.png
new file mode 100644
index 0000000..f667a32
--- /dev/null
+++ b/res/drawable/cylinderout_00010.png
Binary files differ
diff --git a/res/drawable/cylinderout_00011.png b/res/drawable/cylinderout_00011.png
new file mode 100644
index 0000000..8d38ecf
--- /dev/null
+++ b/res/drawable/cylinderout_00011.png
Binary files differ
diff --git a/res/drawable/cylinderout_00012.png b/res/drawable/cylinderout_00012.png
new file mode 100644
index 0000000..80359d1
--- /dev/null
+++ b/res/drawable/cylinderout_00012.png
Binary files differ
diff --git a/res/drawable/cylinderout_00013.png b/res/drawable/cylinderout_00013.png
new file mode 100644
index 0000000..087953e
--- /dev/null
+++ b/res/drawable/cylinderout_00013.png
Binary files differ
diff --git a/res/drawable/cylinderout_00014.png b/res/drawable/cylinderout_00014.png
new file mode 100644
index 0000000..083009a
--- /dev/null
+++ b/res/drawable/cylinderout_00014.png
Binary files differ
diff --git a/res/drawable/cylinderout_00015.png b/res/drawable/cylinderout_00015.png
new file mode 100644
index 0000000..c5cfb7e
--- /dev/null
+++ b/res/drawable/cylinderout_00015.png
Binary files differ
diff --git a/res/drawable/cylinderout_00016.png b/res/drawable/cylinderout_00016.png
new file mode 100644
index 0000000..c1e9eea
--- /dev/null
+++ b/res/drawable/cylinderout_00016.png
Binary files differ
diff --git a/res/drawable/cylinderout_00017.png b/res/drawable/cylinderout_00017.png
new file mode 100644
index 0000000..cca8ec0
--- /dev/null
+++ b/res/drawable/cylinderout_00017.png
Binary files differ
diff --git a/res/drawable/cylinderout_00018.png b/res/drawable/cylinderout_00018.png
new file mode 100644
index 0000000..13c2a8c
--- /dev/null
+++ b/res/drawable/cylinderout_00018.png
Binary files differ
diff --git a/res/drawable/cylinderout_00019.png b/res/drawable/cylinderout_00019.png
new file mode 100644
index 0000000..3e806b9
--- /dev/null
+++ b/res/drawable/cylinderout_00019.png
Binary files differ
diff --git a/res/drawable/cylinderout_00020.png b/res/drawable/cylinderout_00020.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00020.png
Binary files differ
diff --git a/res/drawable/cylinderout_00021.png b/res/drawable/cylinderout_00021.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00021.png
Binary files differ
diff --git a/res/drawable/cylinderout_00022.png b/res/drawable/cylinderout_00022.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00022.png
Binary files differ
diff --git a/res/drawable/cylinderout_00023.png b/res/drawable/cylinderout_00023.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00023.png
Binary files differ
diff --git a/res/drawable/cylinderout_00024.png b/res/drawable/cylinderout_00024.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00024.png
Binary files differ
diff --git a/res/drawable/cylinderout_00025.png b/res/drawable/cylinderout_00025.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00025.png
Binary files differ
diff --git a/res/drawable/cylinderout_00026.png b/res/drawable/cylinderout_00026.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00026.png
Binary files differ
diff --git a/res/drawable/cylinderout_00027.png b/res/drawable/cylinderout_00027.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00027.png
Binary files differ
diff --git a/res/drawable/cylinderout_00028.png b/res/drawable/cylinderout_00028.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00028.png
Binary files differ
diff --git a/res/drawable/cylinderout_00029.png b/res/drawable/cylinderout_00029.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00029.png
Binary files differ
diff --git a/res/drawable/cylinderout_00030.png b/res/drawable/cylinderout_00030.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00030.png
Binary files differ
diff --git a/res/drawable/cylinderout_00031.png b/res/drawable/cylinderout_00031.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00031.png
Binary files differ
diff --git a/res/drawable/cylinderout_00032.png b/res/drawable/cylinderout_00032.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00032.png
Binary files differ
diff --git a/res/drawable/cylinderout_00033.png b/res/drawable/cylinderout_00033.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00033.png
Binary files differ
diff --git a/res/drawable/cylinderout_00034.png b/res/drawable/cylinderout_00034.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00034.png
Binary files differ
diff --git a/res/drawable/cylinderout_00035.png b/res/drawable/cylinderout_00035.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00035.png
Binary files differ
diff --git a/res/drawable/cylinderout_00036.png b/res/drawable/cylinderout_00036.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00036.png
Binary files differ
diff --git a/res/drawable/cylinderout_00037.png b/res/drawable/cylinderout_00037.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00037.png
Binary files differ
diff --git a/res/drawable/cylinderout_00038.png b/res/drawable/cylinderout_00038.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00038.png
Binary files differ
diff --git a/res/drawable/cylinderout_00039.png b/res/drawable/cylinderout_00039.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00039.png
Binary files differ
diff --git a/res/drawable/cylinderout_00040.png b/res/drawable/cylinderout_00040.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00040.png
Binary files differ
diff --git a/res/drawable/cylinderout_00041.png b/res/drawable/cylinderout_00041.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00041.png
Binary files differ
diff --git a/res/drawable/cylinderout_00042.png b/res/drawable/cylinderout_00042.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00042.png
Binary files differ
diff --git a/res/drawable/cylinderout_00043.png b/res/drawable/cylinderout_00043.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00043.png
Binary files differ
diff --git a/res/drawable/cylinderout_00044.png b/res/drawable/cylinderout_00044.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00044.png
Binary files differ
diff --git a/res/drawable/cylinderout_00045.png b/res/drawable/cylinderout_00045.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00045.png
Binary files differ
diff --git a/res/drawable/cylinderout_00046.png b/res/drawable/cylinderout_00046.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00046.png
Binary files differ
diff --git a/res/drawable/cylinderout_00047.png b/res/drawable/cylinderout_00047.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00047.png
Binary files differ
diff --git a/res/drawable/cylinderout_00048.png b/res/drawable/cylinderout_00048.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00048.png
Binary files differ
diff --git a/res/drawable/cylinderout_00049.png b/res/drawable/cylinderout_00049.png
new file mode 100644
index 0000000..d53161c
--- /dev/null
+++ b/res/drawable/cylinderout_00049.png
Binary files differ
diff --git a/res/drawable/flip_00000.png b/res/drawable/flip_00000.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00000.png
Binary files differ
diff --git a/res/drawable/flip_00001.png b/res/drawable/flip_00001.png
new file mode 100644
index 0000000..0865118
--- /dev/null
+++ b/res/drawable/flip_00001.png
Binary files differ
diff --git a/res/drawable/flip_00002.png b/res/drawable/flip_00002.png
new file mode 100644
index 0000000..ae9f255
--- /dev/null
+++ b/res/drawable/flip_00002.png
Binary files differ
diff --git a/res/drawable/flip_00003.png b/res/drawable/flip_00003.png
new file mode 100644
index 0000000..62846c7
--- /dev/null
+++ b/res/drawable/flip_00003.png
Binary files differ
diff --git a/res/drawable/flip_00004.png b/res/drawable/flip_00004.png
new file mode 100644
index 0000000..ae70cb8
--- /dev/null
+++ b/res/drawable/flip_00004.png
Binary files differ
diff --git a/res/drawable/flip_00005.png b/res/drawable/flip_00005.png
new file mode 100644
index 0000000..ccef96b
--- /dev/null
+++ b/res/drawable/flip_00005.png
Binary files differ
diff --git a/res/drawable/flip_00006.png b/res/drawable/flip_00006.png
new file mode 100644
index 0000000..ce8819c
--- /dev/null
+++ b/res/drawable/flip_00006.png
Binary files differ
diff --git a/res/drawable/flip_00007.png b/res/drawable/flip_00007.png
new file mode 100644
index 0000000..b502e2d
--- /dev/null
+++ b/res/drawable/flip_00007.png
Binary files differ
diff --git a/res/drawable/flip_00008.png b/res/drawable/flip_00008.png
new file mode 100644
index 0000000..bfaae1d
--- /dev/null
+++ b/res/drawable/flip_00008.png
Binary files differ
diff --git a/res/drawable/flip_00009.png b/res/drawable/flip_00009.png
new file mode 100644
index 0000000..f974cd4
--- /dev/null
+++ b/res/drawable/flip_00009.png
Binary files differ
diff --git a/res/drawable/flip_00010.png b/res/drawable/flip_00010.png
new file mode 100644
index 0000000..9b298a8
--- /dev/null
+++ b/res/drawable/flip_00010.png
Binary files differ
diff --git a/res/drawable/flip_00011.png b/res/drawable/flip_00011.png
new file mode 100644
index 0000000..27accf5
--- /dev/null
+++ b/res/drawable/flip_00011.png
Binary files differ
diff --git a/res/drawable/flip_00012.png b/res/drawable/flip_00012.png
new file mode 100644
index 0000000..48f3d37
--- /dev/null
+++ b/res/drawable/flip_00012.png
Binary files differ
diff --git a/res/drawable/flip_00013.png b/res/drawable/flip_00013.png
new file mode 100644
index 0000000..ed3273f
--- /dev/null
+++ b/res/drawable/flip_00013.png
Binary files differ
diff --git a/res/drawable/flip_00014.png b/res/drawable/flip_00014.png
new file mode 100644
index 0000000..24cfa17
--- /dev/null
+++ b/res/drawable/flip_00014.png
Binary files differ
diff --git a/res/drawable/flip_00015.png b/res/drawable/flip_00015.png
new file mode 100644
index 0000000..dc8483e
--- /dev/null
+++ b/res/drawable/flip_00015.png
Binary files differ
diff --git a/res/drawable/flip_00016.png b/res/drawable/flip_00016.png
new file mode 100644
index 0000000..c445a5b
--- /dev/null
+++ b/res/drawable/flip_00016.png
Binary files differ
diff --git a/res/drawable/flip_00017.png b/res/drawable/flip_00017.png
new file mode 100644
index 0000000..0d26988
--- /dev/null
+++ b/res/drawable/flip_00017.png
Binary files differ
diff --git a/res/drawable/flip_00018.png b/res/drawable/flip_00018.png
new file mode 100644
index 0000000..39762fa
--- /dev/null
+++ b/res/drawable/flip_00018.png
Binary files differ
diff --git a/res/drawable/flip_00019.png b/res/drawable/flip_00019.png
new file mode 100644
index 0000000..02f160a
--- /dev/null
+++ b/res/drawable/flip_00019.png
Binary files differ
diff --git a/res/drawable/flip_00020.png b/res/drawable/flip_00020.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00020.png
Binary files differ
diff --git a/res/drawable/flip_00021.png b/res/drawable/flip_00021.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00021.png
Binary files differ
diff --git a/res/drawable/flip_00022.png b/res/drawable/flip_00022.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00022.png
Binary files differ
diff --git a/res/drawable/flip_00023.png b/res/drawable/flip_00023.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00023.png
Binary files differ
diff --git a/res/drawable/flip_00024.png b/res/drawable/flip_00024.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00024.png
Binary files differ
diff --git a/res/drawable/flip_00025.png b/res/drawable/flip_00025.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00025.png
Binary files differ
diff --git a/res/drawable/flip_00026.png b/res/drawable/flip_00026.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00026.png
Binary files differ
diff --git a/res/drawable/flip_00027.png b/res/drawable/flip_00027.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00027.png
Binary files differ
diff --git a/res/drawable/flip_00028.png b/res/drawable/flip_00028.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00028.png
Binary files differ
diff --git a/res/drawable/flip_00029.png b/res/drawable/flip_00029.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00029.png
Binary files differ
diff --git a/res/drawable/flip_00030.png b/res/drawable/flip_00030.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00030.png
Binary files differ
diff --git a/res/drawable/flip_00031.png b/res/drawable/flip_00031.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00031.png
Binary files differ
diff --git a/res/drawable/flip_00032.png b/res/drawable/flip_00032.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00032.png
Binary files differ
diff --git a/res/drawable/flip_00033.png b/res/drawable/flip_00033.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00033.png
Binary files differ
diff --git a/res/drawable/flip_00034.png b/res/drawable/flip_00034.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00034.png
Binary files differ
diff --git a/res/drawable/flip_00035.png b/res/drawable/flip_00035.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00035.png
Binary files differ
diff --git a/res/drawable/flip_00036.png b/res/drawable/flip_00036.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00036.png
Binary files differ
diff --git a/res/drawable/flip_00037.png b/res/drawable/flip_00037.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00037.png
Binary files differ
diff --git a/res/drawable/flip_00038.png b/res/drawable/flip_00038.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00038.png
Binary files differ
diff --git a/res/drawable/flip_00039.png b/res/drawable/flip_00039.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00039.png
Binary files differ
diff --git a/res/drawable/flip_00040.png b/res/drawable/flip_00040.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00040.png
Binary files differ
diff --git a/res/drawable/flip_00041.png b/res/drawable/flip_00041.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00041.png
Binary files differ
diff --git a/res/drawable/flip_00042.png b/res/drawable/flip_00042.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00042.png
Binary files differ
diff --git a/res/drawable/flip_00043.png b/res/drawable/flip_00043.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00043.png
Binary files differ
diff --git a/res/drawable/flip_00044.png b/res/drawable/flip_00044.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00044.png
Binary files differ
diff --git a/res/drawable/flip_00045.png b/res/drawable/flip_00045.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00045.png
Binary files differ
diff --git a/res/drawable/flip_00046.png b/res/drawable/flip_00046.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00046.png
Binary files differ
diff --git a/res/drawable/flip_00047.png b/res/drawable/flip_00047.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00047.png
Binary files differ
diff --git a/res/drawable/flip_00048.png b/res/drawable/flip_00048.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00048.png
Binary files differ
diff --git a/res/drawable/flip_00049.png b/res/drawable/flip_00049.png
new file mode 100644
index 0000000..cbe7f85
--- /dev/null
+++ b/res/drawable/flip_00049.png
Binary files differ
diff --git a/res/drawable/handle.png b/res/drawable/handle.png
new file mode 100644
index 0000000..6e943f0
--- /dev/null
+++ b/res/drawable/handle.png
Binary files differ
diff --git a/res/drawable/handle_left.png b/res/drawable/handle_left.png
new file mode 100644
index 0000000..b78889e
--- /dev/null
+++ b/res/drawable/handle_left.png
Binary files differ
diff --git a/res/drawable/handle_reversed.png b/res/drawable/handle_reversed.png
new file mode 100644
index 0000000..6e943f0
--- /dev/null
+++ b/res/drawable/handle_reversed.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00000.png b/res/drawable/launcheranimatedarrow_00000.png
new file mode 100644
index 0000000..2ed7fe9
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00000.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00001.png b/res/drawable/launcheranimatedarrow_00001.png
new file mode 100644
index 0000000..f3707e0
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00001.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00002.png b/res/drawable/launcheranimatedarrow_00002.png
new file mode 100644
index 0000000..3549389
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00002.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00003.png b/res/drawable/launcheranimatedarrow_00003.png
new file mode 100644
index 0000000..891e86c
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00003.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00004.png b/res/drawable/launcheranimatedarrow_00004.png
new file mode 100644
index 0000000..7cfb1ef
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00004.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00005.png b/res/drawable/launcheranimatedarrow_00005.png
new file mode 100644
index 0000000..121f4d5
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00005.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00006.png b/res/drawable/launcheranimatedarrow_00006.png
new file mode 100644
index 0000000..3a38e71
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00006.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00007.png b/res/drawable/launcheranimatedarrow_00007.png
new file mode 100644
index 0000000..e81a719
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00007.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00008.png b/res/drawable/launcheranimatedarrow_00008.png
new file mode 100644
index 0000000..bd6f409
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00008.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00009.png b/res/drawable/launcheranimatedarrow_00009.png
new file mode 100644
index 0000000..c7cb60d
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00009.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00010.png b/res/drawable/launcheranimatedarrow_00010.png
new file mode 100644
index 0000000..1bf30dc
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00010.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00011.png b/res/drawable/launcheranimatedarrow_00011.png
new file mode 100644
index 0000000..3cb5988
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00011.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00012.png b/res/drawable/launcheranimatedarrow_00012.png
new file mode 100644
index 0000000..58070de
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00012.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00013.png b/res/drawable/launcheranimatedarrow_00013.png
new file mode 100644
index 0000000..810d0a2
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00013.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00014.png b/res/drawable/launcheranimatedarrow_00014.png
new file mode 100644
index 0000000..3f9e518
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00014.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00015.png b/res/drawable/launcheranimatedarrow_00015.png
new file mode 100644
index 0000000..348bfbb
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00015.png
Binary files differ
diff --git a/res/drawable/launcheranimatedarrow_00016.png b/res/drawable/launcheranimatedarrow_00016.png
new file mode 100644
index 0000000..5b0b286
--- /dev/null
+++ b/res/drawable/launcheranimatedarrow_00016.png
Binary files differ
diff --git a/res/drawable/listitem_bg.xml b/res/drawable/listitem_bg.xml
new file mode 100644
index 0000000..b81e995
--- /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 0000000..b81e995
--- /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
new file mode 100644
index 0000000..132ad85
--- /dev/null
+++ b/res/drawable/lock.png
Binary files differ
diff --git a/res/drawable/none_00000.png b/res/drawable/none_00000.png
new file mode 100644
index 0000000..280dbde
--- /dev/null
+++ b/res/drawable/none_00000.png
Binary files differ
diff --git a/res/drawable/none_00001.png b/res/drawable/none_00001.png
new file mode 100644
index 0000000..9318c29
--- /dev/null
+++ b/res/drawable/none_00001.png
Binary files differ
diff --git a/res/drawable/none_00002.png b/res/drawable/none_00002.png
new file mode 100644
index 0000000..41288e9
--- /dev/null
+++ b/res/drawable/none_00002.png
Binary files differ
diff --git a/res/drawable/none_00003.png b/res/drawable/none_00003.png
new file mode 100644
index 0000000..831375e
--- /dev/null
+++ b/res/drawable/none_00003.png
Binary files differ
diff --git a/res/drawable/none_00004.png b/res/drawable/none_00004.png
new file mode 100644
index 0000000..0ab2c45
--- /dev/null
+++ b/res/drawable/none_00004.png
Binary files differ
diff --git a/res/drawable/none_00005.png b/res/drawable/none_00005.png
new file mode 100644
index 0000000..3a3904c
--- /dev/null
+++ b/res/drawable/none_00005.png
Binary files differ
diff --git a/res/drawable/none_00006.png b/res/drawable/none_00006.png
new file mode 100644
index 0000000..012ed8a
--- /dev/null
+++ b/res/drawable/none_00006.png
Binary files differ
diff --git a/res/drawable/none_00007.png b/res/drawable/none_00007.png
new file mode 100644
index 0000000..f72aa33
--- /dev/null
+++ b/res/drawable/none_00007.png
Binary files differ
diff --git a/res/drawable/none_00008.png b/res/drawable/none_00008.png
new file mode 100644
index 0000000..520df34
--- /dev/null
+++ b/res/drawable/none_00008.png
Binary files differ
diff --git a/res/drawable/none_00009.png b/res/drawable/none_00009.png
new file mode 100644
index 0000000..d8ce1ca
--- /dev/null
+++ b/res/drawable/none_00009.png
Binary files differ
diff --git a/res/drawable/none_00010.png b/res/drawable/none_00010.png
new file mode 100644
index 0000000..50ea447
--- /dev/null
+++ b/res/drawable/none_00010.png
Binary files differ
diff --git a/res/drawable/none_00011.png b/res/drawable/none_00011.png
new file mode 100644
index 0000000..bb664bb
--- /dev/null
+++ b/res/drawable/none_00011.png
Binary files differ
diff --git a/res/drawable/none_00012.png b/res/drawable/none_00012.png
new file mode 100644
index 0000000..ba415cc
--- /dev/null
+++ b/res/drawable/none_00012.png
Binary files differ
diff --git a/res/drawable/none_00013.png b/res/drawable/none_00013.png
new file mode 100644
index 0000000..5727430
--- /dev/null
+++ b/res/drawable/none_00013.png
Binary files differ
diff --git a/res/drawable/none_00014.png b/res/drawable/none_00014.png
new file mode 100644
index 0000000..8791adc
--- /dev/null
+++ b/res/drawable/none_00014.png
Binary files differ
diff --git a/res/drawable/none_00015.png b/res/drawable/none_00015.png
new file mode 100644
index 0000000..07ae898
--- /dev/null
+++ b/res/drawable/none_00015.png
Binary files differ
diff --git a/res/drawable/none_00016.png b/res/drawable/none_00016.png
new file mode 100644
index 0000000..61954a1
--- /dev/null
+++ b/res/drawable/none_00016.png
Binary files differ
diff --git a/res/drawable/none_00017.png b/res/drawable/none_00017.png
new file mode 100644
index 0000000..38d3b8c
--- /dev/null
+++ b/res/drawable/none_00017.png
Binary files differ
diff --git a/res/drawable/none_00018.png b/res/drawable/none_00018.png
new file mode 100644
index 0000000..59af031
--- /dev/null
+++ b/res/drawable/none_00018.png
Binary files differ
diff --git a/res/drawable/none_00019.png b/res/drawable/none_00019.png
new file mode 100644
index 0000000..6dbff89
--- /dev/null
+++ b/res/drawable/none_00019.png
Binary files differ
diff --git a/res/drawable/none_00020.png b/res/drawable/none_00020.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00020.png
Binary files differ
diff --git a/res/drawable/none_00021.png b/res/drawable/none_00021.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00021.png
Binary files differ
diff --git a/res/drawable/none_00022.png b/res/drawable/none_00022.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00022.png
Binary files differ
diff --git a/res/drawable/none_00023.png b/res/drawable/none_00023.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00023.png
Binary files differ
diff --git a/res/drawable/none_00024.png b/res/drawable/none_00024.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00024.png
Binary files differ
diff --git a/res/drawable/none_00025.png b/res/drawable/none_00025.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00025.png
Binary files differ
diff --git a/res/drawable/none_00026.png b/res/drawable/none_00026.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00026.png
Binary files differ
diff --git a/res/drawable/none_00027.png b/res/drawable/none_00027.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00027.png
Binary files differ
diff --git a/res/drawable/none_00028.png b/res/drawable/none_00028.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00028.png
Binary files differ
diff --git a/res/drawable/none_00029.png b/res/drawable/none_00029.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00029.png
Binary files differ
diff --git a/res/drawable/none_00030.png b/res/drawable/none_00030.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00030.png
Binary files differ
diff --git a/res/drawable/none_00031.png b/res/drawable/none_00031.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00031.png
Binary files differ
diff --git a/res/drawable/none_00032.png b/res/drawable/none_00032.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00032.png
Binary files differ
diff --git a/res/drawable/none_00033.png b/res/drawable/none_00033.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00033.png
Binary files differ
diff --git a/res/drawable/none_00034.png b/res/drawable/none_00034.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00034.png
Binary files differ
diff --git a/res/drawable/none_00035.png b/res/drawable/none_00035.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00035.png
Binary files differ
diff --git a/res/drawable/none_00036.png b/res/drawable/none_00036.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00036.png
Binary files differ
diff --git a/res/drawable/none_00037.png b/res/drawable/none_00037.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00037.png
Binary files differ
diff --git a/res/drawable/none_00038.png b/res/drawable/none_00038.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00038.png
Binary files differ
diff --git a/res/drawable/none_00039.png b/res/drawable/none_00039.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00039.png
Binary files differ
diff --git a/res/drawable/none_00040.png b/res/drawable/none_00040.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00040.png
Binary files differ
diff --git a/res/drawable/none_00041.png b/res/drawable/none_00041.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00041.png
Binary files differ
diff --git a/res/drawable/none_00042.png b/res/drawable/none_00042.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00042.png
Binary files differ
diff --git a/res/drawable/none_00043.png b/res/drawable/none_00043.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00043.png
Binary files differ
diff --git a/res/drawable/none_00044.png b/res/drawable/none_00044.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00044.png
Binary files differ
diff --git a/res/drawable/none_00045.png b/res/drawable/none_00045.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00045.png
Binary files differ
diff --git a/res/drawable/none_00046.png b/res/drawable/none_00046.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00046.png
Binary files differ
diff --git a/res/drawable/none_00047.png b/res/drawable/none_00047.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00047.png
Binary files differ
diff --git a/res/drawable/none_00048.png b/res/drawable/none_00048.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00048.png
Binary files differ
diff --git a/res/drawable/none_00049.png b/res/drawable/none_00049.png
new file mode 100644
index 0000000..cbcff03
--- /dev/null
+++ b/res/drawable/none_00049.png
Binary files differ
diff --git a/res/drawable/overview_00000.png b/res/drawable/overview_00000.png
new file mode 100644
index 0000000..e000c61
--- /dev/null
+++ b/res/drawable/overview_00000.png
Binary files differ
diff --git a/res/drawable/overview_00001.png b/res/drawable/overview_00001.png
new file mode 100644
index 0000000..ee52cae
--- /dev/null
+++ b/res/drawable/overview_00001.png
Binary files differ
diff --git a/res/drawable/overview_00002.png b/res/drawable/overview_00002.png
new file mode 100644
index 0000000..4016293
--- /dev/null
+++ b/res/drawable/overview_00002.png
Binary files differ
diff --git a/res/drawable/overview_00003.png b/res/drawable/overview_00003.png
new file mode 100644
index 0000000..9fce324
--- /dev/null
+++ b/res/drawable/overview_00003.png
Binary files differ
diff --git a/res/drawable/overview_00004.png b/res/drawable/overview_00004.png
new file mode 100644
index 0000000..6089f36
--- /dev/null
+++ b/res/drawable/overview_00004.png
Binary files differ
diff --git a/res/drawable/overview_00005.png b/res/drawable/overview_00005.png
new file mode 100644
index 0000000..0195e61
--- /dev/null
+++ b/res/drawable/overview_00005.png
Binary files differ
diff --git a/res/drawable/overview_00006.png b/res/drawable/overview_00006.png
new file mode 100644
index 0000000..c91cc1e
--- /dev/null
+++ b/res/drawable/overview_00006.png
Binary files differ
diff --git a/res/drawable/overview_00007.png b/res/drawable/overview_00007.png
new file mode 100644
index 0000000..ca57ff2
--- /dev/null
+++ b/res/drawable/overview_00007.png
Binary files differ
diff --git a/res/drawable/overview_00008.png b/res/drawable/overview_00008.png
new file mode 100644
index 0000000..c42692f
--- /dev/null
+++ b/res/drawable/overview_00008.png
Binary files differ
diff --git a/res/drawable/overview_00009.png b/res/drawable/overview_00009.png
new file mode 100644
index 0000000..e38b368
--- /dev/null
+++ b/res/drawable/overview_00009.png
Binary files differ
diff --git a/res/drawable/overview_00010.png b/res/drawable/overview_00010.png
new file mode 100644
index 0000000..4416302
--- /dev/null
+++ b/res/drawable/overview_00010.png
Binary files differ
diff --git a/res/drawable/overview_00011.png b/res/drawable/overview_00011.png
new file mode 100644
index 0000000..013cdec
--- /dev/null
+++ b/res/drawable/overview_00011.png
Binary files differ
diff --git a/res/drawable/overview_00012.png b/res/drawable/overview_00012.png
new file mode 100644
index 0000000..fe08ca7
--- /dev/null
+++ b/res/drawable/overview_00012.png
Binary files differ
diff --git a/res/drawable/overview_00013.png b/res/drawable/overview_00013.png
new file mode 100644
index 0000000..4907c37
--- /dev/null
+++ b/res/drawable/overview_00013.png
Binary files differ
diff --git a/res/drawable/overview_00014.png b/res/drawable/overview_00014.png
new file mode 100644
index 0000000..26acf47
--- /dev/null
+++ b/res/drawable/overview_00014.png
Binary files differ
diff --git a/res/drawable/overview_00015.png b/res/drawable/overview_00015.png
new file mode 100644
index 0000000..258059a
--- /dev/null
+++ b/res/drawable/overview_00015.png
Binary files differ
diff --git a/res/drawable/overview_00016.png b/res/drawable/overview_00016.png
new file mode 100644
index 0000000..8c164c1
--- /dev/null
+++ b/res/drawable/overview_00016.png
Binary files differ
diff --git a/res/drawable/overview_00017.png b/res/drawable/overview_00017.png
new file mode 100644
index 0000000..dd1df33
--- /dev/null
+++ b/res/drawable/overview_00017.png
Binary files differ
diff --git a/res/drawable/overview_00018.png b/res/drawable/overview_00018.png
new file mode 100644
index 0000000..b3e54a3
--- /dev/null
+++ b/res/drawable/overview_00018.png
Binary files differ
diff --git a/res/drawable/overview_00019.png b/res/drawable/overview_00019.png
new file mode 100644
index 0000000..5a0b1cb
--- /dev/null
+++ b/res/drawable/overview_00019.png
Binary files differ
diff --git a/res/drawable/overview_00020.png b/res/drawable/overview_00020.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00020.png
Binary files differ
diff --git a/res/drawable/overview_00021.png b/res/drawable/overview_00021.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00021.png
Binary files differ
diff --git a/res/drawable/overview_00022.png b/res/drawable/overview_00022.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00022.png
Binary files differ
diff --git a/res/drawable/overview_00023.png b/res/drawable/overview_00023.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00023.png
Binary files differ
diff --git a/res/drawable/overview_00024.png b/res/drawable/overview_00024.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00024.png
Binary files differ
diff --git a/res/drawable/overview_00025.png b/res/drawable/overview_00025.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00025.png
Binary files differ
diff --git a/res/drawable/overview_00026.png b/res/drawable/overview_00026.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00026.png
Binary files differ
diff --git a/res/drawable/overview_00027.png b/res/drawable/overview_00027.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00027.png
Binary files differ
diff --git a/res/drawable/overview_00028.png b/res/drawable/overview_00028.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00028.png
Binary files differ
diff --git a/res/drawable/overview_00029.png b/res/drawable/overview_00029.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00029.png
Binary files differ
diff --git a/res/drawable/overview_00030.png b/res/drawable/overview_00030.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00030.png
Binary files differ
diff --git a/res/drawable/overview_00031.png b/res/drawable/overview_00031.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00031.png
Binary files differ
diff --git a/res/drawable/overview_00032.png b/res/drawable/overview_00032.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00032.png
Binary files differ
diff --git a/res/drawable/overview_00033.png b/res/drawable/overview_00033.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00033.png
Binary files differ
diff --git a/res/drawable/overview_00034.png b/res/drawable/overview_00034.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00034.png
Binary files differ
diff --git a/res/drawable/overview_00035.png b/res/drawable/overview_00035.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00035.png
Binary files differ
diff --git a/res/drawable/overview_00036.png b/res/drawable/overview_00036.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00036.png
Binary files differ
diff --git a/res/drawable/overview_00037.png b/res/drawable/overview_00037.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00037.png
Binary files differ
diff --git a/res/drawable/overview_00038.png b/res/drawable/overview_00038.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00038.png
Binary files differ
diff --git a/res/drawable/overview_00039.png b/res/drawable/overview_00039.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00039.png
Binary files differ
diff --git a/res/drawable/overview_00040.png b/res/drawable/overview_00040.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00040.png
Binary files differ
diff --git a/res/drawable/overview_00041.png b/res/drawable/overview_00041.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00041.png
Binary files differ
diff --git a/res/drawable/overview_00042.png b/res/drawable/overview_00042.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00042.png
Binary files differ
diff --git a/res/drawable/overview_00043.png b/res/drawable/overview_00043.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00043.png
Binary files differ
diff --git a/res/drawable/overview_00044.png b/res/drawable/overview_00044.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00044.png
Binary files differ
diff --git a/res/drawable/overview_00045.png b/res/drawable/overview_00045.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00045.png
Binary files differ
diff --git a/res/drawable/overview_00046.png b/res/drawable/overview_00046.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00046.png
Binary files differ
diff --git a/res/drawable/overview_00047.png b/res/drawable/overview_00047.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00047.png
Binary files differ
diff --git a/res/drawable/overview_00048.png b/res/drawable/overview_00048.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00048.png
Binary files differ
diff --git a/res/drawable/overview_00049.png b/res/drawable/overview_00049.png
new file mode 100644
index 0000000..a54f07a
--- /dev/null
+++ b/res/drawable/overview_00049.png
Binary files differ
diff --git a/res/drawable/rotatedown_00000.png b/res/drawable/rotatedown_00000.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00000.png
Binary files differ
diff --git a/res/drawable/rotatedown_00001.png b/res/drawable/rotatedown_00001.png
new file mode 100644
index 0000000..98f1b67
--- /dev/null
+++ b/res/drawable/rotatedown_00001.png
Binary files differ
diff --git a/res/drawable/rotatedown_00002.png b/res/drawable/rotatedown_00002.png
new file mode 100644
index 0000000..927f5d1
--- /dev/null
+++ b/res/drawable/rotatedown_00002.png
Binary files differ
diff --git a/res/drawable/rotatedown_00003.png b/res/drawable/rotatedown_00003.png
new file mode 100644
index 0000000..fcb6f47
--- /dev/null
+++ b/res/drawable/rotatedown_00003.png
Binary files differ
diff --git a/res/drawable/rotatedown_00004.png b/res/drawable/rotatedown_00004.png
new file mode 100644
index 0000000..16797d6
--- /dev/null
+++ b/res/drawable/rotatedown_00004.png
Binary files differ
diff --git a/res/drawable/rotatedown_00005.png b/res/drawable/rotatedown_00005.png
new file mode 100644
index 0000000..4c43eb8
--- /dev/null
+++ b/res/drawable/rotatedown_00005.png
Binary files differ
diff --git a/res/drawable/rotatedown_00006.png b/res/drawable/rotatedown_00006.png
new file mode 100644
index 0000000..2f03ec4
--- /dev/null
+++ b/res/drawable/rotatedown_00006.png
Binary files differ
diff --git a/res/drawable/rotatedown_00007.png b/res/drawable/rotatedown_00007.png
new file mode 100644
index 0000000..6a6d080
--- /dev/null
+++ b/res/drawable/rotatedown_00007.png
Binary files differ
diff --git a/res/drawable/rotatedown_00008.png b/res/drawable/rotatedown_00008.png
new file mode 100644
index 0000000..bf9f310
--- /dev/null
+++ b/res/drawable/rotatedown_00008.png
Binary files differ
diff --git a/res/drawable/rotatedown_00009.png b/res/drawable/rotatedown_00009.png
new file mode 100644
index 0000000..f911bf4
--- /dev/null
+++ b/res/drawable/rotatedown_00009.png
Binary files differ
diff --git a/res/drawable/rotatedown_00010.png b/res/drawable/rotatedown_00010.png
new file mode 100644
index 0000000..f84dd20
--- /dev/null
+++ b/res/drawable/rotatedown_00010.png
Binary files differ
diff --git a/res/drawable/rotatedown_00011.png b/res/drawable/rotatedown_00011.png
new file mode 100644
index 0000000..7106a7d
--- /dev/null
+++ b/res/drawable/rotatedown_00011.png
Binary files differ
diff --git a/res/drawable/rotatedown_00012.png b/res/drawable/rotatedown_00012.png
new file mode 100644
index 0000000..13cd0b2
--- /dev/null
+++ b/res/drawable/rotatedown_00012.png
Binary files differ
diff --git a/res/drawable/rotatedown_00013.png b/res/drawable/rotatedown_00013.png
new file mode 100644
index 0000000..4589bf2
--- /dev/null
+++ b/res/drawable/rotatedown_00013.png
Binary files differ
diff --git a/res/drawable/rotatedown_00014.png b/res/drawable/rotatedown_00014.png
new file mode 100644
index 0000000..6b59e5d
--- /dev/null
+++ b/res/drawable/rotatedown_00014.png
Binary files differ
diff --git a/res/drawable/rotatedown_00015.png b/res/drawable/rotatedown_00015.png
new file mode 100644
index 0000000..890746b
--- /dev/null
+++ b/res/drawable/rotatedown_00015.png
Binary files differ
diff --git a/res/drawable/rotatedown_00016.png b/res/drawable/rotatedown_00016.png
new file mode 100644
index 0000000..56d9e23
--- /dev/null
+++ b/res/drawable/rotatedown_00016.png
Binary files differ
diff --git a/res/drawable/rotatedown_00017.png b/res/drawable/rotatedown_00017.png
new file mode 100644
index 0000000..d2d8040
--- /dev/null
+++ b/res/drawable/rotatedown_00017.png
Binary files differ
diff --git a/res/drawable/rotatedown_00018.png b/res/drawable/rotatedown_00018.png
new file mode 100644
index 0000000..43afa3e
--- /dev/null
+++ b/res/drawable/rotatedown_00018.png
Binary files differ
diff --git a/res/drawable/rotatedown_00019.png b/res/drawable/rotatedown_00019.png
new file mode 100644
index 0000000..4c6ec90
--- /dev/null
+++ b/res/drawable/rotatedown_00019.png
Binary files differ
diff --git a/res/drawable/rotatedown_00020.png b/res/drawable/rotatedown_00020.png
new file mode 100644
index 0000000..2cfdd90
--- /dev/null
+++ b/res/drawable/rotatedown_00020.png
Binary files differ
diff --git a/res/drawable/rotatedown_00021.png b/res/drawable/rotatedown_00021.png
new file mode 100644
index 0000000..a54e053
--- /dev/null
+++ b/res/drawable/rotatedown_00021.png
Binary files differ
diff --git a/res/drawable/rotatedown_00022.png b/res/drawable/rotatedown_00022.png
new file mode 100644
index 0000000..7f9c021
--- /dev/null
+++ b/res/drawable/rotatedown_00022.png
Binary files differ
diff --git a/res/drawable/rotatedown_00023.png b/res/drawable/rotatedown_00023.png
new file mode 100644
index 0000000..86c20df
--- /dev/null
+++ b/res/drawable/rotatedown_00023.png
Binary files differ
diff --git a/res/drawable/rotatedown_00024.png b/res/drawable/rotatedown_00024.png
new file mode 100644
index 0000000..cacf627
--- /dev/null
+++ b/res/drawable/rotatedown_00024.png
Binary files differ
diff --git a/res/drawable/rotatedown_00025.png b/res/drawable/rotatedown_00025.png
new file mode 100644
index 0000000..f80765d
--- /dev/null
+++ b/res/drawable/rotatedown_00025.png
Binary files differ
diff --git a/res/drawable/rotatedown_00026.png b/res/drawable/rotatedown_00026.png
new file mode 100644
index 0000000..cb07143
--- /dev/null
+++ b/res/drawable/rotatedown_00026.png
Binary files differ
diff --git a/res/drawable/rotatedown_00027.png b/res/drawable/rotatedown_00027.png
new file mode 100644
index 0000000..4f56397
--- /dev/null
+++ b/res/drawable/rotatedown_00027.png
Binary files differ
diff --git a/res/drawable/rotatedown_00028.png b/res/drawable/rotatedown_00028.png
new file mode 100644
index 0000000..b1b114e
--- /dev/null
+++ b/res/drawable/rotatedown_00028.png
Binary files differ
diff --git a/res/drawable/rotatedown_00029.png b/res/drawable/rotatedown_00029.png
new file mode 100644
index 0000000..b20104e
--- /dev/null
+++ b/res/drawable/rotatedown_00029.png
Binary files differ
diff --git a/res/drawable/rotatedown_00030.png b/res/drawable/rotatedown_00030.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00030.png
Binary files differ
diff --git a/res/drawable/rotatedown_00031.png b/res/drawable/rotatedown_00031.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00031.png
Binary files differ
diff --git a/res/drawable/rotatedown_00032.png b/res/drawable/rotatedown_00032.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00032.png
Binary files differ
diff --git a/res/drawable/rotatedown_00033.png b/res/drawable/rotatedown_00033.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00033.png
Binary files differ
diff --git a/res/drawable/rotatedown_00034.png b/res/drawable/rotatedown_00034.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00034.png
Binary files differ
diff --git a/res/drawable/rotatedown_00035.png b/res/drawable/rotatedown_00035.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00035.png
Binary files differ
diff --git a/res/drawable/rotatedown_00036.png b/res/drawable/rotatedown_00036.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00036.png
Binary files differ
diff --git a/res/drawable/rotatedown_00037.png b/res/drawable/rotatedown_00037.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00037.png
Binary files differ
diff --git a/res/drawable/rotatedown_00038.png b/res/drawable/rotatedown_00038.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00038.png
Binary files differ
diff --git a/res/drawable/rotatedown_00039.png b/res/drawable/rotatedown_00039.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00039.png
Binary files differ
diff --git a/res/drawable/rotatedown_00040.png b/res/drawable/rotatedown_00040.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00040.png
Binary files differ
diff --git a/res/drawable/rotatedown_00041.png b/res/drawable/rotatedown_00041.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00041.png
Binary files differ
diff --git a/res/drawable/rotatedown_00042.png b/res/drawable/rotatedown_00042.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00042.png
Binary files differ
diff --git a/res/drawable/rotatedown_00043.png b/res/drawable/rotatedown_00043.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00043.png
Binary files differ
diff --git a/res/drawable/rotatedown_00044.png b/res/drawable/rotatedown_00044.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00044.png
Binary files differ
diff --git a/res/drawable/rotatedown_00045.png b/res/drawable/rotatedown_00045.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00045.png
Binary files differ
diff --git a/res/drawable/rotatedown_00046.png b/res/drawable/rotatedown_00046.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00046.png
Binary files differ
diff --git a/res/drawable/rotatedown_00047.png b/res/drawable/rotatedown_00047.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00047.png
Binary files differ
diff --git a/res/drawable/rotatedown_00048.png b/res/drawable/rotatedown_00048.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00048.png
Binary files differ
diff --git a/res/drawable/rotatedown_00049.png b/res/drawable/rotatedown_00049.png
new file mode 100644
index 0000000..07ccb92
--- /dev/null
+++ b/res/drawable/rotatedown_00049.png
Binary files differ
diff --git a/res/drawable/rotateup_00000.png b/res/drawable/rotateup_00000.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00000.png
Binary files differ
diff --git a/res/drawable/rotateup_00001.png b/res/drawable/rotateup_00001.png
new file mode 100644
index 0000000..d43792b
--- /dev/null
+++ b/res/drawable/rotateup_00001.png
Binary files differ
diff --git a/res/drawable/rotateup_00002.png b/res/drawable/rotateup_00002.png
new file mode 100644
index 0000000..f770007
--- /dev/null
+++ b/res/drawable/rotateup_00002.png
Binary files differ
diff --git a/res/drawable/rotateup_00003.png b/res/drawable/rotateup_00003.png
new file mode 100644
index 0000000..f5c2493
--- /dev/null
+++ b/res/drawable/rotateup_00003.png
Binary files differ
diff --git a/res/drawable/rotateup_00004.png b/res/drawable/rotateup_00004.png
new file mode 100644
index 0000000..b843182
--- /dev/null
+++ b/res/drawable/rotateup_00004.png
Binary files differ
diff --git a/res/drawable/rotateup_00005.png b/res/drawable/rotateup_00005.png
new file mode 100644
index 0000000..342b3f9
--- /dev/null
+++ b/res/drawable/rotateup_00005.png
Binary files differ
diff --git a/res/drawable/rotateup_00006.png b/res/drawable/rotateup_00006.png
new file mode 100644
index 0000000..cbf69d7
--- /dev/null
+++ b/res/drawable/rotateup_00006.png
Binary files differ
diff --git a/res/drawable/rotateup_00007.png b/res/drawable/rotateup_00007.png
new file mode 100644
index 0000000..8826db5
--- /dev/null
+++ b/res/drawable/rotateup_00007.png
Binary files differ
diff --git a/res/drawable/rotateup_00008.png b/res/drawable/rotateup_00008.png
new file mode 100644
index 0000000..6c363ed
--- /dev/null
+++ b/res/drawable/rotateup_00008.png
Binary files differ
diff --git a/res/drawable/rotateup_00009.png b/res/drawable/rotateup_00009.png
new file mode 100644
index 0000000..48e2890
--- /dev/null
+++ b/res/drawable/rotateup_00009.png
Binary files differ
diff --git a/res/drawable/rotateup_00010.png b/res/drawable/rotateup_00010.png
new file mode 100644
index 0000000..5749ccd
--- /dev/null
+++ b/res/drawable/rotateup_00010.png
Binary files differ
diff --git a/res/drawable/rotateup_00011.png b/res/drawable/rotateup_00011.png
new file mode 100644
index 0000000..2a0463c
--- /dev/null
+++ b/res/drawable/rotateup_00011.png
Binary files differ
diff --git a/res/drawable/rotateup_00012.png b/res/drawable/rotateup_00012.png
new file mode 100644
index 0000000..9bcfa09
--- /dev/null
+++ b/res/drawable/rotateup_00012.png
Binary files differ
diff --git a/res/drawable/rotateup_00013.png b/res/drawable/rotateup_00013.png
new file mode 100644
index 0000000..bc4ebb9
--- /dev/null
+++ b/res/drawable/rotateup_00013.png
Binary files differ
diff --git a/res/drawable/rotateup_00014.png b/res/drawable/rotateup_00014.png
new file mode 100644
index 0000000..1814568
--- /dev/null
+++ b/res/drawable/rotateup_00014.png
Binary files differ
diff --git a/res/drawable/rotateup_00015.png b/res/drawable/rotateup_00015.png
new file mode 100644
index 0000000..48c3440
--- /dev/null
+++ b/res/drawable/rotateup_00015.png
Binary files differ
diff --git a/res/drawable/rotateup_00016.png b/res/drawable/rotateup_00016.png
new file mode 100644
index 0000000..772a31d
--- /dev/null
+++ b/res/drawable/rotateup_00016.png
Binary files differ
diff --git a/res/drawable/rotateup_00017.png b/res/drawable/rotateup_00017.png
new file mode 100644
index 0000000..ddad38c
--- /dev/null
+++ b/res/drawable/rotateup_00017.png
Binary files differ
diff --git a/res/drawable/rotateup_00018.png b/res/drawable/rotateup_00018.png
new file mode 100644
index 0000000..a401751
--- /dev/null
+++ b/res/drawable/rotateup_00018.png
Binary files differ
diff --git a/res/drawable/rotateup_00019.png b/res/drawable/rotateup_00019.png
new file mode 100644
index 0000000..2091c5e
--- /dev/null
+++ b/res/drawable/rotateup_00019.png
Binary files differ
diff --git a/res/drawable/rotateup_00020.png b/res/drawable/rotateup_00020.png
new file mode 100644
index 0000000..61ca3b2
--- /dev/null
+++ b/res/drawable/rotateup_00020.png
Binary files differ
diff --git a/res/drawable/rotateup_00021.png b/res/drawable/rotateup_00021.png
new file mode 100644
index 0000000..27c4258
--- /dev/null
+++ b/res/drawable/rotateup_00021.png
Binary files differ
diff --git a/res/drawable/rotateup_00022.png b/res/drawable/rotateup_00022.png
new file mode 100644
index 0000000..6f158ba
--- /dev/null
+++ b/res/drawable/rotateup_00022.png
Binary files differ
diff --git a/res/drawable/rotateup_00023.png b/res/drawable/rotateup_00023.png
new file mode 100644
index 0000000..6a0a4da
--- /dev/null
+++ b/res/drawable/rotateup_00023.png
Binary files differ
diff --git a/res/drawable/rotateup_00024.png b/res/drawable/rotateup_00024.png
new file mode 100644
index 0000000..cdfde2a
--- /dev/null
+++ b/res/drawable/rotateup_00024.png
Binary files differ
diff --git a/res/drawable/rotateup_00025.png b/res/drawable/rotateup_00025.png
new file mode 100644
index 0000000..2ac9ffa
--- /dev/null
+++ b/res/drawable/rotateup_00025.png
Binary files differ
diff --git a/res/drawable/rotateup_00026.png b/res/drawable/rotateup_00026.png
new file mode 100644
index 0000000..2e41a97
--- /dev/null
+++ b/res/drawable/rotateup_00026.png
Binary files differ
diff --git a/res/drawable/rotateup_00027.png b/res/drawable/rotateup_00027.png
new file mode 100644
index 0000000..fc68c10
--- /dev/null
+++ b/res/drawable/rotateup_00027.png
Binary files differ
diff --git a/res/drawable/rotateup_00028.png b/res/drawable/rotateup_00028.png
new file mode 100644
index 0000000..cc5fb9c
--- /dev/null
+++ b/res/drawable/rotateup_00028.png
Binary files differ
diff --git a/res/drawable/rotateup_00029.png b/res/drawable/rotateup_00029.png
new file mode 100644
index 0000000..43ef7a1
--- /dev/null
+++ b/res/drawable/rotateup_00029.png
Binary files differ
diff --git a/res/drawable/rotateup_00030.png b/res/drawable/rotateup_00030.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00030.png
Binary files differ
diff --git a/res/drawable/rotateup_00031.png b/res/drawable/rotateup_00031.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00031.png
Binary files differ
diff --git a/res/drawable/rotateup_00032.png b/res/drawable/rotateup_00032.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00032.png
Binary files differ
diff --git a/res/drawable/rotateup_00033.png b/res/drawable/rotateup_00033.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00033.png
Binary files differ
diff --git a/res/drawable/rotateup_00034.png b/res/drawable/rotateup_00034.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00034.png
Binary files differ
diff --git a/res/drawable/rotateup_00035.png b/res/drawable/rotateup_00035.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00035.png
Binary files differ
diff --git a/res/drawable/rotateup_00036.png b/res/drawable/rotateup_00036.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00036.png
Binary files differ
diff --git a/res/drawable/rotateup_00037.png b/res/drawable/rotateup_00037.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00037.png
Binary files differ
diff --git a/res/drawable/rotateup_00038.png b/res/drawable/rotateup_00038.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00038.png
Binary files differ
diff --git a/res/drawable/rotateup_00039.png b/res/drawable/rotateup_00039.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00039.png
Binary files differ
diff --git a/res/drawable/rotateup_00040.png b/res/drawable/rotateup_00040.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00040.png
Binary files differ
diff --git a/res/drawable/rotateup_00041.png b/res/drawable/rotateup_00041.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00041.png
Binary files differ
diff --git a/res/drawable/rotateup_00042.png b/res/drawable/rotateup_00042.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00042.png
Binary files differ
diff --git a/res/drawable/rotateup_00043.png b/res/drawable/rotateup_00043.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00043.png
Binary files differ
diff --git a/res/drawable/rotateup_00044.png b/res/drawable/rotateup_00044.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00044.png
Binary files differ
diff --git a/res/drawable/rotateup_00045.png b/res/drawable/rotateup_00045.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00045.png
Binary files differ
diff --git a/res/drawable/rotateup_00046.png b/res/drawable/rotateup_00046.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00046.png
Binary files differ
diff --git a/res/drawable/rotateup_00047.png b/res/drawable/rotateup_00047.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00047.png
Binary files differ
diff --git a/res/drawable/rotateup_00048.png b/res/drawable/rotateup_00048.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00048.png
Binary files differ
diff --git a/res/drawable/rotateup_00049.png b/res/drawable/rotateup_00049.png
new file mode 100644
index 0000000..75e575f
--- /dev/null
+++ b/res/drawable/rotateup_00049.png
Binary files differ
diff --git a/res/drawable/stack_00000.png b/res/drawable/stack_00000.png
new file mode 100644
index 0000000..b7e7f0b
--- /dev/null
+++ b/res/drawable/stack_00000.png
Binary files differ
diff --git a/res/drawable/stack_00001.png b/res/drawable/stack_00001.png
new file mode 100644
index 0000000..8b7f3a5
--- /dev/null
+++ b/res/drawable/stack_00001.png
Binary files differ
diff --git a/res/drawable/stack_00002.png b/res/drawable/stack_00002.png
new file mode 100644
index 0000000..c9e3aed
--- /dev/null
+++ b/res/drawable/stack_00002.png
Binary files differ
diff --git a/res/drawable/stack_00003.png b/res/drawable/stack_00003.png
new file mode 100644
index 0000000..565f69b
--- /dev/null
+++ b/res/drawable/stack_00003.png
Binary files differ
diff --git a/res/drawable/stack_00004.png b/res/drawable/stack_00004.png
new file mode 100644
index 0000000..2726dac
--- /dev/null
+++ b/res/drawable/stack_00004.png
Binary files differ
diff --git a/res/drawable/stack_00005.png b/res/drawable/stack_00005.png
new file mode 100644
index 0000000..266f1dc
--- /dev/null
+++ b/res/drawable/stack_00005.png
Binary files differ
diff --git a/res/drawable/stack_00006.png b/res/drawable/stack_00006.png
new file mode 100644
index 0000000..f26c0d0
--- /dev/null
+++ b/res/drawable/stack_00006.png
Binary files differ
diff --git a/res/drawable/stack_00007.png b/res/drawable/stack_00007.png
new file mode 100644
index 0000000..f6bd362
--- /dev/null
+++ b/res/drawable/stack_00007.png
Binary files differ
diff --git a/res/drawable/stack_00008.png b/res/drawable/stack_00008.png
new file mode 100644
index 0000000..d9c20d8
--- /dev/null
+++ b/res/drawable/stack_00008.png
Binary files differ
diff --git a/res/drawable/stack_00009.png b/res/drawable/stack_00009.png
new file mode 100644
index 0000000..54620e2
--- /dev/null
+++ b/res/drawable/stack_00009.png
Binary files differ
diff --git a/res/drawable/stack_00010.png b/res/drawable/stack_00010.png
new file mode 100644
index 0000000..7ec4b87
--- /dev/null
+++ b/res/drawable/stack_00010.png
Binary files differ
diff --git a/res/drawable/stack_00011.png b/res/drawable/stack_00011.png
new file mode 100644
index 0000000..300b98a
--- /dev/null
+++ b/res/drawable/stack_00011.png
Binary files differ
diff --git a/res/drawable/stack_00012.png b/res/drawable/stack_00012.png
new file mode 100644
index 0000000..eae0e91
--- /dev/null
+++ b/res/drawable/stack_00012.png
Binary files differ
diff --git a/res/drawable/stack_00013.png b/res/drawable/stack_00013.png
new file mode 100644
index 0000000..fa24d74
--- /dev/null
+++ b/res/drawable/stack_00013.png
Binary files differ
diff --git a/res/drawable/stack_00014.png b/res/drawable/stack_00014.png
new file mode 100644
index 0000000..ad0a810
--- /dev/null
+++ b/res/drawable/stack_00014.png
Binary files differ
diff --git a/res/drawable/stack_00015.png b/res/drawable/stack_00015.png
new file mode 100644
index 0000000..1259509
--- /dev/null
+++ b/res/drawable/stack_00015.png
Binary files differ
diff --git a/res/drawable/stack_00016.png b/res/drawable/stack_00016.png
new file mode 100644
index 0000000..cc0e907
--- /dev/null
+++ b/res/drawable/stack_00016.png
Binary files differ
diff --git a/res/drawable/stack_00017.png b/res/drawable/stack_00017.png
new file mode 100644
index 0000000..174165b
--- /dev/null
+++ b/res/drawable/stack_00017.png
Binary files differ
diff --git a/res/drawable/stack_00018.png b/res/drawable/stack_00018.png
new file mode 100644
index 0000000..0fb9cea
--- /dev/null
+++ b/res/drawable/stack_00018.png
Binary files differ
diff --git a/res/drawable/stack_00019.png b/res/drawable/stack_00019.png
new file mode 100644
index 0000000..4a66a8f
--- /dev/null
+++ b/res/drawable/stack_00019.png
Binary files differ
diff --git a/res/drawable/stack_00020.png b/res/drawable/stack_00020.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00020.png
Binary files differ
diff --git a/res/drawable/stack_00021.png b/res/drawable/stack_00021.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00021.png
Binary files differ
diff --git a/res/drawable/stack_00022.png b/res/drawable/stack_00022.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00022.png
Binary files differ
diff --git a/res/drawable/stack_00023.png b/res/drawable/stack_00023.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00023.png
Binary files differ
diff --git a/res/drawable/stack_00024.png b/res/drawable/stack_00024.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00024.png
Binary files differ
diff --git a/res/drawable/stack_00025.png b/res/drawable/stack_00025.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00025.png
Binary files differ
diff --git a/res/drawable/stack_00026.png b/res/drawable/stack_00026.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00026.png
Binary files differ
diff --git a/res/drawable/stack_00027.png b/res/drawable/stack_00027.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00027.png
Binary files differ
diff --git a/res/drawable/stack_00028.png b/res/drawable/stack_00028.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00028.png
Binary files differ
diff --git a/res/drawable/stack_00029.png b/res/drawable/stack_00029.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00029.png
Binary files differ
diff --git a/res/drawable/stack_00030.png b/res/drawable/stack_00030.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00030.png
Binary files differ
diff --git a/res/drawable/stack_00031.png b/res/drawable/stack_00031.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00031.png
Binary files differ
diff --git a/res/drawable/stack_00032.png b/res/drawable/stack_00032.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00032.png
Binary files differ
diff --git a/res/drawable/stack_00033.png b/res/drawable/stack_00033.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00033.png
Binary files differ
diff --git a/res/drawable/stack_00034.png b/res/drawable/stack_00034.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00034.png
Binary files differ
diff --git a/res/drawable/stack_00035.png b/res/drawable/stack_00035.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00035.png
Binary files differ
diff --git a/res/drawable/stack_00036.png b/res/drawable/stack_00036.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00036.png
Binary files differ
diff --git a/res/drawable/stack_00037.png b/res/drawable/stack_00037.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00037.png
Binary files differ
diff --git a/res/drawable/stack_00038.png b/res/drawable/stack_00038.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00038.png
Binary files differ
diff --git a/res/drawable/stack_00039.png b/res/drawable/stack_00039.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00039.png
Binary files differ
diff --git a/res/drawable/stack_00040.png b/res/drawable/stack_00040.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00040.png
Binary files differ
diff --git a/res/drawable/stack_00041.png b/res/drawable/stack_00041.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00041.png
Binary files differ
diff --git a/res/drawable/stack_00042.png b/res/drawable/stack_00042.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00042.png
Binary files differ
diff --git a/res/drawable/stack_00043.png b/res/drawable/stack_00043.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00043.png
Binary files differ
diff --git a/res/drawable/stack_00044.png b/res/drawable/stack_00044.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00044.png
Binary files differ
diff --git a/res/drawable/stack_00045.png b/res/drawable/stack_00045.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00045.png
Binary files differ
diff --git a/res/drawable/stack_00046.png b/res/drawable/stack_00046.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00046.png
Binary files differ
diff --git a/res/drawable/stack_00047.png b/res/drawable/stack_00047.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00047.png
Binary files differ
diff --git a/res/drawable/stack_00048.png b/res/drawable/stack_00048.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00048.png
Binary files differ
diff --git a/res/drawable/stack_00049.png b/res/drawable/stack_00049.png
new file mode 100644
index 0000000..ebe970d
--- /dev/null
+++ b/res/drawable/stack_00049.png
Binary files differ
diff --git a/res/drawable/transition_accordion.xml b/res/drawable/transition_accordion.xml
new file mode 100644
index 0000000..5650ba2
--- /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 0000000..540db93
--- /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 0000000..855f08f
--- /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 0000000..bebb5c0
--- /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 0000000..b5a9321
--- /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 0000000..c8694bb
--- /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 0000000..e51d32e
--- /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 0000000..451964e
--- /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 0000000..3089720
--- /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 0000000..e357939
--- /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 0000000..47dac7d
--- /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 0000000..f05f710
--- /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 0000000..3a2e8fa
--- /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 0000000..1483a1b
--- /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 0000000..cf76e53
--- /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 0000000..1acdb0c
--- /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
new file mode 100644
index 0000000..f481380
--- /dev/null
+++ b/res/drawable/zoomin_00000.png
Binary files differ
diff --git a/res/drawable/zoomin_00001.png b/res/drawable/zoomin_00001.png
new file mode 100644
index 0000000..d2f01b4
--- /dev/null
+++ b/res/drawable/zoomin_00001.png
Binary files differ
diff --git a/res/drawable/zoomin_00002.png b/res/drawable/zoomin_00002.png
new file mode 100644
index 0000000..f0bea79
--- /dev/null
+++ b/res/drawable/zoomin_00002.png
Binary files differ
diff --git a/res/drawable/zoomin_00003.png b/res/drawable/zoomin_00003.png
new file mode 100644
index 0000000..23bd3d5
--- /dev/null
+++ b/res/drawable/zoomin_00003.png
Binary files differ
diff --git a/res/drawable/zoomin_00004.png b/res/drawable/zoomin_00004.png
new file mode 100644
index 0000000..9f343a2
--- /dev/null
+++ b/res/drawable/zoomin_00004.png
Binary files differ
diff --git a/res/drawable/zoomin_00005.png b/res/drawable/zoomin_00005.png
new file mode 100644
index 0000000..cf7d82a
--- /dev/null
+++ b/res/drawable/zoomin_00005.png
Binary files differ
diff --git a/res/drawable/zoomin_00006.png b/res/drawable/zoomin_00006.png
new file mode 100644
index 0000000..5043dfd
--- /dev/null
+++ b/res/drawable/zoomin_00006.png
Binary files differ
diff --git a/res/drawable/zoomin_00007.png b/res/drawable/zoomin_00007.png
new file mode 100644
index 0000000..013cbbf
--- /dev/null
+++ b/res/drawable/zoomin_00007.png
Binary files differ
diff --git a/res/drawable/zoomin_00008.png b/res/drawable/zoomin_00008.png
new file mode 100644
index 0000000..d8acca6
--- /dev/null
+++ b/res/drawable/zoomin_00008.png
Binary files differ
diff --git a/res/drawable/zoomin_00009.png b/res/drawable/zoomin_00009.png
new file mode 100644
index 0000000..982aa00
--- /dev/null
+++ b/res/drawable/zoomin_00009.png
Binary files differ
diff --git a/res/drawable/zoomin_00010.png b/res/drawable/zoomin_00010.png
new file mode 100644
index 0000000..7a5b964
--- /dev/null
+++ b/res/drawable/zoomin_00010.png
Binary files differ
diff --git a/res/drawable/zoomin_00011.png b/res/drawable/zoomin_00011.png
new file mode 100644
index 0000000..94c374b
--- /dev/null
+++ b/res/drawable/zoomin_00011.png
Binary files differ
diff --git a/res/drawable/zoomin_00012.png b/res/drawable/zoomin_00012.png
new file mode 100644
index 0000000..f4ca0cb
--- /dev/null
+++ b/res/drawable/zoomin_00012.png
Binary files differ
diff --git a/res/drawable/zoomin_00013.png b/res/drawable/zoomin_00013.png
new file mode 100644
index 0000000..fbb30e0
--- /dev/null
+++ b/res/drawable/zoomin_00013.png
Binary files differ
diff --git a/res/drawable/zoomin_00014.png b/res/drawable/zoomin_00014.png
new file mode 100644
index 0000000..8e93f17
--- /dev/null
+++ b/res/drawable/zoomin_00014.png
Binary files differ
diff --git a/res/drawable/zoomin_00015.png b/res/drawable/zoomin_00015.png
new file mode 100644
index 0000000..bad7462
--- /dev/null
+++ b/res/drawable/zoomin_00015.png
Binary files differ
diff --git a/res/drawable/zoomin_00016.png b/res/drawable/zoomin_00016.png
new file mode 100644
index 0000000..282a807
--- /dev/null
+++ b/res/drawable/zoomin_00016.png
Binary files differ
diff --git a/res/drawable/zoomin_00017.png b/res/drawable/zoomin_00017.png
new file mode 100644
index 0000000..ae94999
--- /dev/null
+++ b/res/drawable/zoomin_00017.png
Binary files differ
diff --git a/res/drawable/zoomin_00018.png b/res/drawable/zoomin_00018.png
new file mode 100644
index 0000000..3fcc59e
--- /dev/null
+++ b/res/drawable/zoomin_00018.png
Binary files differ
diff --git a/res/drawable/zoomin_00019.png b/res/drawable/zoomin_00019.png
new file mode 100644
index 0000000..be9cfcb
--- /dev/null
+++ b/res/drawable/zoomin_00019.png
Binary files differ
diff --git a/res/drawable/zoomin_00020.png b/res/drawable/zoomin_00020.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00020.png
Binary files differ
diff --git a/res/drawable/zoomin_00021.png b/res/drawable/zoomin_00021.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00021.png
Binary files differ
diff --git a/res/drawable/zoomin_00022.png b/res/drawable/zoomin_00022.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00022.png
Binary files differ
diff --git a/res/drawable/zoomin_00023.png b/res/drawable/zoomin_00023.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00023.png
Binary files differ
diff --git a/res/drawable/zoomin_00024.png b/res/drawable/zoomin_00024.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00024.png
Binary files differ
diff --git a/res/drawable/zoomin_00025.png b/res/drawable/zoomin_00025.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00025.png
Binary files differ
diff --git a/res/drawable/zoomin_00026.png b/res/drawable/zoomin_00026.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00026.png
Binary files differ
diff --git a/res/drawable/zoomin_00027.png b/res/drawable/zoomin_00027.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00027.png
Binary files differ
diff --git a/res/drawable/zoomin_00028.png b/res/drawable/zoomin_00028.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00028.png
Binary files differ
diff --git a/res/drawable/zoomin_00029.png b/res/drawable/zoomin_00029.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00029.png
Binary files differ
diff --git a/res/drawable/zoomin_00030.png b/res/drawable/zoomin_00030.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00030.png
Binary files differ
diff --git a/res/drawable/zoomin_00031.png b/res/drawable/zoomin_00031.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00031.png
Binary files differ
diff --git a/res/drawable/zoomin_00032.png b/res/drawable/zoomin_00032.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00032.png
Binary files differ
diff --git a/res/drawable/zoomin_00033.png b/res/drawable/zoomin_00033.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00033.png
Binary files differ
diff --git a/res/drawable/zoomin_00034.png b/res/drawable/zoomin_00034.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00034.png
Binary files differ
diff --git a/res/drawable/zoomin_00035.png b/res/drawable/zoomin_00035.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00035.png
Binary files differ
diff --git a/res/drawable/zoomin_00036.png b/res/drawable/zoomin_00036.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00036.png
Binary files differ
diff --git a/res/drawable/zoomin_00037.png b/res/drawable/zoomin_00037.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00037.png
Binary files differ
diff --git a/res/drawable/zoomin_00038.png b/res/drawable/zoomin_00038.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00038.png
Binary files differ
diff --git a/res/drawable/zoomin_00039.png b/res/drawable/zoomin_00039.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00039.png
Binary files differ
diff --git a/res/drawable/zoomin_00040.png b/res/drawable/zoomin_00040.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00040.png
Binary files differ
diff --git a/res/drawable/zoomin_00041.png b/res/drawable/zoomin_00041.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00041.png
Binary files differ
diff --git a/res/drawable/zoomin_00042.png b/res/drawable/zoomin_00042.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00042.png
Binary files differ
diff --git a/res/drawable/zoomin_00043.png b/res/drawable/zoomin_00043.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00043.png
Binary files differ
diff --git a/res/drawable/zoomin_00044.png b/res/drawable/zoomin_00044.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00044.png
Binary files differ
diff --git a/res/drawable/zoomin_00045.png b/res/drawable/zoomin_00045.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00045.png
Binary files differ
diff --git a/res/drawable/zoomin_00046.png b/res/drawable/zoomin_00046.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00046.png
Binary files differ
diff --git a/res/drawable/zoomin_00047.png b/res/drawable/zoomin_00047.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00047.png
Binary files differ
diff --git a/res/drawable/zoomin_00048.png b/res/drawable/zoomin_00048.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00048.png
Binary files differ
diff --git a/res/drawable/zoomin_00049.png b/res/drawable/zoomin_00049.png
new file mode 100644
index 0000000..303e8f8
--- /dev/null
+++ b/res/drawable/zoomin_00049.png
Binary files differ
diff --git a/res/drawable/zoomout_00000.png b/res/drawable/zoomout_00000.png
new file mode 100644
index 0000000..94284f9
--- /dev/null
+++ b/res/drawable/zoomout_00000.png
Binary files differ
diff --git a/res/drawable/zoomout_00001.png b/res/drawable/zoomout_00001.png
new file mode 100644
index 0000000..8c2a259
--- /dev/null
+++ b/res/drawable/zoomout_00001.png
Binary files differ
diff --git a/res/drawable/zoomout_00002.png b/res/drawable/zoomout_00002.png
new file mode 100644
index 0000000..e3c4cb4
--- /dev/null
+++ b/res/drawable/zoomout_00002.png
Binary files differ
diff --git a/res/drawable/zoomout_00003.png b/res/drawable/zoomout_00003.png
new file mode 100644
index 0000000..95af18d
--- /dev/null
+++ b/res/drawable/zoomout_00003.png
Binary files differ
diff --git a/res/drawable/zoomout_00004.png b/res/drawable/zoomout_00004.png
new file mode 100644
index 0000000..4d8af96
--- /dev/null
+++ b/res/drawable/zoomout_00004.png
Binary files differ
diff --git a/res/drawable/zoomout_00005.png b/res/drawable/zoomout_00005.png
new file mode 100644
index 0000000..6db1ab0
--- /dev/null
+++ b/res/drawable/zoomout_00005.png
Binary files differ
diff --git a/res/drawable/zoomout_00006.png b/res/drawable/zoomout_00006.png
new file mode 100644
index 0000000..277d8c4
--- /dev/null
+++ b/res/drawable/zoomout_00006.png
Binary files differ
diff --git a/res/drawable/zoomout_00007.png b/res/drawable/zoomout_00007.png
new file mode 100644
index 0000000..4fe81f6
--- /dev/null
+++ b/res/drawable/zoomout_00007.png
Binary files differ
diff --git a/res/drawable/zoomout_00008.png b/res/drawable/zoomout_00008.png
new file mode 100644
index 0000000..fadd58a
--- /dev/null
+++ b/res/drawable/zoomout_00008.png
Binary files differ
diff --git a/res/drawable/zoomout_00009.png b/res/drawable/zoomout_00009.png
new file mode 100644
index 0000000..5b6003e
--- /dev/null
+++ b/res/drawable/zoomout_00009.png
Binary files differ
diff --git a/res/drawable/zoomout_00010.png b/res/drawable/zoomout_00010.png
new file mode 100644
index 0000000..b77a4f8
--- /dev/null
+++ b/res/drawable/zoomout_00010.png
Binary files differ
diff --git a/res/drawable/zoomout_00011.png b/res/drawable/zoomout_00011.png
new file mode 100644
index 0000000..85fbbb8
--- /dev/null
+++ b/res/drawable/zoomout_00011.png
Binary files differ
diff --git a/res/drawable/zoomout_00012.png b/res/drawable/zoomout_00012.png
new file mode 100644
index 0000000..eb8acb2
--- /dev/null
+++ b/res/drawable/zoomout_00012.png
Binary files differ
diff --git a/res/drawable/zoomout_00013.png b/res/drawable/zoomout_00013.png
new file mode 100644
index 0000000..3501c85
--- /dev/null
+++ b/res/drawable/zoomout_00013.png
Binary files differ
diff --git a/res/drawable/zoomout_00014.png b/res/drawable/zoomout_00014.png
new file mode 100644
index 0000000..fd600be
--- /dev/null
+++ b/res/drawable/zoomout_00014.png
Binary files differ
diff --git a/res/drawable/zoomout_00015.png b/res/drawable/zoomout_00015.png
new file mode 100644
index 0000000..b88c6bc
--- /dev/null
+++ b/res/drawable/zoomout_00015.png
Binary files differ
diff --git a/res/drawable/zoomout_00016.png b/res/drawable/zoomout_00016.png
new file mode 100644
index 0000000..c618a55
--- /dev/null
+++ b/res/drawable/zoomout_00016.png
Binary files differ
diff --git a/res/drawable/zoomout_00017.png b/res/drawable/zoomout_00017.png
new file mode 100644
index 0000000..c54b0dc
--- /dev/null
+++ b/res/drawable/zoomout_00017.png
Binary files differ
diff --git a/res/drawable/zoomout_00018.png b/res/drawable/zoomout_00018.png
new file mode 100644
index 0000000..8e974a1
--- /dev/null
+++ b/res/drawable/zoomout_00018.png
Binary files differ
diff --git a/res/drawable/zoomout_00019.png b/res/drawable/zoomout_00019.png
new file mode 100644
index 0000000..79c6fb0
--- /dev/null
+++ b/res/drawable/zoomout_00019.png
Binary files differ
diff --git a/res/drawable/zoomout_00020.png b/res/drawable/zoomout_00020.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00020.png
Binary files differ
diff --git a/res/drawable/zoomout_00021.png b/res/drawable/zoomout_00021.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00021.png
Binary files differ
diff --git a/res/drawable/zoomout_00022.png b/res/drawable/zoomout_00022.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00022.png
Binary files differ
diff --git a/res/drawable/zoomout_00023.png b/res/drawable/zoomout_00023.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00023.png
Binary files differ
diff --git a/res/drawable/zoomout_00024.png b/res/drawable/zoomout_00024.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00024.png
Binary files differ
diff --git a/res/drawable/zoomout_00025.png b/res/drawable/zoomout_00025.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00025.png
Binary files differ
diff --git a/res/drawable/zoomout_00026.png b/res/drawable/zoomout_00026.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00026.png
Binary files differ
diff --git a/res/drawable/zoomout_00027.png b/res/drawable/zoomout_00027.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00027.png
Binary files differ
diff --git a/res/drawable/zoomout_00028.png b/res/drawable/zoomout_00028.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00028.png
Binary files differ
diff --git a/res/drawable/zoomout_00029.png b/res/drawable/zoomout_00029.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00029.png
Binary files differ
diff --git a/res/drawable/zoomout_00030.png b/res/drawable/zoomout_00030.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00030.png
Binary files differ
diff --git a/res/drawable/zoomout_00031.png b/res/drawable/zoomout_00031.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00031.png
Binary files differ
diff --git a/res/drawable/zoomout_00032.png b/res/drawable/zoomout_00032.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00032.png
Binary files differ
diff --git a/res/drawable/zoomout_00033.png b/res/drawable/zoomout_00033.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00033.png
Binary files differ
diff --git a/res/drawable/zoomout_00034.png b/res/drawable/zoomout_00034.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00034.png
Binary files differ
diff --git a/res/drawable/zoomout_00035.png b/res/drawable/zoomout_00035.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00035.png
Binary files differ
diff --git a/res/drawable/zoomout_00036.png b/res/drawable/zoomout_00036.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00036.png
Binary files differ
diff --git a/res/drawable/zoomout_00037.png b/res/drawable/zoomout_00037.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00037.png
Binary files differ
diff --git a/res/drawable/zoomout_00038.png b/res/drawable/zoomout_00038.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00038.png
Binary files differ
diff --git a/res/drawable/zoomout_00039.png b/res/drawable/zoomout_00039.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00039.png
Binary files differ
diff --git a/res/drawable/zoomout_00040.png b/res/drawable/zoomout_00040.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00040.png
Binary files differ
diff --git a/res/drawable/zoomout_00041.png b/res/drawable/zoomout_00041.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00041.png
Binary files differ
diff --git a/res/drawable/zoomout_00042.png b/res/drawable/zoomout_00042.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00042.png
Binary files differ
diff --git a/res/drawable/zoomout_00043.png b/res/drawable/zoomout_00043.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00043.png
Binary files differ
diff --git a/res/drawable/zoomout_00044.png b/res/drawable/zoomout_00044.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00044.png
Binary files differ
diff --git a/res/drawable/zoomout_00045.png b/res/drawable/zoomout_00045.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00045.png
Binary files differ
diff --git a/res/drawable/zoomout_00046.png b/res/drawable/zoomout_00046.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00046.png
Binary files differ
diff --git a/res/drawable/zoomout_00047.png b/res/drawable/zoomout_00047.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00047.png
Binary files differ
diff --git a/res/drawable/zoomout_00048.png b/res/drawable/zoomout_00048.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00048.png
Binary files differ
diff --git a/res/drawable/zoomout_00049.png b/res/drawable/zoomout_00049.png
new file mode 100644
index 0000000..b4be2aa
--- /dev/null
+++ b/res/drawable/zoomout_00049.png
Binary files differ
diff --git a/res/layout/overview_panel.xml b/res/layout/overview_panel.xml
index 558900c..ea12aef 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,47 +14,36 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal|bottom"
- android:orientation="horizontal">
+<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:gravity="bottom"
+ slidingpanel:overlay="false"
+ slidingpanel:panelHeight="@dimen/sliding_panel_padding" >
- <TextView
- android:id="@+id/wallpaper_button"
- android:layout_width="wrap_content"
+ <LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/default_home_screen_panel"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_gravity="start|top"
- 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/widget_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal|top"
- 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/settings_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="end|top"
- 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" />
-</FrameLayout>
+ android:layout_gravity="center_horizontal"
+ android:background="@color/settings_bg_color"
+ android:paddingTop="@dimen/overview_panel_top_padding" >
+
+ <ImageView
+ android:id="@+id/default_screen_button"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/app_icon_size"
+ android:layout_weight="1"
+ android:src="@drawable/ic_default_screen"
+ android:scaleType="fitCenter"
+ android:gravity="top"
+ android:paddingLeft="@dimen/overview_panel_button_spacing"
+ android:paddingRight="@dimen/overview_panel_button_spacing"/>
+ </LinearLayout>
+
+ <include layout="@layout/settings_pane" />
+
+</com.android.launcher3.SlidingUpPanelLayout>
diff --git a/res/layout/settings_pane.xml b/res/layout/settings_pane.xml
new file mode 100644
index 0000000..cb79e37
--- /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/settings_button"
+ android:layout_width="0dip"
+ android:layout_height="wrap_content"
+ android:drawablePadding="4dp"
+ android:drawableTop="@drawable/setting_button"
+ android:fontFamily="sans-serif-condensed"
+ android:gravity="center_horizontal"
+ android:layout_weight="2"
+ android:text="@string/settings_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>
diff --git a/res/layout/settings_pane_list_header.xml b/res/layout/settings_pane_list_header.xml
new file mode 100644
index 0000000..700f5e7
--- /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 0000000..2a9d31b
--- /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 0000000..23b3b37
--- /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
new file mode 100644
index 0000000..9958136
--- /dev/null
+++ b/res/values-sw320dp/dimens.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+
+<resources>
+ <!-- Workspace -->
+ <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 28679be..7e56764 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 65f8f22..240f311 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -143,4 +143,15 @@
<attr name="ringOutset" format="dimension" />
<attr name="indicatorSize" format="dimension" />
</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
new file mode 100644
index 0000000..2320f18
--- /dev/null
+++ b/res/values/cm_arrays.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 The CyanogenMod 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.
+-->
+<resources>
+ <string-array name="preferences_interface_general_icons_text_font_family_entries">
+ <item>Regular</item>
+ <item>Light</item>
+ <item>Condensed</item>
+ </string-array>
+ <string-array name="preferences_interface_general_icons_text_font_family_values" translatable="false">
+ <item>sans-serif</item>
+ <item>sans-serif-light</item>
+ <item>sans-serif-condensed</item>
+ </string-array>
+
+ <string-array name="transition_effect_entries">
+ <item>None</item>
+ <item>Zoom In</item>
+ <item>Zoom Out</item>
+ <item>Rotate Up</item>
+ <item>Rotate Down</item>
+ <item>Cube In</item>
+ <item>Cube Out</item>
+ <item>Stack</item>
+ <item>Accordion</item>
+ <item>Flip</item>
+ <item>Cylinder In</item>
+ <item>Cylinder Out</item>
+ <item>Carousel</item>
+ <item>Overview</item>
+ </string-array>
+ <string-array name="transition_effect_values" translatable="false">
+ <item>none</item>
+ <item>zoom-in</item>
+ <item>zoom-out</item>
+ <item>rotate-up</item>
+ <item>rotate-down</item>
+ <item>cube-in</item>
+ <item>cube-out</item>
+ <item>stack</item>
+ <item>accordion</item>
+ <item>flip</item>
+ <item>cylinder-in</item>
+ <item>cylinder-out</item>
+ <item>carousel</item>
+ <item>overview</item>
+ </string-array>
+ <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
new file mode 100644
index 0000000..267d65a
--- /dev/null
+++ b/res/values/cm_strings.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 The CyanogenMod 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.
+-->
+<resources>
+ <!-- Application name -->
+ <string name="cm_application_name" translatable="false">Trebuchet</string>
+ <!-- App copyright -->
+ <string name="application_copyright">Copyright \u00A9 2014 The CyanogenMod Project</string>
+ <!-- App version -->
+ <string name="application_version" translatable="false">1.0</string>
+
+ <!-- Strings for the customization mode -->
+ <!-- Text for sorting mode button -->
+ <string name="sort_button_text">Sort</string>
+ <!-- Text for filter button -->
+ <string name="filter_button_text">Filter</string>
+ <!-- Text for default screen button -->
+ <string name="default_screen_button_text">Default screen</string>
+ <!-- Text for transition effect button -->
+ <string name="transition_effect_button_text">Scroll effect</string>
+
+ <string name="sort_mode_title">Title</string>
+ <string name="sort_mode_launch_count">Launch count</string>
+ <string name="sort_mode_install_time">Install time</string>
+
+ <string name="scrolling_page_outlines">Page outlines</string>
+ <string name="scrolling_fade_adjacent">Fade side pages</string>
+
+
+ <string name="wallpaper_scroll">Scroll wallpaper</string>
+
+ <!-- Settings -->
+ <string name="preferences_title">Settings</string>
+ <!-- Application -->
+ <string name="preferences_application_title">App</string>
+
+ <!-- UI -->
+ <!-- Homescreen -->
+ <string name="preferences_interface_homescreen_title">Homescreen</string>
+ <string name="preferences_interface_homescreen_search_title">Search bar</string>
+ <string name="preferences_interface_homescreen_search_summary">Show persistent search bar at top of screen</string>
+ <string name="preferences_interface_homescreen_general_hide_icon_labels_title">Hide icon labels</string>
+ <string name="preferences_interface_homescreen_general_hide_icon_labels_summary">Hide icon labels on homescreen</string>
+
+ <!-- Drawer -->
+ <string name="preferences_interface_drawer_title">Drawer</string>
+ <string name="preferences_interface_drawer_summary">Apps and widgets drawer</string>
+ <string name="preferences_interface_drawer_apps_category">Apps</string>
+ <string name="preferences_interface_drawer_hidden_apps_title">Hidden apps</string>
+ <string name="preferences_interface_drawer_hidden_apps_summary">Hide apps from the drawer</string>
+ <string name="preferences_interface_drawer_hidden_apps_shortcuts_title">Remove shortcuts</string>
+ <string name="preferences_interface_drawer_hidden_apps_shortcuts_summary">Remove the shortcuts of hidden apps from the homescreen</string>
+ <string name="preferences_interface_drawer_hidden_apps_widgets_title">Remove widgets</string>
+ <string name="preferences_interface_drawer_hidden_apps_widgets_summary">Remove the widgets of hidden apps from the homescreen</string>
+ <string name="preferences_interface_drawer_hide_icon_labels_title">Hide icon labels</string>
+ <string name="preferences_interface_drawer_hide_icon_labels_summary">Hide icon labels in drawer</string>
+
+ <!-- Dock -->
+ <string name="preferences_interface_dock_title">Dock</string>
+
+ <!-- General -->
+ <string name="preferences_interface_general_title">General</string>
+ <string name="preferences_interface_general_icons_category">Icons</string>
+ <string name="preferences_interface_general_icons_large_title">Larger icons</string>
+ <string name="preferences_interface_general_icons_large_summary">Use extra large application icons in homescreen and drawer</string>
+ <string name="preferences_interface_general_icons_text_style_title">Text font style</string>
+ <string name="preferences_interface_general_icons_text_style_summary">Variant and style of font to use for icon text</string>
+ <string name="dialog_pick_iconpack_title">Pick icon pack</string>
+ <string name="default_iconpack_title">Default icons</string>
+ <string name="icon_packs_title">Icon packs</string>
+ <string name="no_iconpacks_summary">No icon packs installed</string>
+
+ <!-- Folder titles -->
+ <string name="google_title" translatable="false">Google</string>
+
+ <!-- Clear keyguard wallpaper tile text -->
+ <string name="clear_keyguard_wallpaper">Clear</string>
+
+ <!-- The title text for the all apps cling [CHAR_LIMIT=60] -->
+ <string name="all_apps_cling_cm">Customize your drawer</string>
+ <!-- The description of how to access Trebuchet settings [CHAR_LIMIT=160] -->
+ <string name="all_apps_cling_summary">Tap the page indicator to view additional configuration settings</string>
+
+ <!-- Noun, menu item used to reset hidden apps list -->
+ <string name="menu_hidden_apps_delete">Reset</string>
+
+ <!-- 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 29837ea..b2164de 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -37,5 +37,11 @@
<color name="quantum_panel_text_shadow_color">#FFC4C4C4</color>
<color name="outline_color">#FFFFFFFF</color>
<color name="widget_text_panel">#FF374248</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 96bd13b..8e19e37 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -32,6 +32,8 @@
<!-- 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">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 2c9e689..ce24d60 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -39,6 +39,13 @@
<!-- Workspace -->
<dimen name="workspace_max_gap">16dp</dimen>
<dimen name="workspace_overscroll_drawable_padding">0dp</dimen>
+ <dimen name="workspace_spring_loaded_page_spacing">15dp</dimen>
+ <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">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>
@@ -96,4 +103,7 @@
<!-- Sizes for managed profile badges -->
<dimen name="profile_badge_size">24dp</dimen>
<dimen name="profile_badge_margin">4dp</dimen>
+
+ <!-- Settings Pane dimen -->
+ <dimen name="settings_pane_handle">48dp</dimen>
</resources>
diff --git a/src/com/android/launcher3/DragLayer.java b/src/com/android/launcher3/DragLayer.java
index a8a61ea..e751b07 100644
--- a/src/com/android/launcher3/DragLayer.java
+++ b/src/com/android/launcher3/DragLayer.java
@@ -127,6 +127,19 @@ public class DragLayer extends FrameLayout implements ViewGroup.OnHierarchyChang
for (int i = 0; i < n; i++) {
final View child = getChildAt(i);
setInsets(child, insets, mInsets);
+ 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 {
+ flp.topMargin += (insets.top - mInsets.top);
+ flp.leftMargin += (insets.left - mInsets.left);
+ flp.rightMargin += (insets.right - mInsets.right);
+ flp.bottomMargin += (insets.bottom - mInsets.bottom);
+ }
+ child.setLayoutParams(flp);
}
mInsets.set(insets);
return true; // I'll take it from here
diff --git a/src/com/android/launcher3/DynamicGrid.java b/src/com/android/launcher3/DynamicGrid.java
index 94a07d7..dfb4152 100644
--- a/src/com/android/launcher3/DynamicGrid.java
+++ b/src/com/android/launcher3/DynamicGrid.java
@@ -23,7 +23,6 @@ import android.util.TypedValue;
import java.util.ArrayList;
-
public class DynamicGrid {
@SuppressWarnings("unused")
private static final String TAG = "DynamicGrid";
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 42ec4fb..d04c423 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -29,6 +29,9 @@ import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.AlertDialog;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.app.FragmentTransaction;
import android.app.SearchManager;
import android.appwidget.AppWidgetHostView;
import android.appwidget.AppWidgetManager;
@@ -39,7 +42,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 +85,6 @@ import android.view.Menu;
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.ViewAnimationUtils;
import android.view.ViewGroup;
@@ -111,6 +112,8 @@ import com.android.launcher3.compat.PackageInstallerCompat;
import com.android.launcher3.compat.PackageInstallerCompat.PackageInstallInfo;
import com.android.launcher3.compat.UserHandleCompat;
import com.android.launcher3.compat.UserManagerCompat;
+import com.android.launcher3.PagedView.TransitionEffect;
+import com.android.launcher3.settings.SettingsProvider;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -140,6 +143,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;
@@ -156,6 +161,9 @@ public class Launcher extends Activity
private static final int REQUEST_BIND_APPWIDGET = 11;
private static final int REQUEST_RECONFIGURE_APPWIDGET = 12;
+ public static final int REQUEST_TRANSITION_EFFECTS = 14;
+
+ static final int REQUEST_PICK_ICON = 13;
/**
* IntentStarter uses request codes starting with this. This must be greater than all activity
@@ -260,6 +268,7 @@ public class Launcher extends Activity
private DragLayer mDragLayer;
private DragController mDragController;
private View mWeightWatcher;
+ private TransitionEffectsFragment mTransitionEffectsFragment;
private AppWidgetManagerCompat mAppWidgetManager;
private LauncherAppWidgetHost mAppWidgetHost;
@@ -274,6 +283,8 @@ public class Launcher extends Activity
private Hotseat mHotseat;
private ViewGroup mOverviewPanel;
+ private View mDarkPanel;
+ OverviewSettingsPanel mOverviewSettingsPanel;
private View mAllAppsButton;
@@ -390,6 +401,23 @@ public class Launcher extends Activity
return Log.isLoggable(propertyName, Log.VERBOSE);
}
+ 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);
+ }
+
@Override
protected void onCreate(Bundle savedInstanceState) {
if (DEBUG_STRICT_MODE) {
@@ -409,33 +437,12 @@ public class Launcher extends Activity
super.onCreate(savedInstanceState);
- LauncherAppState.setApplicationContext(getApplicationContext());
- LauncherAppState app = LauncherAppState.getInstance();
- LauncherAppState.getLauncherProvider().setLauncherProviderChangeListener(this);
- // 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);
mIsSafeModeEnabled = getPackageManager().isSafeMode();
- mModel = app.setLauncher(this);
- mIconCache = app.getIconCache();
- mIconCache.flushInvalidIcons(grid);
mDragController = new DragController(this);
mInflater = getLayoutInflater();
@@ -460,7 +467,7 @@ public class Launcher extends Activity
setContentView(R.layout.launcher);
setupViews();
- grid.layout(this);
+ mGrid.layout(this);
registerContentObservers();
@@ -508,6 +515,40 @@ public class Launcher extends Activity
@Override
public void onLauncherProviderChange() { }
+ 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;
+ }
+
/** To be overriden by subclasses to hint to Launcher that we have custom content */
protected boolean hasCustomContentToLeft() {
return false;
@@ -1059,6 +1100,13 @@ public class Launcher extends Activity
mWorkspace.onResume();
PackageInstallerCompat.getInstance(this).onResume();
+
+ //Close out TransitionEffects Fragment
+ Fragment f = getFragmentManager().findFragmentByTag(
+ TransitionEffectsFragment.TRANSITION_EFFECTS_FRAGMENT);
+ if (f != null) {
+ mTransitionEffectsFragment.setEffect();
+ }
}
@Override
@@ -1077,6 +1125,9 @@ public class Launcher extends Activity
if (mWorkspace.getCustomContentCallbacks() != null) {
mWorkspace.getCustomContentCallbacks().onHide();
}
+
+ //Reset the OverviewPanel position
+ ((SlidingUpPanelLayout) mOverviewPanel).collapsePane();
}
QSBScroller mQsbScroller = new QSBScroller() {
@@ -1117,6 +1168,142 @@ public class Launcher extends Activity
return false;
}
+ public void onClickSortModeButton(View v) {
+ final PopupMenu popupMenu = new PopupMenu(this, v);
+ final Menu menu = popupMenu.getMenu();
+ popupMenu.inflate(R.menu.apps_customize_sort_mode);
+ switch(mAppsCustomizeContent.getSortMode()) {
+ case Title:
+ menu.findItem(R.id.sort_mode_title).setChecked(true);
+ break;
+ case LaunchCount:
+ menu.findItem(R.id.sort_mode_launch_count).setChecked(true);
+ break;
+ case InstallTime:
+ menu.findItem(R.id.sort_mode_install_time).setChecked(true);
+ break;
+ }
+ popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
+ public boolean onMenuItemClick(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.sort_mode_title:
+ mAppsCustomizeContent.setSortMode(AppsCustomizePagedView.SortMode.Title);
+ break;
+ case R.id.sort_mode_install_time:
+ mAppsCustomizeContent.setSortMode(AppsCustomizePagedView.SortMode.InstallTime);
+ break;
+ case R.id.sort_mode_launch_count:
+ mAppsCustomizeContent.setSortMode(AppsCustomizePagedView.SortMode.LaunchCount);
+ break;
+ }
+ mOverviewSettingsPanel.notifyDataSetInvalidated();
+ return true;
+ }
+ });
+ popupMenu.show();
+ }
+
+ 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();
+
+
+ mTransitionEffectsFragment = new TransitionEffectsFragment();
+ mTransitionEffectsFragment.setArguments(bundle);
+ fragmentTransaction.setCustomAnimations(0, 0);
+ fragmentTransaction.replace(R.id.launcher, mTransitionEffectsFragment,
+ TransitionEffectsFragment.TRANSITION_EFFECTS_FRAGMENT);
+ fragmentTransaction.commit();
+ }
+
+ 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;
+
+ SettingsProvider
+ .get(getApplicationContext())
+ .edit()
+ .putString(mSettingsProviderValue,
+ newTransitionEffect).commit();
+ TransitionEffect.setFromString(pagedView, newTransitionEffect);
+
+ // Reset Settings Changed
+ SharedPreferences.Editor editor = mSharedPrefs.edit();
+ editor.putBoolean(SettingsProvider.SETTINGS_CHANGED, false);
+ editor.commit();
+
+ mOverviewSettingsPanel.notifyDataSetInvalidated();
+
+ FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
+ fragmentTransaction
+ .setCustomAnimations(0, R.anim.exit_out_right);
+ fragmentTransaction
+ .remove(mTransitionEffectsFragment).commit();
+
+ mDarkPanel.setVisibility(View.VISIBLE);
+ ObjectAnimator anim = ObjectAnimator.ofFloat(
+ mDarkPanel, "alpha", 0.3f, 0.0f);
+ anim.start();
+ anim.addListener(mAnimatorListener);
+ }
+
+ public void onClickTransitionEffectOverflowMenuButton(View v) {
+ final PopupMenu popupMenu = new PopupMenu(this, v);
+
+ final Menu menu = popupMenu.getMenu();
+ popupMenu.inflate(R.menu.scrolling_settings);
+ MenuItem pageOutlines = menu.findItem(R.id.scrolling_page_outlines);
+ MenuItem fadeAdjacent = menu.findItem(R.id.scrolling_fade_adjacent);
+
+ pageOutlines.setVisible(!isAllAppsVisible());
+ pageOutlines.setChecked(SettingsProvider.getBoolean(this,
+ SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_PAGE_OUTLINES,
+ R.bool.preferences_interface_homescreen_scrolling_page_outlines_default
+ ));
+
+ fadeAdjacent.setChecked(SettingsProvider.getBoolean(this,
+ !isAllAppsVisible() ?
+ SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_FADE_ADJACENT :
+ SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_FADE_ADJACENT,
+ !isAllAppsVisible() ?
+ R.bool.preferences_interface_homescreen_scrolling_fade_adjacent_default :
+ R.bool.preferences_interface_drawer_scrolling_fade_adjacent_default
+ ));
+
+ final PagedView pagedView = !isAllAppsVisible() ? mWorkspace : mAppsCustomizeContent;
+
+ popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.scrolling_page_outlines:
+ SettingsProvider.get(Launcher.this).edit()
+ .putBoolean(SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_PAGE_OUTLINES, !item.isChecked()).commit();
+ mWorkspace.setShowOutlines(!item.isChecked());
+ break;
+ case R.id.scrolling_fade_adjacent:
+ SettingsProvider.get(Launcher.this).edit()
+ .putBoolean(!isAllAppsVisible() ?
+ SettingsProvider.SETTINGS_UI_HOMESCREEN_SCROLLING_FADE_ADJACENT :
+ SettingsProvider.SETTINGS_UI_DRAWER_SCROLLING_FADE_ADJACENT, !item.isChecked()).commit();
+ pagedView.setFadeInAdjacentScreens(!item.isChecked());
+ break;
+ default:
+ return false;
+ }
+
+ return true;
+ }
+ });
+
+ popupMenu.show();
+ }
+
public interface QSBScroller {
public void setScrollY(int scrollY);
}
@@ -1299,48 +1486,12 @@ public class Launcher extends Activity
mHotseat.setOnLongClickListener(this);
}
- mOverviewPanel = (ViewGroup) findViewById(R.id.overview_panel);
- View widgetButton = findViewById(R.id.widget_button);
- widgetButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- if (!mWorkspace.isSwitchingState()) {
- onClickAddWidgetButton(arg0);
- }
- }
- });
- widgetButton.setOnTouchListener(getHapticFeedbackTouchListener());
-
- View wallpaperButton = findViewById(R.id.wallpaper_button);
- wallpaperButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- if (!mWorkspace.isSwitchingState()) {
- onClickWallpaperPicker(arg0);
- }
- }
- });
- wallpaperButton.setOnTouchListener(getHapticFeedbackTouchListener());
-
- View settingsButton = findViewById(R.id.settings_button);
- if (hasSettings()) {
- settingsButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- if (!mWorkspace.isSwitchingState()) {
- onClickSettingsButton(arg0);
- }
- }
- });
- settingsButton.setOnTouchListener(getHapticFeedbackTouchListener());
- } else {
- settingsButton.setVisibility(View.GONE);
- FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) widgetButton.getLayoutParams();
- lp.gravity = Gravity.END | Gravity.TOP;
- widgetButton.requestLayout();
- }
-
- mOverviewPanel.setAlpha(0f);
+ mOverviewPanel = findViewById(R.id.overview_panel);
+ mOverviewSettingsPanel = new OverviewSettingsPanel(
+ this, mOverviewPanel);
+ mOverviewSettingsPanel.initializeAdapter();
+ mOverviewSettingsPanel.initializeViews();
+ mDarkPanel = ((SlidingUpPanelLayout) mOverviewPanel).findViewById(R.id.dark_panel);
// Setup the workspace
mWorkspace.setHapticFeedbackEnabled(false);
@@ -2395,7 +2546,13 @@ public class Launcher extends Activity
showOverviewMode(true);
}
} 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()) {
@@ -3090,6 +3247,18 @@ public class Launcher extends Activity
return mHotseat != null && layout != null &&
(layout instanceof CellLayout) && (layout == mHotseat.getLayout());
}
+ Hotseat getHotseat() {
+ return mHotseat;
+ }
+ View getOverviewPanel() {
+ return mOverviewPanel;
+ }
+ View getDarkPanel() {
+ return mDarkPanel;
+ }
+ SearchDropTargetBar getSearchBar() {
+ return mSearchDropTargetBar;
+ }
/**
* Returns the CellLayout of the specified container at the specified screen.
@@ -3106,6 +3275,18 @@ public class Launcher extends Activity
}
}
+ protected Workspace getWorkspace() {
+ return mWorkspace;
+ }
+
+ protected AppsCustomizePagedView getAppsCustomizeContent() {
+ return mAppsCustomizeContent;
+ }
+
+ public void updateOverviewPanel() {
+ mOverviewSettingsPanel.update();
+ }
+
public boolean isAllAppsVisible() {
return (mState == State.APPS_CUSTOMIZE) || (mOnResumeState == State.APPS_CUSTOMIZE);
}
@@ -5215,6 +5396,41 @@ public class Launcher extends Activity
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void) null);
}
}
+
+ 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 246278f..71411c2 100644
--- a/src/com/android/launcher3/LauncherAppState.java
+++ b/src/com/android/launcher3/LauncherAppState.java
@@ -192,13 +192,10 @@ public class LauncherAppState implements DeviceProfile.DeviceProfileCallbacks {
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.getDeviceProfile().addCallback(this);
- }
+ 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 0000000..2c1a7da
--- /dev/null
+++ b/src/com/android/launcher3/OverviewSettingsPanel.java
@@ -0,0 +1,199 @@
+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 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 settingsButton = mLauncher.findViewById(R.id.settings_button);
+ settingsButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ settingsButton.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 settingsButton = mOverviewPanel.findViewById(R.id.settings_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 48fc0c9..248f985 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -1663,6 +1663,10 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
setEnableFreeScroll(false);
}
+ protected void disableFreeScroll(int snapPage) {
+ setEnableFreeScroll(false, snapPage);
+ }
+
void updateFreescrollBounds() {
getFreeScrollPageRange(mTempVisiblePagesRange);
if (isLayoutRtl()) {
@@ -2557,7 +2561,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 435dbda..00f2ee2 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 0000000..52deeb3
--- /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 0000000..69231a8
--- /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 774996e..a3000d7 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -61,6 +61,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;
@@ -71,6 +73,7 @@ import com.android.launcher3.LauncherSettings.Favorites;
import com.android.launcher3.compat.PackageInstallerCompat;
import com.android.launcher3.compat.PackageInstallerCompat.PackageInstallInfo;
import com.android.launcher3.compat.UserHandleCompat;
+import com.android.launcher3.settings.SettingsProvider;
import java.util.ArrayList;
import java.util.HashMap;
@@ -986,6 +989,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");
@@ -2058,6 +2063,18 @@ public class Workspace extends SmoothPagedView
getOverviewModePages(range);
}
+ public void onClickDefaultScreenButton() {
+ if (!isInOverviewMode()) return;
+
+ mDefaultScreenId = getScreenIdForPageIndex(getPageNearestToCenterOfScreen());
+
+ updateDefaultScreenButton();
+
+ SettingsProvider.get(mLauncher).edit()
+ .putLong(SettingsProvider.SETTINGS_UI_HOMESCREEN_DEFAULT_SCREEN_ID, mDefaultScreenId)
+ .commit();
+ }
+
private void getOverviewModePages(int[] range) {
int start = numCustomPages();
int end = getChildCount() - 1;
@@ -2116,6 +2133,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;
@@ -2148,6 +2168,21 @@ public class Workspace extends SmoothPagedView
return -offsetFromTopEdge + mInsets.top + offsetToCenterInOverview;
}
+ 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;
@@ -2388,7 +2423,10 @@ public class Workspace extends SmoothPagedView
hotseatAlpha.setDuration(duration);
searchBarAlpha.setDuration(duration);
- anim.play(overviewPanelAlpha);
+ overviewPanel.setAlpha(finalOverviewPanelAlpha);
+ AlphaUpdateListener.updateVisibility(overviewPanel);
+ Animation animation = AnimationUtils.loadAnimation(mLauncher, R.anim.drop_down);
+ overviewPanel.startAnimation(animation);
anim.play(hotseatAlpha);
anim.play(searchBarAlpha);
anim.play(pageIndicatorAlpha);
@@ -5156,4 +5194,29 @@ public class Workspace extends SmoothPagedView
}
}
}
+
+ 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 0000000..66336bc
--- /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 0000000..b1ddb67
--- /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 0000000..c15e87a
--- /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 0000000..30688fe
--- /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 0000000..1b63162
--- /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);
+ }
+}
diff --git a/src/com/android/launcher3/settings/SettingsProvider.java b/src/com/android/launcher3/settings/SettingsProvider.java
new file mode 100644
index 0000000..e6bcc9c
--- /dev/null
+++ b/src/com/android/launcher3/settings/SettingsProvider.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2013 The CyanogenMod 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.settings;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+public final class SettingsProvider {
+ public static final String SETTINGS_KEY = "trebuchet_preferences";
+
+ public static final String SETTINGS_CHANGED = "settings_changed";
+
+ public static final String SETTINGS_UI_HOMESCREEN_DEFAULT_SCREEN_ID = "ui_homescreen_default_screen_id";
+ public static final String SETTINGS_UI_HOMESCREEN_SEARCH = "ui_homescreen_search";
+ public static final String SETTINGS_UI_HOMESCREEN_HIDE_ICON_LABELS = "ui_homescreen_general_hide_icon_labels";
+ public static final String SETTINGS_UI_HOMESCREEN_SCROLLING_TRANSITION_EFFECT = "ui_homescreen_scrolling_transition_effect";
+ public static final String SETTINGS_UI_HOMESCREEN_SCROLLING_WALLPAPER_SCROLL = "ui_homescreen_scrolling_wallpaper_scroll";
+ public static final String SETTINGS_UI_HOMESCREEN_SCROLLING_PAGE_OUTLINES = "ui_homescreen_scrolling_page_outlines";
+ public static final String SETTINGS_UI_HOMESCREEN_SCROLLING_FADE_ADJACENT = "ui_homescreen_scrolling_fade_adjacent";
+ public static final String SETTINGS_UI_DYNAMIC_GRID_SIZE = "ui_dynamic_grid_size";
+ public static final String SETTINGS_UI_HOMESCREEN_ROWS = "ui_homescreen_rows";
+ public static final String SETTINGS_UI_HOMESCREEN_COLUMNS = "ui_homescreen_columns";
+ public static final String SETTINGS_UI_DRAWER_SCROLLING_TRANSITION_EFFECT = "ui_drawer_scrolling_transition_effect";
+ public static final String SETTINGS_UI_DRAWER_SCROLLING_FADE_ADJACENT = "ui_drawer_scrolling_fade_adjacent";
+ public static final String SETTINGS_UI_DRAWER_REMOVE_HIDDEN_APPS_SHORTCUTS = "ui_drawer_remove_hidden_apps_shortcuts";
+ public static final String SETTINGS_UI_DRAWER_REMOVE_HIDDEN_APPS_WIDGETS = "ui_drawer_remove_hidden_apps_widgets";
+ public static final String SETTINGS_UI_DRAWER_HIDE_ICON_LABELS = "ui_drawer_hide_icon_labels";
+ public static final String SETTINGS_UI_GENERAL_ICONS_LARGE = "ui_general_icons_large";
+ public static final String SETTINGS_UI_DRAWER_SORT_MODE = "ui_drawer_sort_mode";
+
+ public static SharedPreferences get(Context context) {
+ return context.getSharedPreferences(SETTINGS_KEY, Context.MODE_MULTI_PROCESS);
+ }
+
+ public static int getIntCustomDefault(Context context, String key, int def) {
+ return get(context).getInt(key, def);
+ }
+
+ public static int getInt(Context context, String key, int resource) {
+ return getIntCustomDefault(context, key, context.getResources().getInteger(resource));
+ }
+
+ public static long getLongCustomDefault(Context context, String key, long def) {
+ return get(context).getLong(key, def);
+ }
+
+ public static long getLong(Context context, String key, int resource) {
+ return getLongCustomDefault(context, key, context.getResources().getInteger(resource));
+ }
+
+ public static boolean getBooleanCustomDefault(Context context, String key, boolean def) {
+ return get(context).getBoolean(key, def);
+ }
+
+ public static boolean getBoolean(Context context, String key, int resource) {
+ return getBooleanCustomDefault(context, key, context.getResources().getBoolean(resource));
+ }
+
+ public static String getStringCustomDefault(Context context, String key, String def) {
+ return get(context).getString(key, def);
+ }
+
+ public static String getString(Context context, String key, int resource) {
+ return getStringCustomDefault(context, key, context.getResources().getString(resource));
+ }
+
+ public static void putString(Context context, String key, String value) {
+ get(context).edit().putString(key, value).commit();
+ }
+
+ public static void putInt(Context context, String key, int value) {
+ get(context).edit().putInt(key, value).commit();
+ }
+}