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