From 6876a9cfc5eb05168ae7fa5215979f22396fff58 Mon Sep 17 00:00:00 2001 From: Trevor Johns Date: Fri, 17 Oct 2014 03:31:00 -0700 Subject: [PATCH] Add browseable samples for L SDK release Change-Id: I71c6ff9a90b7734042d68af7f01e6d61118cc508 --- .../AndroidManifest.xml | 46 + .../ActivitySceneTransitionBasic/_index.jd | 12 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4774 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2805 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6830 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 12246 bytes .../res/layout/activity_main.xml | 36 + .../res/layout/details.xml | 57 ++ .../res/layout/grid.xml | 27 + .../res/layout/grid_item.xml | 44 + .../res/transition/grid_detail_transition.xml | 49 ++ .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/styles.xml | 32 + .../res/values-v21/template-styles.xml | 22 + .../res/values/base-strings.xml | 31 + .../res/values/dimens.xml | 21 + .../res/values/strings.xml | 30 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../DetailActivity.java | 95 ++ .../ImageMemoryCache.java | 96 ++ .../Item.java | 78 ++ .../MainActivity.java | 145 ++++ .../SquareFrameLayout.java | 74 ++ .../Log.java | 236 +++++ .../LogFragment.java | 109 +++ .../LogNode.java | 39 + .../LogView.java | 145 ++++ .../LogWrapper.java | 75 ++ .../MessageOnlyLogFilter.java | 60 ++ .../AndroidManifest.xml | 58 ++ .../AppRestrictionEnforcer/_index.jd | 10 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 3667 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2299 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 5098 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 9236 bytes .../res/layout/activity_main.xml | 36 + .../res/layout/activity_main_real.xml | 44 + .../fragment_app_restriction_enforcer.xml | 44 + .../res/layout/fragment_setup_profile.xml | 45 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../res/values/base-strings.xml | 29 + .../res/values/strings.xml | 28 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../xml/enforcer_device_admin_receiver.xml | 27 + .../AppRestrictionEnforcerFragment.java | 231 +++++ .../EnableProfileActivity.java | 48 + .../EnforcerDeviceAdminReceiver.java | 52 ++ .../MainActivity.java | 55 ++ .../SetupProfileFragment.java | 102 +++ .../AppRestrictionSchema/AndroidManifest.xml | 46 + .../browseable/AppRestrictionSchema/_index.jd | 12 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 3359 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2071 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 4618 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 8491 bytes .../res/layout-w720dp/activity_main.xml | 73 ++ .../res/layout/activity_main.xml | 65 ++ .../res/layout/activity_main_real.xml | 42 + .../fragment_app_restriction_schema.xml | 37 + .../AppRestrictionSchema/res/menu/main.xml | 21 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../res/values/base-strings.xml | 31 + .../res/values/fragmentview_strings.xml | 19 + .../res/values/strings.xml | 26 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../res/xml/app_restrictions.xml | 26 + .../AppRestrictionSchemaFragment.java | 104 +++ .../MainActivity.java | 109 +++ .../activities/SampleActivityBase.java | 52 ++ .../logger/Log.java | 236 +++++ .../logger/LogFragment.java | 109 +++ .../logger/LogNode.java | 39 + .../logger/LogView.java | 145 ++++ .../logger/LogWrapper.java | 75 ++ .../logger/MessageOnlyLogFilter.java | 60 ++ .../BasicManagedProfile/AndroidManifest.xml | 62 ++ .../browseable/BasicManagedProfile/_index.jd | 13 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 3738 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2317 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 5208 bytes .../res/drawable-xxhdpi/badge.png | Bin 0 -> 3762 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 9457 bytes .../res/drawable/ic_launcher_badged.xml | 25 + .../res/layout/activity_main.xml | 36 + .../res/layout/activity_main_real.xml | 23 + .../res/layout/activity_setup.xml | 45 + .../res/layout/fragment_main.xml | 102 +++ .../res/layout/fragment_setup_profile.xml | 45 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../res/values-w820dp/dimens.xml | 3 + .../res/values/base-strings.xml | 32 + .../BasicManagedProfile/res/values/dimens.xml | 21 + .../res/values/strings.xml | 40 + .../BasicManagedProfile/res/values/styles.xml | 20 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../res/xml/basic_device_admin_receiver.xml | 29 + .../BasicDeviceAdminReceiver.java | 51 ++ .../BasicManagedProfileFragment.java | 383 ++++++++ .../EnableProfileActivity.java | 68 ++ .../MainActivity.java | 55 ++ .../SetupProfileFragment.java | 100 +++ .../Camera2Basic/AndroidManifest.xml | 42 + samples/browseable/Camera2Basic/_index.jd | 10 + .../res/drawable-hdpi/ic_action_info.png | Bin 0 -> 1025 bytes .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4251 bytes .../Camera2Basic/res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_action_info.png | Bin 0 -> 665 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2622 bytes .../res/drawable-xhdpi/ic_action_info.png | Bin 0 -> 1355 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 5911 bytes .../res/drawable-xxhdpi/ic_action_info.png | Bin 0 -> 2265 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 10488 bytes .../layout-land/fragment_camera2_basic.xml | 59 ++ .../res/layout/activity_camera.xml | 22 + .../Camera2Basic/res/layout/activity_main.xml | 36 + .../res/layout/fragment_camera2_basic.xml | 54 ++ .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../Camera2Basic/res/values/base-strings.xml | 29 + .../Camera2Basic/res/values/strings.xml | 19 + .../Camera2Basic/res/values/styles.xml | 18 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../AutoFitTextureView.java | 76 ++ .../Camera2BasicFragment.java | 819 ++++++++++++++++++ .../CameraActivity.java | 35 + .../Camera2Video/AndroidManifest.xml | 42 + samples/browseable/Camera2Video/_index.jd | 9 + .../res/drawable-hdpi/ic_action_info.png | Bin 0 -> 1025 bytes .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4370 bytes .../Camera2Video/res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_action_info.png | Bin 0 -> 665 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2739 bytes .../res/drawable-xhdpi/ic_action_info.png | Bin 0 -> 1355 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6096 bytes .../res/drawable-xxhdpi/ic_action_info.png | Bin 0 -> 2265 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 10731 bytes .../layout-land/fragment_camera2_video.xml | 58 ++ .../res/layout/activity_camera.xml | 22 + .../Camera2Video/res/layout/activity_main.xml | 36 + .../res/layout/fragment_camera2_video.xml | 54 ++ .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../Camera2Video/res/values/base-strings.xml | 28 + .../Camera2Video/res/values/strings.xml | 6 + .../Camera2Video/res/values/styles.xml | 20 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../AutoFitTextureView.java | 76 ++ .../Camera2VideoFragment.java | 578 ++++++++++++ .../CameraActivity.java | 35 + .../browseable/CardView/AndroidManifest.xml | 40 + samples/browseable/CardView/_index.jd | 10 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4500 bytes .../CardView/res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2857 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6459 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 11412 bytes .../res/layout/activity_card_view.xml | 27 + .../CardView/res/layout/activity_main.xml | 36 + .../res/layout/fragment_card_view.xml | 91 ++ .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../CardView/res/values/base-strings.xml | 29 + .../browseable/CardView/res/values/colors.xml | 19 + .../browseable/CardView/res/values/dimens.xml | 22 + .../CardView/res/values/strings.xml | 28 + .../CardView/res/values/template-dimens.xml | 32 + .../CardView/res/values/template-styles.xml | 42 + .../CardViewActivity.java | 37 + .../CardViewFragment.java | 120 +++ .../ClippingBasic/AndroidManifest.xml | 40 + samples/browseable/ClippingBasic/_index.jd | 9 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4567 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2713 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6507 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 11572 bytes .../res/drawable/gradient_drawable.xml | 24 + .../res/layout-w720dp/activity_main.xml | 73 ++ .../res/layout/activity_main.xml | 65 ++ .../res/layout/clipping_basic_fragment.xml | 50 ++ .../ClippingBasic/res/menu/main.xml | 21 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../ClippingBasic/res/values/base-strings.xml | 28 + .../res/values/fragmentview_strings.xml | 19 + .../ClippingBasic/res/values/strings.xml | 26 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../ClippingBasicFragment.java | 139 +++ .../MainActivity.java | 109 +++ .../activities/SampleActivityBase.java | 52 ++ .../logger/Log.java | 236 +++++ .../logger/LogFragment.java | 109 +++ .../logger/LogNode.java | 39 + .../logger/LogView.java | 145 ++++ .../logger/LogWrapper.java | 75 ++ .../logger/MessageOnlyLogFilter.java | 60 ++ .../DocumentCentricApps/AndroidManifest.xml | 42 + .../browseable/DocumentCentricApps/_index.jd | 12 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4199 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2535 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6022 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 11040 bytes .../layout/activity_document_centric_main.xml | 63 ++ .../res/layout/activity_main.xml | 36 + .../res/layout/activity_new_document.xml | 41 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../res/values/base-strings.xml | 31 + .../DocumentCentricApps/res/values/dimens.xml | 22 + .../res/values/strings.xml | 28 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../DocumentCentricActivity.java | 119 +++ .../NewDocumentActivity.java | 72 ++ .../AndroidManifest.xml | 48 + .../_index.jd | 9 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4199 bytes .../res/drawable-hdpi/new_icon.png | Bin 0 -> 5327 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2535 bytes .../res/drawable-mdpi/new_icon.png | Bin 0 -> 3181 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6022 bytes .../res/drawable-xhdpi/new_icon.png | Bin 0 -> 7396 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 11040 bytes .../res/drawable-xxhdpi/new_icon.png | Bin 0 -> 13154 bytes .../res/layout/activity_document.xml | 35 + .../res/layout/activity_main.xml | 36 + .../layout/activity_relinquish_identity.xml | 50 ++ .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../res/values/base-strings.xml | 28 + .../res/values/dimens.xml | 22 + .../res/values/strings.xml | 26 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../NewDocumentActivity.java | 50 ++ .../RelinquishIdentityActivity.java | 60 ++ .../DrawableTinting/AndroidManifest.xml | 40 + samples/browseable/DrawableTinting/_index.jd | 16 + .../DrawableTinting/res/color/custom_tint.xml | 37 + .../btn_default_normal_holo.9.png | Bin 0 -> 372 bytes .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4679 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../btn_default_normal_holo.9.png | Bin 0 -> 296 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2736 bytes .../btn_default_normal_holo.9.png | Bin 0 -> 481 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6839 bytes .../btn_default_normal_holo.9.png | Bin 0 -> 1615 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 12382 bytes .../res/drawable/buttonbackground.xml | 24 + .../res/layout-w720dp/activity_main.xml | 73 ++ .../res/layout/activity_main.xml | 65 ++ .../res/layout/tinting_fragment.xml | 124 +++ .../DrawableTinting/res/menu/main.xml | 21 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../res/values/base-strings.xml | 35 + .../DrawableTinting/res/values/color.xml | 26 + .../res/values/fragmentview_strings.xml | 19 + .../DrawableTinting/res/values/strings.xml | 49 ++ .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../activities/SampleActivityBase.java | 52 ++ .../logger/Log.java | 236 +++++ .../logger/LogFragment.java | 109 +++ .../logger/LogNode.java | 39 + .../logger/LogView.java | 145 ++++ .../logger/LogWrapper.java | 75 ++ .../logger/MessageOnlyLogFilter.java | 60 ++ .../DrawableTintingFragment.java | 316 +++++++ .../MainActivity.java | 109 +++ .../ElevationBasic/AndroidManifest.xml | 40 + samples/browseable/ElevationBasic/_index.jd | 11 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4265 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2562 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6153 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 10909 bytes .../ElevationBasic/res/drawable/shape.xml | 20 + .../ElevationBasic/res/drawable/shape2.xml | 20 + .../res/layout-w720dp/activity_main.xml | 73 ++ .../res/layout/activity_main.xml | 65 ++ .../res/layout/elevation_basic.xml | 38 + .../ElevationBasic/res/menu/main.xml | 21 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../res/values/base-strings.xml | 30 + .../ElevationBasic/res/values/colors.xml | 20 + .../res/values/fragmentview_strings.xml | 19 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../activities/SampleActivityBase.java | 52 ++ .../logger/Log.java | 236 +++++ .../logger/LogFragment.java | 109 +++ .../logger/LogNode.java | 39 + .../logger/LogView.java | 145 ++++ .../logger/LogWrapper.java | 75 ++ .../logger/MessageOnlyLogFilter.java | 60 ++ .../ElevationBasicFragment.java | 75 ++ .../MainActivity.java | 109 +++ .../ElevationDrag/AndroidManifest.xml | 40 + samples/browseable/ElevationDrag/_index.jd | 11 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4339 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2570 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6229 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 11143 bytes .../res/layout-w720dp/activity_main.xml | 73 ++ .../res/layout/activity_main.xml | 65 ++ .../ElevationDrag/res/layout/ztranslation.xml | 52 ++ .../ElevationDrag/res/menu/main.xml | 21 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../ElevationDrag/res/values/base-strings.xml | 30 + .../ElevationDrag/res/values/colors.xml | 19 + .../ElevationDrag/res/values/dimens.xml | 20 + .../res/values/fragmentview_strings.xml | 19 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../activities/SampleActivityBase.java | 52 ++ .../logger/Log.java | 236 +++++ .../logger/LogFragment.java | 109 +++ .../logger/LogNode.java | 39 + .../logger/LogView.java | 145 ++++ .../logger/LogWrapper.java | 75 ++ .../logger/MessageOnlyLogFilter.java | 60 ++ .../DragFrameLayout.java | 143 +++ .../ElevationDragFragment.java | 119 +++ .../MainActivity.java | 109 +++ .../AndroidManifest.xml | 38 + .../FloatingActionButtonBasic/_index.jd | 10 + .../res/animator/fab_anim.xml | 37 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 5096 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2926 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 7244 bytes .../res/drawable-xxhdpi/ic_add.png | Bin 0 -> 196 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 12995 bytes .../res/drawable-xxhdpi/ic_tick.png | Bin 0 -> 352 bytes .../res/drawable/fab_background.xml | 39 + .../res/drawable/fab_icons.xml | 29 + .../res/layout-w720dp/activity_main.xml | 73 ++ .../res/layout/activity_main.xml | 65 ++ .../res/layout/fab_layout.xml | 59 ++ .../res/menu/main.xml | 21 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../res/values/base-strings.xml | 29 + .../res/values/colors.xml | 22 + .../res/values/dimens.xml | 23 + .../res/values/fragmentview_strings.xml | 19 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../activities/SampleActivityBase.java | 52 ++ .../logger/Log.java | 236 +++++ .../logger/LogFragment.java | 109 +++ .../logger/LogNode.java | 39 + .../logger/LogView.java | 145 ++++ .../logger/LogWrapper.java | 75 ++ .../logger/MessageOnlyLogFilter.java | 60 ++ .../FloatingActionButton.java | 160 ++++ .../FloatingActionButtonBasicFragment.java | 67 ++ .../MainActivity.java | 109 +++ .../HdrViewfinder/AndroidManifest.xml | 55 ++ samples/browseable/HdrViewfinder/_index.jd | 11 + .../res/drawable-hdpi/ic_action_info.png | Bin 0 -> 1025 bytes .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4474 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_action_info.png | Bin 0 -> 665 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2795 bytes .../res/drawable-xhdpi/ic_action_info.png | Bin 0 -> 1355 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6251 bytes .../res/drawable-xxhdpi/ic_action_info.png | Bin 0 -> 2265 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 11025 bytes .../res/layout/activity_main.xml | 36 + .../HdrViewfinder/res/layout/main.xml | 98 +++ .../HdrViewfinder/res/menu/main.xml | 11 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../HdrViewfinder/res/values/attrs.xml | 21 + .../HdrViewfinder/res/values/base-strings.xml | 30 + .../HdrViewfinder/res/values/strings.xml | 59 ++ .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../CameraOps.java | 284 ++++++ .../FixedAspectSurfaceView.java | 156 ++++ .../HdrViewfinderActivity.java | 524 +++++++++++ .../MessageDialogFragment.java | 58 ++ .../ViewfinderProcessor.java | 165 ++++ .../HdrViewfinder/src/rs/hdr_merge.rs | 81 ++ .../Interpolator/AndroidManifest.xml | 42 + samples/browseable/Interpolator/_index.jd | 11 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4351 bytes .../Interpolator/res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2619 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6150 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 11049 bytes .../res/layout-w720dp/activity_main.xml | 73 ++ .../Interpolator/res/layout/activity_main.xml | 65 ++ .../res/layout/interpolator_fragment.xml | 86 ++ .../browseable/Interpolator/res/menu/main.xml | 21 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../Interpolator/res/values/base-strings.xml | 30 + .../Interpolator/res/values/color.xml | 19 + .../res/values/fragmentview_strings.xml | 19 + .../Interpolator/res/values/strings.xml | 27 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../activities/SampleActivityBase.java | 52 ++ .../logger/Log.java | 236 +++++ .../logger/LogFragment.java | 109 +++ .../logger/LogNode.java | 39 + .../logger/LogView.java | 145 ++++ .../logger/LogWrapper.java | 75 ++ .../logger/MessageOnlyLogFilter.java | 60 ++ .../InterpolatorFragment.java | 244 ++++++ .../MainActivity.java | 109 +++ .../JobScheduler/AndroidManifest.xml | 46 + samples/browseable/JobScheduler/_index.jd | 10 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4623 bytes .../JobScheduler/res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2782 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6701 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 11995 bytes .../JobScheduler/res/layout/activity_main.xml | 36 + .../JobScheduler/res/layout/sample_main.xml | 179 ++++ .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../JobScheduler/res/values-v11/styles.xml | 28 + .../res/values-v11/template-styles.xml | 22 + .../JobScheduler/res/values-v14/styles.xml | 29 + .../res/values-v21/template-styles.xml | 22 + .../JobScheduler/res/values/base-strings.xml | 29 + .../JobScheduler/res/values/color.xml | 21 + .../JobScheduler/res/values/strings.xml | 36 + .../JobScheduler/res/values/styles.xml | 32 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../Log.java | 236 +++++ .../LogFragment.java | 109 +++ .../LogNode.java | 39 + .../LogView.java | 145 ++++ .../LogWrapper.java | 75 ++ .../MessageOnlyLogFilter.java | 60 ++ .../MainActivity.java | 195 +++++ .../service/TestJobService.java | 127 +++ .../LNotifications/AndroidManifest.xml | 39 + samples/browseable/LNotifications/_index.jd | 11 + .../res/drawable-hdpi/ic_contact_picture.png | Bin 0 -> 1575 bytes .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 5306 bytes .../ic_launcher_notification.png | Bin 0 -> 591 bytes .../res/drawable-hdpi/ic_private.png | Bin 0 -> 657 bytes .../drawable-hdpi/ic_private_notification.png | Bin 0 -> 506 bytes .../res/drawable-hdpi/ic_public.png | Bin 0 -> 2091 bytes .../drawable-hdpi/ic_public_notification.png | Bin 0 -> 1482 bytes .../res/drawable-hdpi/ic_secret.png | Bin 0 -> 997 bytes .../drawable-hdpi/ic_secret_notification.png | Bin 0 -> 735 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_contact_picture.png | Bin 0 -> 959 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 3144 bytes .../ic_launcher_notification.png | Bin 0 -> 401 bytes .../res/drawable-mdpi/ic_private.png | Bin 0 -> 454 bytes .../drawable-mdpi/ic_private_notification.png | Bin 0 -> 341 bytes .../res/drawable-mdpi/ic_public.png | Bin 0 -> 1298 bytes .../drawable-mdpi/ic_public_notification.png | Bin 0 -> 855 bytes .../res/drawable-mdpi/ic_secret.png | Bin 0 -> 692 bytes .../drawable-mdpi/ic_secret_notification.png | Bin 0 -> 501 bytes .../res/drawable-xhdpi/ic_contact_picture.png | Bin 0 -> 2451 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 7586 bytes .../ic_launcher_notification.png | Bin 0 -> 849 bytes .../res/drawable-xhdpi/ic_private.png | Bin 0 -> 866 bytes .../ic_private_notification.png | Bin 0 -> 686 bytes .../res/drawable-xhdpi/ic_public.png | Bin 0 -> 3044 bytes .../drawable-xhdpi/ic_public_notification.png | Bin 0 -> 2189 bytes .../res/drawable-xhdpi/ic_secret.png | Bin 0 -> 1289 bytes .../drawable-xhdpi/ic_secret_notification.png | Bin 0 -> 955 bytes .../drawable-xxhdpi/ic_contact_picture.png | Bin 0 -> 3267 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 13499 bytes .../ic_launcher_notification.png | Bin 0 -> 1456 bytes .../res/drawable-xxhdpi/ic_private.png | Bin 0 -> 1270 bytes .../ic_private_notification.png | Bin 0 -> 930 bytes .../res/drawable-xxhdpi/ic_public.png | Bin 0 -> 5025 bytes .../ic_public_notification.png | Bin 0 -> 3690 bytes .../res/drawable-xxhdpi/ic_secret.png | Bin 0 -> 1965 bytes .../ic_secret_notification.png | Bin 0 -> 1529 bytes .../res/layout/activity_main.xml | 36 + .../res/layout/activity_notification.xml | 27 + .../res/layout/contact_entry.xml | 50 ++ .../layout/fragment_heads_up_notification.xml | 45 + .../res/layout/fragment_other_metadata.xml | 107 +++ ...gment_visibility_metadata_notification.xml | 71 ++ .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../res/values/base-strings.xml | 30 + .../LNotifications/res/values/colors.xml | 20 + .../LNotifications/res/values/dimens.xml | 9 + .../LNotifications/res/values/strings.xml | 43 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../HeadsUpNotificationFragment.java | 134 +++ .../LNotificationActivity.java | 80 ++ .../OtherMetadataFragment.java | 345 ++++++++ .../VisibilityMetadataFragment.java | 202 +++++ .../NavigationDrawer/AndroidManifest.xml | 44 + samples/browseable/NavigationDrawer/_index.jd | 10 + .../res/drawable-hdpi/action_search.png | Bin 0 -> 1764 bytes .../res/drawable-hdpi/drawer_shadow.9.png | Bin 0 -> 171 bytes .../res/drawable-hdpi/ic_drawer.png | Bin 0 -> 2842 bytes .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 3860 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/action_search.png | Bin 0 -> 1394 bytes .../res/drawable-mdpi/drawer_shadow.9.png | Bin 0 -> 158 bytes .../res/drawable-mdpi/ic_drawer.png | Bin 0 -> 2837 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2378 bytes .../res/drawable-xhdpi/action_search.png | Bin 0 -> 2127 bytes .../res/drawable-xhdpi/drawer_shadow.9.png | Bin 0 -> 182 bytes .../res/drawable-xhdpi/ic_drawer.png | Bin 0 -> 1056 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 5525 bytes .../sample_dashboard_item_background.9.png | Bin 0 -> 196 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 11040 bytes .../NavigationDrawer/res/drawable/earth.jpg | Bin 0 -> 98592 bytes .../NavigationDrawer/res/drawable/jupiter.jpg | Bin 0 -> 32610 bytes .../NavigationDrawer/res/drawable/mars.jpg | Bin 0 -> 144054 bytes .../NavigationDrawer/res/drawable/mercury.jpg | Bin 0 -> 81442 bytes .../NavigationDrawer/res/drawable/neptune.jpg | Bin 0 -> 32548 bytes .../NavigationDrawer/res/drawable/saturn.jpg | Bin 0 -> 21019 bytes .../NavigationDrawer/res/drawable/uranus.jpg | Bin 0 -> 13956 bytes .../NavigationDrawer/res/drawable/venus.jpg | Bin 0 -> 12409 bytes .../res/layout/activity_main.xml | 41 + .../res/layout/activity_navigation_drawer.xml | 48 + .../res/layout/drawer_list_item.xml | 28 + .../res/layout/fragment_planet.xml | 25 + .../res/layout/sample_dashboard_item.xml | 50 ++ .../res/menu/navigation_drawer.xml | 23 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v20/styles.xml | 21 + .../res/values-v21/template-styles.xml | 22 + .../res/values/activitycards-colors.xml | 21 + .../res/values/activitycards-dimens.xml | 22 + .../res/values/activitycards-strings.xml | 22 + .../res/values/base-strings.xml | 29 + .../NavigationDrawer/res/values/strings.xml | 32 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 76 ++ .../Log.java | 236 +++++ .../LogFragment.java | 109 +++ .../LogNode.java | 39 + .../LogView.java | 145 ++++ .../LogWrapper.java | 75 ++ .../MessageOnlyLogFilter.java | 60 ++ .../MainActivity.java | 107 +++ .../NavigationDrawerActivity.java | 247 ++++++ .../PlanetAdapter.java | 81 ++ .../RecyclerView/AndroidManifest.xml | 40 + samples/browseable/RecyclerView/_index.jd | 9 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 3879 bytes .../RecyclerView/res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2411 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 5376 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 9572 bytes .../res/layout-w720dp/activity_main.xml | 73 ++ .../RecyclerView/res/layout/activity_main.xml | 65 ++ .../res/layout/recycler_view_frag.xml | 28 + .../RecyclerView/res/layout/text_row_item.xml | 31 + .../browseable/RecyclerView/res/menu/main.xml | 21 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../RecyclerView/res/values/base-strings.xml | 28 + .../res/values/fragmentview_strings.xml | 19 + .../RecyclerView/res/values/strings.xml | 20 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../activities/SampleActivityBase.java | 52 ++ .../logger/Log.java | 236 +++++ .../logger/LogFragment.java | 109 +++ .../logger/LogNode.java | 39 + .../logger/LogView.java | 145 ++++ .../logger/LogWrapper.java | 75 ++ .../logger/MessageOnlyLogFilter.java | 60 ++ .../CustomAdapter.java | 91 ++ .../MainActivity.java | 109 +++ .../RecyclerViewFragment.java | 81 ++ .../RevealEffectBasic/AndroidManifest.xml | 41 + .../browseable/RevealEffectBasic/_index.jd | 9 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4680 bytes .../res/drawable-hdpi/tile.9.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2796 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6711 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 12069 bytes .../res/layout-w720dp/activity_main.xml | 73 ++ .../res/layout/activity_main.xml | 65 ++ .../res/layout/reveal_effect_basic.xml | 44 + .../RevealEffectBasic/res/menu/main.xml | 21 + .../res/values-sw600dp/template-dimens.xml | 24 + .../res/values-sw600dp/template-styles.xml | 25 + .../res/values-v11/template-styles.xml | 22 + .../res/values-v21/template-styles.xml | 22 + .../res/values/base-strings.xml | 28 + .../RevealEffectBasic/res/values/colors.xml | 19 + .../RevealEffectBasic/res/values/dimens.xml | 19 + .../res/values/fragmentview_strings.xml | 19 + .../res/values/template-dimens.xml | 32 + .../res/values/template-styles.xml | 42 + .../activities/SampleActivityBase.java | 52 ++ .../logger/Log.java | 236 +++++ .../logger/LogFragment.java | 109 +++ .../logger/LogNode.java | 39 + .../logger/LogView.java | 145 ++++ .../logger/LogWrapper.java | 75 ++ .../logger/MessageOnlyLogFilter.java | 60 ++ .../MainActivity.java | 109 +++ .../RevealEffectBasicFragment.java | 79 ++ 666 files changed, 28858 insertions(+) create mode 100644 samples/browseable/ActivitySceneTransitionBasic/AndroidManifest.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/_index.jd create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/drawable-xxhdpi/ic_launcher.png create mode 100755 samples/browseable/ActivitySceneTransitionBasic/res/layout/activity_main.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/layout/details.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/layout/grid.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/layout/grid_item.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/transition/grid_detail_transition.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/values-v11/template-styles.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/values-v21/styles.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/values-v21/template-styles.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/values/base-strings.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/values/dimens.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/values/strings.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/values/template-dimens.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/res/values/template-styles.xml create mode 100644 samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/DetailActivity.java create mode 100644 samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/ImageMemoryCache.java create mode 100644 samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/Item.java create mode 100644 samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/MainActivity.java create mode 100644 samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/SquareFrameLayout.java create mode 100644 samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/Log.java create mode 100644 samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogFragment.java create mode 100644 samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogNode.java create mode 100644 samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogView.java create mode 100644 samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogWrapper.java create mode 100644 samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/MessageOnlyLogFilter.java create mode 100644 samples/browseable/AppRestrictionEnforcer/AndroidManifest.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/_index.jd create mode 100644 samples/browseable/AppRestrictionEnforcer/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/AppRestrictionEnforcer/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/AppRestrictionEnforcer/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/AppRestrictionEnforcer/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/AppRestrictionEnforcer/res/drawable-xxhdpi/ic_launcher.png create mode 100755 samples/browseable/AppRestrictionEnforcer/res/layout/activity_main.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/res/layout/activity_main_real.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/res/layout/fragment_app_restriction_enforcer.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/res/layout/fragment_setup_profile.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/res/values-v11/template-styles.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/res/values-v21/template-styles.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/res/values/base-strings.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/res/values/strings.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/res/values/template-dimens.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/res/values/template-styles.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/res/xml/enforcer_device_admin_receiver.xml create mode 100644 samples/browseable/AppRestrictionEnforcer/src/com.example.android.apprestrictionenforcer/AppRestrictionEnforcerFragment.java create mode 100644 samples/browseable/AppRestrictionEnforcer/src/com.example.android.apprestrictionenforcer/EnableProfileActivity.java create mode 100644 samples/browseable/AppRestrictionEnforcer/src/com.example.android.apprestrictionenforcer/EnforcerDeviceAdminReceiver.java create mode 100644 samples/browseable/AppRestrictionEnforcer/src/com.example.android.apprestrictionenforcer/MainActivity.java create mode 100644 samples/browseable/AppRestrictionEnforcer/src/com.example.android.apprestrictionenforcer/SetupProfileFragment.java create mode 100644 samples/browseable/AppRestrictionSchema/AndroidManifest.xml create mode 100644 samples/browseable/AppRestrictionSchema/_index.jd create mode 100644 samples/browseable/AppRestrictionSchema/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/AppRestrictionSchema/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/AppRestrictionSchema/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/AppRestrictionSchema/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/AppRestrictionSchema/res/drawable-xxhdpi/ic_launcher.png create mode 100755 samples/browseable/AppRestrictionSchema/res/layout-w720dp/activity_main.xml create mode 100755 samples/browseable/AppRestrictionSchema/res/layout/activity_main.xml create mode 100644 samples/browseable/AppRestrictionSchema/res/layout/activity_main_real.xml create mode 100644 samples/browseable/AppRestrictionSchema/res/layout/fragment_app_restriction_schema.xml create mode 100644 samples/browseable/AppRestrictionSchema/res/menu/main.xml create mode 100644 samples/browseable/AppRestrictionSchema/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/AppRestrictionSchema/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/AppRestrictionSchema/res/values-v11/template-styles.xml create mode 100644 samples/browseable/AppRestrictionSchema/res/values-v21/template-styles.xml create mode 100644 samples/browseable/AppRestrictionSchema/res/values/base-strings.xml create mode 100755 samples/browseable/AppRestrictionSchema/res/values/fragmentview_strings.xml create mode 100644 samples/browseable/AppRestrictionSchema/res/values/strings.xml create mode 100644 samples/browseable/AppRestrictionSchema/res/values/template-dimens.xml create mode 100644 samples/browseable/AppRestrictionSchema/res/values/template-styles.xml create mode 100644 samples/browseable/AppRestrictionSchema/res/xml/app_restrictions.xml create mode 100644 samples/browseable/AppRestrictionSchema/src/com.example.android.apprestrictionschema/AppRestrictionSchemaFragment.java create mode 100644 samples/browseable/AppRestrictionSchema/src/com.example.android.apprestrictionschema/MainActivity.java create mode 100644 samples/browseable/AppRestrictionSchema/src/com.example.android.common/activities/SampleActivityBase.java create mode 100644 samples/browseable/AppRestrictionSchema/src/com.example.android.common/logger/Log.java create mode 100644 samples/browseable/AppRestrictionSchema/src/com.example.android.common/logger/LogFragment.java create mode 100644 samples/browseable/AppRestrictionSchema/src/com.example.android.common/logger/LogNode.java create mode 100644 samples/browseable/AppRestrictionSchema/src/com.example.android.common/logger/LogView.java create mode 100644 samples/browseable/AppRestrictionSchema/src/com.example.android.common/logger/LogWrapper.java create mode 100644 samples/browseable/AppRestrictionSchema/src/com.example.android.common/logger/MessageOnlyLogFilter.java create mode 100644 samples/browseable/BasicManagedProfile/AndroidManifest.xml create mode 100644 samples/browseable/BasicManagedProfile/_index.jd create mode 100644 samples/browseable/BasicManagedProfile/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/BasicManagedProfile/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/BasicManagedProfile/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/BasicManagedProfile/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/BasicManagedProfile/res/drawable-xxhdpi/badge.png create mode 100644 samples/browseable/BasicManagedProfile/res/drawable-xxhdpi/ic_launcher.png create mode 100644 samples/browseable/BasicManagedProfile/res/drawable/ic_launcher_badged.xml create mode 100755 samples/browseable/BasicManagedProfile/res/layout/activity_main.xml create mode 100644 samples/browseable/BasicManagedProfile/res/layout/activity_main_real.xml create mode 100644 samples/browseable/BasicManagedProfile/res/layout/activity_setup.xml create mode 100644 samples/browseable/BasicManagedProfile/res/layout/fragment_main.xml create mode 100644 samples/browseable/BasicManagedProfile/res/layout/fragment_setup_profile.xml create mode 100644 samples/browseable/BasicManagedProfile/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/BasicManagedProfile/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/BasicManagedProfile/res/values-v11/template-styles.xml create mode 100644 samples/browseable/BasicManagedProfile/res/values-v21/template-styles.xml create mode 100644 samples/browseable/BasicManagedProfile/res/values-w820dp/dimens.xml create mode 100644 samples/browseable/BasicManagedProfile/res/values/base-strings.xml create mode 100644 samples/browseable/BasicManagedProfile/res/values/dimens.xml create mode 100644 samples/browseable/BasicManagedProfile/res/values/strings.xml create mode 100644 samples/browseable/BasicManagedProfile/res/values/styles.xml create mode 100644 samples/browseable/BasicManagedProfile/res/values/template-dimens.xml create mode 100644 samples/browseable/BasicManagedProfile/res/values/template-styles.xml create mode 100644 samples/browseable/BasicManagedProfile/res/xml/basic_device_admin_receiver.xml create mode 100644 samples/browseable/BasicManagedProfile/src/com.example.android.basicmanagedprofile/BasicDeviceAdminReceiver.java create mode 100644 samples/browseable/BasicManagedProfile/src/com.example.android.basicmanagedprofile/BasicManagedProfileFragment.java create mode 100644 samples/browseable/BasicManagedProfile/src/com.example.android.basicmanagedprofile/EnableProfileActivity.java create mode 100644 samples/browseable/BasicManagedProfile/src/com.example.android.basicmanagedprofile/MainActivity.java create mode 100644 samples/browseable/BasicManagedProfile/src/com.example.android.basicmanagedprofile/SetupProfileFragment.java create mode 100644 samples/browseable/Camera2Basic/AndroidManifest.xml create mode 100644 samples/browseable/Camera2Basic/_index.jd create mode 100644 samples/browseable/Camera2Basic/res/drawable-hdpi/ic_action_info.png create mode 100644 samples/browseable/Camera2Basic/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/Camera2Basic/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/Camera2Basic/res/drawable-mdpi/ic_action_info.png create mode 100644 samples/browseable/Camera2Basic/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/Camera2Basic/res/drawable-xhdpi/ic_action_info.png create mode 100644 samples/browseable/Camera2Basic/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/Camera2Basic/res/drawable-xxhdpi/ic_action_info.png create mode 100644 samples/browseable/Camera2Basic/res/drawable-xxhdpi/ic_launcher.png create mode 100644 samples/browseable/Camera2Basic/res/layout-land/fragment_camera2_basic.xml create mode 100644 samples/browseable/Camera2Basic/res/layout/activity_camera.xml create mode 100755 samples/browseable/Camera2Basic/res/layout/activity_main.xml create mode 100644 samples/browseable/Camera2Basic/res/layout/fragment_camera2_basic.xml create mode 100644 samples/browseable/Camera2Basic/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/Camera2Basic/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/Camera2Basic/res/values-v11/template-styles.xml create mode 100644 samples/browseable/Camera2Basic/res/values-v21/template-styles.xml create mode 100644 samples/browseable/Camera2Basic/res/values/base-strings.xml create mode 100644 samples/browseable/Camera2Basic/res/values/strings.xml create mode 100644 samples/browseable/Camera2Basic/res/values/styles.xml create mode 100644 samples/browseable/Camera2Basic/res/values/template-dimens.xml create mode 100644 samples/browseable/Camera2Basic/res/values/template-styles.xml create mode 100644 samples/browseable/Camera2Basic/src/com.example.android.camera2basic/AutoFitTextureView.java create mode 100644 samples/browseable/Camera2Basic/src/com.example.android.camera2basic/Camera2BasicFragment.java create mode 100644 samples/browseable/Camera2Basic/src/com.example.android.camera2basic/CameraActivity.java create mode 100644 samples/browseable/Camera2Video/AndroidManifest.xml create mode 100644 samples/browseable/Camera2Video/_index.jd create mode 100644 samples/browseable/Camera2Video/res/drawable-hdpi/ic_action_info.png create mode 100644 samples/browseable/Camera2Video/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/Camera2Video/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/Camera2Video/res/drawable-mdpi/ic_action_info.png create mode 100644 samples/browseable/Camera2Video/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/Camera2Video/res/drawable-xhdpi/ic_action_info.png create mode 100644 samples/browseable/Camera2Video/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/Camera2Video/res/drawable-xxhdpi/ic_action_info.png create mode 100644 samples/browseable/Camera2Video/res/drawable-xxhdpi/ic_launcher.png create mode 100644 samples/browseable/Camera2Video/res/layout-land/fragment_camera2_video.xml create mode 100644 samples/browseable/Camera2Video/res/layout/activity_camera.xml create mode 100755 samples/browseable/Camera2Video/res/layout/activity_main.xml create mode 100644 samples/browseable/Camera2Video/res/layout/fragment_camera2_video.xml create mode 100644 samples/browseable/Camera2Video/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/Camera2Video/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/Camera2Video/res/values-v11/template-styles.xml create mode 100644 samples/browseable/Camera2Video/res/values-v21/template-styles.xml create mode 100644 samples/browseable/Camera2Video/res/values/base-strings.xml create mode 100644 samples/browseable/Camera2Video/res/values/strings.xml create mode 100644 samples/browseable/Camera2Video/res/values/styles.xml create mode 100644 samples/browseable/Camera2Video/res/values/template-dimens.xml create mode 100644 samples/browseable/Camera2Video/res/values/template-styles.xml create mode 100644 samples/browseable/Camera2Video/src/com.example.android.camera2video/AutoFitTextureView.java create mode 100644 samples/browseable/Camera2Video/src/com.example.android.camera2video/Camera2VideoFragment.java create mode 100644 samples/browseable/Camera2Video/src/com.example.android.camera2video/CameraActivity.java create mode 100644 samples/browseable/CardView/AndroidManifest.xml create mode 100644 samples/browseable/CardView/_index.jd create mode 100644 samples/browseable/CardView/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/CardView/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/CardView/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/CardView/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/CardView/res/drawable-xxhdpi/ic_launcher.png create mode 100644 samples/browseable/CardView/res/layout/activity_card_view.xml create mode 100755 samples/browseable/CardView/res/layout/activity_main.xml create mode 100644 samples/browseable/CardView/res/layout/fragment_card_view.xml create mode 100644 samples/browseable/CardView/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/CardView/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/CardView/res/values-v11/template-styles.xml create mode 100644 samples/browseable/CardView/res/values-v21/template-styles.xml create mode 100644 samples/browseable/CardView/res/values/base-strings.xml create mode 100644 samples/browseable/CardView/res/values/colors.xml create mode 100644 samples/browseable/CardView/res/values/dimens.xml create mode 100644 samples/browseable/CardView/res/values/strings.xml create mode 100644 samples/browseable/CardView/res/values/template-dimens.xml create mode 100644 samples/browseable/CardView/res/values/template-styles.xml create mode 100644 samples/browseable/CardView/src/com.example.android.cardview/CardViewActivity.java create mode 100644 samples/browseable/CardView/src/com.example.android.cardview/CardViewFragment.java create mode 100644 samples/browseable/ClippingBasic/AndroidManifest.xml create mode 100644 samples/browseable/ClippingBasic/_index.jd create mode 100644 samples/browseable/ClippingBasic/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/ClippingBasic/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/ClippingBasic/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/ClippingBasic/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/ClippingBasic/res/drawable-xxhdpi/ic_launcher.png create mode 100644 samples/browseable/ClippingBasic/res/drawable/gradient_drawable.xml create mode 100755 samples/browseable/ClippingBasic/res/layout-w720dp/activity_main.xml create mode 100755 samples/browseable/ClippingBasic/res/layout/activity_main.xml create mode 100644 samples/browseable/ClippingBasic/res/layout/clipping_basic_fragment.xml create mode 100644 samples/browseable/ClippingBasic/res/menu/main.xml create mode 100644 samples/browseable/ClippingBasic/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/ClippingBasic/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/ClippingBasic/res/values-v11/template-styles.xml create mode 100644 samples/browseable/ClippingBasic/res/values-v21/template-styles.xml create mode 100644 samples/browseable/ClippingBasic/res/values/base-strings.xml create mode 100755 samples/browseable/ClippingBasic/res/values/fragmentview_strings.xml create mode 100644 samples/browseable/ClippingBasic/res/values/strings.xml create mode 100644 samples/browseable/ClippingBasic/res/values/template-dimens.xml create mode 100644 samples/browseable/ClippingBasic/res/values/template-styles.xml create mode 100644 samples/browseable/ClippingBasic/src/com.example.android.clippingbasic/ClippingBasicFragment.java create mode 100644 samples/browseable/ClippingBasic/src/com.example.android.clippingbasic/MainActivity.java create mode 100644 samples/browseable/ClippingBasic/src/com.example.android.common/activities/SampleActivityBase.java create mode 100644 samples/browseable/ClippingBasic/src/com.example.android.common/logger/Log.java create mode 100644 samples/browseable/ClippingBasic/src/com.example.android.common/logger/LogFragment.java create mode 100644 samples/browseable/ClippingBasic/src/com.example.android.common/logger/LogNode.java create mode 100644 samples/browseable/ClippingBasic/src/com.example.android.common/logger/LogView.java create mode 100644 samples/browseable/ClippingBasic/src/com.example.android.common/logger/LogWrapper.java create mode 100644 samples/browseable/ClippingBasic/src/com.example.android.common/logger/MessageOnlyLogFilter.java create mode 100644 samples/browseable/DocumentCentricApps/AndroidManifest.xml create mode 100644 samples/browseable/DocumentCentricApps/_index.jd create mode 100644 samples/browseable/DocumentCentricApps/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/DocumentCentricApps/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/DocumentCentricApps/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/DocumentCentricApps/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/DocumentCentricApps/res/drawable-xxhdpi/ic_launcher.png create mode 100755 samples/browseable/DocumentCentricApps/res/layout/activity_document_centric_main.xml create mode 100755 samples/browseable/DocumentCentricApps/res/layout/activity_main.xml create mode 100644 samples/browseable/DocumentCentricApps/res/layout/activity_new_document.xml create mode 100644 samples/browseable/DocumentCentricApps/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/DocumentCentricApps/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/DocumentCentricApps/res/values-v11/template-styles.xml create mode 100644 samples/browseable/DocumentCentricApps/res/values-v21/template-styles.xml create mode 100644 samples/browseable/DocumentCentricApps/res/values/base-strings.xml create mode 100644 samples/browseable/DocumentCentricApps/res/values/dimens.xml create mode 100644 samples/browseable/DocumentCentricApps/res/values/strings.xml create mode 100644 samples/browseable/DocumentCentricApps/res/values/template-dimens.xml create mode 100644 samples/browseable/DocumentCentricApps/res/values/template-styles.xml create mode 100644 samples/browseable/DocumentCentricApps/src/com.example.android.documentcentricapps/DocumentCentricActivity.java create mode 100644 samples/browseable/DocumentCentricApps/src/com.example.android.documentcentricapps/NewDocumentActivity.java create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/AndroidManifest.xml create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/_index.jd create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/drawable-hdpi/ic_launcher.png create mode 100755 samples/browseable/DocumentCentricRelinquishIdentity/res/drawable-hdpi/new_icon.png create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/drawable-mdpi/ic_launcher.png create mode 100755 samples/browseable/DocumentCentricRelinquishIdentity/res/drawable-mdpi/new_icon.png create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/drawable-xhdpi/ic_launcher.png create mode 100755 samples/browseable/DocumentCentricRelinquishIdentity/res/drawable-xhdpi/new_icon.png create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/drawable-xxhdpi/ic_launcher.png create mode 100755 samples/browseable/DocumentCentricRelinquishIdentity/res/drawable-xxhdpi/new_icon.png create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/layout/activity_document.xml create mode 100755 samples/browseable/DocumentCentricRelinquishIdentity/res/layout/activity_main.xml create mode 100755 samples/browseable/DocumentCentricRelinquishIdentity/res/layout/activity_relinquish_identity.xml create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/values-v11/template-styles.xml create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/values-v21/template-styles.xml create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/values/base-strings.xml create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/values/dimens.xml create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/values/strings.xml create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/values/template-dimens.xml create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/res/values/template-styles.xml create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/src/com.example.android.documentcentricrelinquishidentity/NewDocumentActivity.java create mode 100644 samples/browseable/DocumentCentricRelinquishIdentity/src/com.example.android.documentcentricrelinquishidentity/RelinquishIdentityActivity.java create mode 100644 samples/browseable/DrawableTinting/AndroidManifest.xml create mode 100644 samples/browseable/DrawableTinting/_index.jd create mode 100644 samples/browseable/DrawableTinting/res/color/custom_tint.xml create mode 100644 samples/browseable/DrawableTinting/res/drawable-hdpi/btn_default_normal_holo.9.png create mode 100644 samples/browseable/DrawableTinting/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/DrawableTinting/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/DrawableTinting/res/drawable-mdpi/btn_default_normal_holo.9.png create mode 100644 samples/browseable/DrawableTinting/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/DrawableTinting/res/drawable-xhdpi/btn_default_normal_holo.9.png create mode 100644 samples/browseable/DrawableTinting/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/DrawableTinting/res/drawable-xxhdpi/btn_default_normal_holo.9.png create mode 100644 samples/browseable/DrawableTinting/res/drawable-xxhdpi/ic_launcher.png create mode 100644 samples/browseable/DrawableTinting/res/drawable/buttonbackground.xml create mode 100755 samples/browseable/DrawableTinting/res/layout-w720dp/activity_main.xml create mode 100755 samples/browseable/DrawableTinting/res/layout/activity_main.xml create mode 100644 samples/browseable/DrawableTinting/res/layout/tinting_fragment.xml create mode 100644 samples/browseable/DrawableTinting/res/menu/main.xml create mode 100644 samples/browseable/DrawableTinting/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/DrawableTinting/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/DrawableTinting/res/values-v11/template-styles.xml create mode 100644 samples/browseable/DrawableTinting/res/values-v21/template-styles.xml create mode 100644 samples/browseable/DrawableTinting/res/values/base-strings.xml create mode 100644 samples/browseable/DrawableTinting/res/values/color.xml create mode 100755 samples/browseable/DrawableTinting/res/values/fragmentview_strings.xml create mode 100644 samples/browseable/DrawableTinting/res/values/strings.xml create mode 100644 samples/browseable/DrawableTinting/res/values/template-dimens.xml create mode 100644 samples/browseable/DrawableTinting/res/values/template-styles.xml create mode 100644 samples/browseable/DrawableTinting/src/com.example.android.common/activities/SampleActivityBase.java create mode 100644 samples/browseable/DrawableTinting/src/com.example.android.common/logger/Log.java create mode 100644 samples/browseable/DrawableTinting/src/com.example.android.common/logger/LogFragment.java create mode 100644 samples/browseable/DrawableTinting/src/com.example.android.common/logger/LogNode.java create mode 100644 samples/browseable/DrawableTinting/src/com.example.android.common/logger/LogView.java create mode 100644 samples/browseable/DrawableTinting/src/com.example.android.common/logger/LogWrapper.java create mode 100644 samples/browseable/DrawableTinting/src/com.example.android.common/logger/MessageOnlyLogFilter.java create mode 100644 samples/browseable/DrawableTinting/src/com.example.android.drawabletinting/DrawableTintingFragment.java create mode 100644 samples/browseable/DrawableTinting/src/com.example.android.drawabletinting/MainActivity.java create mode 100644 samples/browseable/ElevationBasic/AndroidManifest.xml create mode 100644 samples/browseable/ElevationBasic/_index.jd create mode 100644 samples/browseable/ElevationBasic/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/ElevationBasic/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/ElevationBasic/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/ElevationBasic/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/ElevationBasic/res/drawable-xxhdpi/ic_launcher.png create mode 100644 samples/browseable/ElevationBasic/res/drawable/shape.xml create mode 100644 samples/browseable/ElevationBasic/res/drawable/shape2.xml create mode 100755 samples/browseable/ElevationBasic/res/layout-w720dp/activity_main.xml create mode 100755 samples/browseable/ElevationBasic/res/layout/activity_main.xml create mode 100644 samples/browseable/ElevationBasic/res/layout/elevation_basic.xml create mode 100644 samples/browseable/ElevationBasic/res/menu/main.xml create mode 100644 samples/browseable/ElevationBasic/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/ElevationBasic/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/ElevationBasic/res/values-v11/template-styles.xml create mode 100644 samples/browseable/ElevationBasic/res/values-v21/template-styles.xml create mode 100644 samples/browseable/ElevationBasic/res/values/base-strings.xml create mode 100644 samples/browseable/ElevationBasic/res/values/colors.xml create mode 100755 samples/browseable/ElevationBasic/res/values/fragmentview_strings.xml create mode 100644 samples/browseable/ElevationBasic/res/values/template-dimens.xml create mode 100644 samples/browseable/ElevationBasic/res/values/template-styles.xml create mode 100644 samples/browseable/ElevationBasic/src/com.example.android.common/activities/SampleActivityBase.java create mode 100644 samples/browseable/ElevationBasic/src/com.example.android.common/logger/Log.java create mode 100644 samples/browseable/ElevationBasic/src/com.example.android.common/logger/LogFragment.java create mode 100644 samples/browseable/ElevationBasic/src/com.example.android.common/logger/LogNode.java create mode 100644 samples/browseable/ElevationBasic/src/com.example.android.common/logger/LogView.java create mode 100644 samples/browseable/ElevationBasic/src/com.example.android.common/logger/LogWrapper.java create mode 100644 samples/browseable/ElevationBasic/src/com.example.android.common/logger/MessageOnlyLogFilter.java create mode 100644 samples/browseable/ElevationBasic/src/com.example.android.elevationbasic/ElevationBasicFragment.java create mode 100644 samples/browseable/ElevationBasic/src/com.example.android.elevationbasic/MainActivity.java create mode 100644 samples/browseable/ElevationDrag/AndroidManifest.xml create mode 100644 samples/browseable/ElevationDrag/_index.jd create mode 100644 samples/browseable/ElevationDrag/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/ElevationDrag/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/ElevationDrag/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/ElevationDrag/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/ElevationDrag/res/drawable-xxhdpi/ic_launcher.png create mode 100755 samples/browseable/ElevationDrag/res/layout-w720dp/activity_main.xml create mode 100755 samples/browseable/ElevationDrag/res/layout/activity_main.xml create mode 100644 samples/browseable/ElevationDrag/res/layout/ztranslation.xml create mode 100644 samples/browseable/ElevationDrag/res/menu/main.xml create mode 100644 samples/browseable/ElevationDrag/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/ElevationDrag/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/ElevationDrag/res/values-v11/template-styles.xml create mode 100644 samples/browseable/ElevationDrag/res/values-v21/template-styles.xml create mode 100644 samples/browseable/ElevationDrag/res/values/base-strings.xml create mode 100644 samples/browseable/ElevationDrag/res/values/colors.xml create mode 100644 samples/browseable/ElevationDrag/res/values/dimens.xml create mode 100755 samples/browseable/ElevationDrag/res/values/fragmentview_strings.xml create mode 100644 samples/browseable/ElevationDrag/res/values/template-dimens.xml create mode 100644 samples/browseable/ElevationDrag/res/values/template-styles.xml create mode 100644 samples/browseable/ElevationDrag/src/com.example.android.common/activities/SampleActivityBase.java create mode 100644 samples/browseable/ElevationDrag/src/com.example.android.common/logger/Log.java create mode 100644 samples/browseable/ElevationDrag/src/com.example.android.common/logger/LogFragment.java create mode 100644 samples/browseable/ElevationDrag/src/com.example.android.common/logger/LogNode.java create mode 100644 samples/browseable/ElevationDrag/src/com.example.android.common/logger/LogView.java create mode 100644 samples/browseable/ElevationDrag/src/com.example.android.common/logger/LogWrapper.java create mode 100644 samples/browseable/ElevationDrag/src/com.example.android.common/logger/MessageOnlyLogFilter.java create mode 100644 samples/browseable/ElevationDrag/src/com.example.android.elevationdrag/DragFrameLayout.java create mode 100644 samples/browseable/ElevationDrag/src/com.example.android.elevationdrag/ElevationDragFragment.java create mode 100644 samples/browseable/ElevationDrag/src/com.example.android.elevationdrag/MainActivity.java create mode 100644 samples/browseable/FloatingActionButtonBasic/AndroidManifest.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/_index.jd create mode 100644 samples/browseable/FloatingActionButtonBasic/res/animator/fab_anim.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/FloatingActionButtonBasic/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/FloatingActionButtonBasic/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/FloatingActionButtonBasic/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/FloatingActionButtonBasic/res/drawable-xxhdpi/ic_add.png create mode 100644 samples/browseable/FloatingActionButtonBasic/res/drawable-xxhdpi/ic_launcher.png create mode 100644 samples/browseable/FloatingActionButtonBasic/res/drawable-xxhdpi/ic_tick.png create mode 100644 samples/browseable/FloatingActionButtonBasic/res/drawable/fab_background.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/res/drawable/fab_icons.xml create mode 100755 samples/browseable/FloatingActionButtonBasic/res/layout-w720dp/activity_main.xml create mode 100755 samples/browseable/FloatingActionButtonBasic/res/layout/activity_main.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/res/layout/fab_layout.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/res/menu/main.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/res/values-v11/template-styles.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/res/values-v21/template-styles.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/res/values/base-strings.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/res/values/colors.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/res/values/dimens.xml create mode 100755 samples/browseable/FloatingActionButtonBasic/res/values/fragmentview_strings.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/res/values/template-dimens.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/res/values/template-styles.xml create mode 100644 samples/browseable/FloatingActionButtonBasic/src/com.example.android.common/activities/SampleActivityBase.java create mode 100644 samples/browseable/FloatingActionButtonBasic/src/com.example.android.common/logger/Log.java create mode 100644 samples/browseable/FloatingActionButtonBasic/src/com.example.android.common/logger/LogFragment.java create mode 100644 samples/browseable/FloatingActionButtonBasic/src/com.example.android.common/logger/LogNode.java create mode 100644 samples/browseable/FloatingActionButtonBasic/src/com.example.android.common/logger/LogView.java create mode 100644 samples/browseable/FloatingActionButtonBasic/src/com.example.android.common/logger/LogWrapper.java create mode 100644 samples/browseable/FloatingActionButtonBasic/src/com.example.android.common/logger/MessageOnlyLogFilter.java create mode 100644 samples/browseable/FloatingActionButtonBasic/src/com.example.android.floatingactionbuttonbasic/FloatingActionButton.java create mode 100644 samples/browseable/FloatingActionButtonBasic/src/com.example.android.floatingactionbuttonbasic/FloatingActionButtonBasicFragment.java create mode 100644 samples/browseable/FloatingActionButtonBasic/src/com.example.android.floatingactionbuttonbasic/MainActivity.java create mode 100644 samples/browseable/HdrViewfinder/AndroidManifest.xml create mode 100644 samples/browseable/HdrViewfinder/_index.jd create mode 100644 samples/browseable/HdrViewfinder/res/drawable-hdpi/ic_action_info.png create mode 100644 samples/browseable/HdrViewfinder/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/HdrViewfinder/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/HdrViewfinder/res/drawable-mdpi/ic_action_info.png create mode 100644 samples/browseable/HdrViewfinder/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/HdrViewfinder/res/drawable-xhdpi/ic_action_info.png create mode 100644 samples/browseable/HdrViewfinder/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/HdrViewfinder/res/drawable-xxhdpi/ic_action_info.png create mode 100644 samples/browseable/HdrViewfinder/res/drawable-xxhdpi/ic_launcher.png create mode 100755 samples/browseable/HdrViewfinder/res/layout/activity_main.xml create mode 100644 samples/browseable/HdrViewfinder/res/layout/main.xml create mode 100644 samples/browseable/HdrViewfinder/res/menu/main.xml create mode 100644 samples/browseable/HdrViewfinder/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/HdrViewfinder/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/HdrViewfinder/res/values-v11/template-styles.xml create mode 100644 samples/browseable/HdrViewfinder/res/values-v21/template-styles.xml create mode 100644 samples/browseable/HdrViewfinder/res/values/attrs.xml create mode 100644 samples/browseable/HdrViewfinder/res/values/base-strings.xml create mode 100644 samples/browseable/HdrViewfinder/res/values/strings.xml create mode 100644 samples/browseable/HdrViewfinder/res/values/template-dimens.xml create mode 100644 samples/browseable/HdrViewfinder/res/values/template-styles.xml create mode 100644 samples/browseable/HdrViewfinder/src/com.example.android.hdrviewfinder/CameraOps.java create mode 100644 samples/browseable/HdrViewfinder/src/com.example.android.hdrviewfinder/FixedAspectSurfaceView.java create mode 100644 samples/browseable/HdrViewfinder/src/com.example.android.hdrviewfinder/HdrViewfinderActivity.java create mode 100644 samples/browseable/HdrViewfinder/src/com.example.android.hdrviewfinder/MessageDialogFragment.java create mode 100644 samples/browseable/HdrViewfinder/src/com.example.android.hdrviewfinder/ViewfinderProcessor.java create mode 100644 samples/browseable/HdrViewfinder/src/rs/hdr_merge.rs create mode 100644 samples/browseable/Interpolator/AndroidManifest.xml create mode 100644 samples/browseable/Interpolator/_index.jd create mode 100644 samples/browseable/Interpolator/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/Interpolator/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/Interpolator/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/Interpolator/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/Interpolator/res/drawable-xxhdpi/ic_launcher.png create mode 100755 samples/browseable/Interpolator/res/layout-w720dp/activity_main.xml create mode 100755 samples/browseable/Interpolator/res/layout/activity_main.xml create mode 100644 samples/browseable/Interpolator/res/layout/interpolator_fragment.xml create mode 100644 samples/browseable/Interpolator/res/menu/main.xml create mode 100644 samples/browseable/Interpolator/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/Interpolator/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/Interpolator/res/values-v11/template-styles.xml create mode 100644 samples/browseable/Interpolator/res/values-v21/template-styles.xml create mode 100644 samples/browseable/Interpolator/res/values/base-strings.xml create mode 100644 samples/browseable/Interpolator/res/values/color.xml create mode 100755 samples/browseable/Interpolator/res/values/fragmentview_strings.xml create mode 100644 samples/browseable/Interpolator/res/values/strings.xml create mode 100644 samples/browseable/Interpolator/res/values/template-dimens.xml create mode 100644 samples/browseable/Interpolator/res/values/template-styles.xml create mode 100644 samples/browseable/Interpolator/src/com.example.android.common/activities/SampleActivityBase.java create mode 100644 samples/browseable/Interpolator/src/com.example.android.common/logger/Log.java create mode 100644 samples/browseable/Interpolator/src/com.example.android.common/logger/LogFragment.java create mode 100644 samples/browseable/Interpolator/src/com.example.android.common/logger/LogNode.java create mode 100644 samples/browseable/Interpolator/src/com.example.android.common/logger/LogView.java create mode 100644 samples/browseable/Interpolator/src/com.example.android.common/logger/LogWrapper.java create mode 100644 samples/browseable/Interpolator/src/com.example.android.common/logger/MessageOnlyLogFilter.java create mode 100644 samples/browseable/Interpolator/src/com.example.android.interpolator/InterpolatorFragment.java create mode 100644 samples/browseable/Interpolator/src/com.example.android.interpolator/MainActivity.java create mode 100644 samples/browseable/JobScheduler/AndroidManifest.xml create mode 100644 samples/browseable/JobScheduler/_index.jd create mode 100644 samples/browseable/JobScheduler/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/JobScheduler/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/JobScheduler/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/JobScheduler/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/JobScheduler/res/drawable-xxhdpi/ic_launcher.png create mode 100755 samples/browseable/JobScheduler/res/layout/activity_main.xml create mode 100644 samples/browseable/JobScheduler/res/layout/sample_main.xml create mode 100644 samples/browseable/JobScheduler/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/JobScheduler/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/JobScheduler/res/values-v11/styles.xml create mode 100644 samples/browseable/JobScheduler/res/values-v11/template-styles.xml create mode 100644 samples/browseable/JobScheduler/res/values-v14/styles.xml create mode 100644 samples/browseable/JobScheduler/res/values-v21/template-styles.xml create mode 100644 samples/browseable/JobScheduler/res/values/base-strings.xml create mode 100644 samples/browseable/JobScheduler/res/values/color.xml create mode 100644 samples/browseable/JobScheduler/res/values/strings.xml create mode 100644 samples/browseable/JobScheduler/res/values/styles.xml create mode 100644 samples/browseable/JobScheduler/res/values/template-dimens.xml create mode 100644 samples/browseable/JobScheduler/res/values/template-styles.xml create mode 100644 samples/browseable/JobScheduler/src/com.example.android.common.logger/Log.java create mode 100644 samples/browseable/JobScheduler/src/com.example.android.common.logger/LogFragment.java create mode 100644 samples/browseable/JobScheduler/src/com.example.android.common.logger/LogNode.java create mode 100644 samples/browseable/JobScheduler/src/com.example.android.common.logger/LogView.java create mode 100644 samples/browseable/JobScheduler/src/com.example.android.common.logger/LogWrapper.java create mode 100644 samples/browseable/JobScheduler/src/com.example.android.common.logger/MessageOnlyLogFilter.java create mode 100644 samples/browseable/JobScheduler/src/com.example.android.jobscheduler/MainActivity.java create mode 100644 samples/browseable/JobScheduler/src/com.example.android.jobscheduler/service/TestJobService.java create mode 100644 samples/browseable/LNotifications/AndroidManifest.xml create mode 100644 samples/browseable/LNotifications/_index.jd create mode 100644 samples/browseable/LNotifications/res/drawable-hdpi/ic_contact_picture.png create mode 100644 samples/browseable/LNotifications/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/LNotifications/res/drawable-hdpi/ic_launcher_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-hdpi/ic_private.png create mode 100644 samples/browseable/LNotifications/res/drawable-hdpi/ic_private_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-hdpi/ic_public.png create mode 100644 samples/browseable/LNotifications/res/drawable-hdpi/ic_public_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-hdpi/ic_secret.png create mode 100644 samples/browseable/LNotifications/res/drawable-hdpi/ic_secret_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/LNotifications/res/drawable-mdpi/ic_contact_picture.png create mode 100644 samples/browseable/LNotifications/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/LNotifications/res/drawable-mdpi/ic_launcher_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-mdpi/ic_private.png create mode 100644 samples/browseable/LNotifications/res/drawable-mdpi/ic_private_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-mdpi/ic_public.png create mode 100644 samples/browseable/LNotifications/res/drawable-mdpi/ic_public_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-mdpi/ic_secret.png create mode 100644 samples/browseable/LNotifications/res/drawable-mdpi/ic_secret_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-xhdpi/ic_contact_picture.png create mode 100644 samples/browseable/LNotifications/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/LNotifications/res/drawable-xhdpi/ic_launcher_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-xhdpi/ic_private.png create mode 100644 samples/browseable/LNotifications/res/drawable-xhdpi/ic_private_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-xhdpi/ic_public.png create mode 100644 samples/browseable/LNotifications/res/drawable-xhdpi/ic_public_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-xhdpi/ic_secret.png create mode 100644 samples/browseable/LNotifications/res/drawable-xhdpi/ic_secret_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-xxhdpi/ic_contact_picture.png create mode 100644 samples/browseable/LNotifications/res/drawable-xxhdpi/ic_launcher.png create mode 100644 samples/browseable/LNotifications/res/drawable-xxhdpi/ic_launcher_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-xxhdpi/ic_private.png create mode 100644 samples/browseable/LNotifications/res/drawable-xxhdpi/ic_private_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-xxhdpi/ic_public.png create mode 100644 samples/browseable/LNotifications/res/drawable-xxhdpi/ic_public_notification.png create mode 100644 samples/browseable/LNotifications/res/drawable-xxhdpi/ic_secret.png create mode 100644 samples/browseable/LNotifications/res/drawable-xxhdpi/ic_secret_notification.png create mode 100755 samples/browseable/LNotifications/res/layout/activity_main.xml create mode 100644 samples/browseable/LNotifications/res/layout/activity_notification.xml create mode 100644 samples/browseable/LNotifications/res/layout/contact_entry.xml create mode 100644 samples/browseable/LNotifications/res/layout/fragment_heads_up_notification.xml create mode 100644 samples/browseable/LNotifications/res/layout/fragment_other_metadata.xml create mode 100644 samples/browseable/LNotifications/res/layout/fragment_visibility_metadata_notification.xml create mode 100644 samples/browseable/LNotifications/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/LNotifications/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/LNotifications/res/values-v11/template-styles.xml create mode 100644 samples/browseable/LNotifications/res/values-v21/template-styles.xml create mode 100644 samples/browseable/LNotifications/res/values/base-strings.xml create mode 100644 samples/browseable/LNotifications/res/values/colors.xml create mode 100644 samples/browseable/LNotifications/res/values/dimens.xml create mode 100644 samples/browseable/LNotifications/res/values/strings.xml create mode 100644 samples/browseable/LNotifications/res/values/template-dimens.xml create mode 100644 samples/browseable/LNotifications/res/values/template-styles.xml create mode 100644 samples/browseable/LNotifications/src/com.example.android.lnotifications/HeadsUpNotificationFragment.java create mode 100644 samples/browseable/LNotifications/src/com.example.android.lnotifications/LNotificationActivity.java create mode 100644 samples/browseable/LNotifications/src/com.example.android.lnotifications/OtherMetadataFragment.java create mode 100644 samples/browseable/LNotifications/src/com.example.android.lnotifications/VisibilityMetadataFragment.java create mode 100644 samples/browseable/NavigationDrawer/AndroidManifest.xml create mode 100644 samples/browseable/NavigationDrawer/_index.jd create mode 100755 samples/browseable/NavigationDrawer/res/drawable-hdpi/action_search.png create mode 100644 samples/browseable/NavigationDrawer/res/drawable-hdpi/drawer_shadow.9.png create mode 100644 samples/browseable/NavigationDrawer/res/drawable-hdpi/ic_drawer.png create mode 100755 samples/browseable/NavigationDrawer/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/NavigationDrawer/res/drawable-hdpi/tile.9.png create mode 100755 samples/browseable/NavigationDrawer/res/drawable-mdpi/action_search.png create mode 100644 samples/browseable/NavigationDrawer/res/drawable-mdpi/drawer_shadow.9.png create mode 100644 samples/browseable/NavigationDrawer/res/drawable-mdpi/ic_drawer.png create mode 100755 samples/browseable/NavigationDrawer/res/drawable-mdpi/ic_launcher.png create mode 100755 samples/browseable/NavigationDrawer/res/drawable-xhdpi/action_search.png create mode 100644 samples/browseable/NavigationDrawer/res/drawable-xhdpi/drawer_shadow.9.png create mode 100644 samples/browseable/NavigationDrawer/res/drawable-xhdpi/ic_drawer.png create mode 100755 samples/browseable/NavigationDrawer/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/NavigationDrawer/res/drawable-xhdpi/sample_dashboard_item_background.9.png create mode 100644 samples/browseable/NavigationDrawer/res/drawable-xxhdpi/ic_launcher.png create mode 100644 samples/browseable/NavigationDrawer/res/drawable/earth.jpg create mode 100644 samples/browseable/NavigationDrawer/res/drawable/jupiter.jpg create mode 100644 samples/browseable/NavigationDrawer/res/drawable/mars.jpg create mode 100644 samples/browseable/NavigationDrawer/res/drawable/mercury.jpg create mode 100644 samples/browseable/NavigationDrawer/res/drawable/neptune.jpg create mode 100644 samples/browseable/NavigationDrawer/res/drawable/saturn.jpg create mode 100644 samples/browseable/NavigationDrawer/res/drawable/uranus.jpg create mode 100644 samples/browseable/NavigationDrawer/res/drawable/venus.jpg create mode 100755 samples/browseable/NavigationDrawer/res/layout/activity_main.xml create mode 100644 samples/browseable/NavigationDrawer/res/layout/activity_navigation_drawer.xml create mode 100644 samples/browseable/NavigationDrawer/res/layout/drawer_list_item.xml create mode 100644 samples/browseable/NavigationDrawer/res/layout/fragment_planet.xml create mode 100644 samples/browseable/NavigationDrawer/res/layout/sample_dashboard_item.xml create mode 100644 samples/browseable/NavigationDrawer/res/menu/navigation_drawer.xml create mode 100644 samples/browseable/NavigationDrawer/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/NavigationDrawer/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/NavigationDrawer/res/values-v11/template-styles.xml create mode 100644 samples/browseable/NavigationDrawer/res/values-v20/styles.xml create mode 100644 samples/browseable/NavigationDrawer/res/values-v21/template-styles.xml create mode 100644 samples/browseable/NavigationDrawer/res/values/activitycards-colors.xml create mode 100644 samples/browseable/NavigationDrawer/res/values/activitycards-dimens.xml create mode 100644 samples/browseable/NavigationDrawer/res/values/activitycards-strings.xml create mode 100644 samples/browseable/NavigationDrawer/res/values/base-strings.xml create mode 100644 samples/browseable/NavigationDrawer/res/values/strings.xml create mode 100644 samples/browseable/NavigationDrawer/res/values/template-dimens.xml create mode 100644 samples/browseable/NavigationDrawer/res/values/template-styles.xml create mode 100644 samples/browseable/NavigationDrawer/src/com.example.android.common.logger/Log.java create mode 100644 samples/browseable/NavigationDrawer/src/com.example.android.common.logger/LogFragment.java create mode 100644 samples/browseable/NavigationDrawer/src/com.example.android.common.logger/LogNode.java create mode 100644 samples/browseable/NavigationDrawer/src/com.example.android.common.logger/LogView.java create mode 100644 samples/browseable/NavigationDrawer/src/com.example.android.common.logger/LogWrapper.java create mode 100644 samples/browseable/NavigationDrawer/src/com.example.android.common.logger/MessageOnlyLogFilter.java create mode 100644 samples/browseable/NavigationDrawer/src/com.example.android.navigationdrawer/MainActivity.java create mode 100644 samples/browseable/NavigationDrawer/src/com.example.android.navigationdrawer/NavigationDrawerActivity.java create mode 100644 samples/browseable/NavigationDrawer/src/com.example.android.navigationdrawer/PlanetAdapter.java create mode 100644 samples/browseable/RecyclerView/AndroidManifest.xml create mode 100644 samples/browseable/RecyclerView/_index.jd create mode 100644 samples/browseable/RecyclerView/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/RecyclerView/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/RecyclerView/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/RecyclerView/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/RecyclerView/res/drawable-xxhdpi/ic_launcher.png create mode 100755 samples/browseable/RecyclerView/res/layout-w720dp/activity_main.xml create mode 100755 samples/browseable/RecyclerView/res/layout/activity_main.xml create mode 100644 samples/browseable/RecyclerView/res/layout/recycler_view_frag.xml create mode 100644 samples/browseable/RecyclerView/res/layout/text_row_item.xml create mode 100644 samples/browseable/RecyclerView/res/menu/main.xml create mode 100644 samples/browseable/RecyclerView/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/RecyclerView/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/RecyclerView/res/values-v11/template-styles.xml create mode 100644 samples/browseable/RecyclerView/res/values-v21/template-styles.xml create mode 100644 samples/browseable/RecyclerView/res/values/base-strings.xml create mode 100755 samples/browseable/RecyclerView/res/values/fragmentview_strings.xml create mode 100644 samples/browseable/RecyclerView/res/values/strings.xml create mode 100644 samples/browseable/RecyclerView/res/values/template-dimens.xml create mode 100644 samples/browseable/RecyclerView/res/values/template-styles.xml create mode 100644 samples/browseable/RecyclerView/src/com.example.android.common/activities/SampleActivityBase.java create mode 100644 samples/browseable/RecyclerView/src/com.example.android.common/logger/Log.java create mode 100644 samples/browseable/RecyclerView/src/com.example.android.common/logger/LogFragment.java create mode 100644 samples/browseable/RecyclerView/src/com.example.android.common/logger/LogNode.java create mode 100644 samples/browseable/RecyclerView/src/com.example.android.common/logger/LogView.java create mode 100644 samples/browseable/RecyclerView/src/com.example.android.common/logger/LogWrapper.java create mode 100644 samples/browseable/RecyclerView/src/com.example.android.common/logger/MessageOnlyLogFilter.java create mode 100644 samples/browseable/RecyclerView/src/com.example.android.recyclerview/CustomAdapter.java create mode 100644 samples/browseable/RecyclerView/src/com.example.android.recyclerview/MainActivity.java create mode 100644 samples/browseable/RecyclerView/src/com.example.android.recyclerview/RecyclerViewFragment.java create mode 100644 samples/browseable/RevealEffectBasic/AndroidManifest.xml create mode 100644 samples/browseable/RevealEffectBasic/_index.jd create mode 100644 samples/browseable/RevealEffectBasic/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/browseable/RevealEffectBasic/res/drawable-hdpi/tile.9.png create mode 100644 samples/browseable/RevealEffectBasic/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/browseable/RevealEffectBasic/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/browseable/RevealEffectBasic/res/drawable-xxhdpi/ic_launcher.png create mode 100755 samples/browseable/RevealEffectBasic/res/layout-w720dp/activity_main.xml create mode 100755 samples/browseable/RevealEffectBasic/res/layout/activity_main.xml create mode 100644 samples/browseable/RevealEffectBasic/res/layout/reveal_effect_basic.xml create mode 100644 samples/browseable/RevealEffectBasic/res/menu/main.xml create mode 100644 samples/browseable/RevealEffectBasic/res/values-sw600dp/template-dimens.xml create mode 100644 samples/browseable/RevealEffectBasic/res/values-sw600dp/template-styles.xml create mode 100644 samples/browseable/RevealEffectBasic/res/values-v11/template-styles.xml create mode 100644 samples/browseable/RevealEffectBasic/res/values-v21/template-styles.xml create mode 100644 samples/browseable/RevealEffectBasic/res/values/base-strings.xml create mode 100644 samples/browseable/RevealEffectBasic/res/values/colors.xml create mode 100644 samples/browseable/RevealEffectBasic/res/values/dimens.xml create mode 100755 samples/browseable/RevealEffectBasic/res/values/fragmentview_strings.xml create mode 100644 samples/browseable/RevealEffectBasic/res/values/template-dimens.xml create mode 100644 samples/browseable/RevealEffectBasic/res/values/template-styles.xml create mode 100644 samples/browseable/RevealEffectBasic/src/com.example.android.common/activities/SampleActivityBase.java create mode 100644 samples/browseable/RevealEffectBasic/src/com.example.android.common/logger/Log.java create mode 100644 samples/browseable/RevealEffectBasic/src/com.example.android.common/logger/LogFragment.java create mode 100644 samples/browseable/RevealEffectBasic/src/com.example.android.common/logger/LogNode.java create mode 100644 samples/browseable/RevealEffectBasic/src/com.example.android.common/logger/LogView.java create mode 100644 samples/browseable/RevealEffectBasic/src/com.example.android.common/logger/LogWrapper.java create mode 100644 samples/browseable/RevealEffectBasic/src/com.example.android.common/logger/MessageOnlyLogFilter.java create mode 100644 samples/browseable/RevealEffectBasic/src/com.example.android.revealeffectbasic/MainActivity.java create mode 100644 samples/browseable/RevealEffectBasic/src/com.example.android.revealeffectbasic/RevealEffectBasicFragment.java diff --git a/samples/browseable/ActivitySceneTransitionBasic/AndroidManifest.xml b/samples/browseable/ActivitySceneTransitionBasic/AndroidManifest.xml new file mode 100644 index 000000000..ae64d6f4c --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/AndroidManifest.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/browseable/ActivitySceneTransitionBasic/_index.jd b/samples/browseable/ActivitySceneTransitionBasic/_index.jd new file mode 100644 index 000000000..1053a7d5b --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/_index.jd @@ -0,0 +1,12 @@ +page.tags="ActivitySceneTransitionBasic" +sample.group=UI +@jd:body + +

+ + Demonstrates how to the use Activity scene transitions when transitions + from one Activity to another. Uses a combination of moveImage and changeBounds + to nicely transition a grid of images to an Activity with a large image and detail + text. + +

diff --git a/samples/browseable/ActivitySceneTransitionBasic/res/drawable-hdpi/ic_launcher.png b/samples/browseable/ActivitySceneTransitionBasic/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a598447aada4e490bdb9267cd5ad08612d213aef GIT binary patch literal 4774 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 AK>z>% literal 0 HcmV?d00001 diff --git a/samples/browseable/ActivitySceneTransitionBasic/res/drawable-hdpi/tile.9.png b/samples/browseable/ActivitySceneTransitionBasic/res/drawable-hdpi/tile.9.png new file mode 100644 index 0000000000000000000000000000000000000000..135862883e26eddce2b19db021adf62e10357ad0 GIT binary patch literal 196 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 Hu0mjfPvbnQ literal 0 HcmV?d00001 diff --git a/samples/browseable/ActivitySceneTransitionBasic/res/drawable-xhdpi/ic_launcher.png b/samples/browseable/ActivitySceneTransitionBasic/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..3667baaa5992b46653690ea2540c5e0c610b4119 GIT binary patch literal 6830 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 literal 0 HcmV?d00001 diff --git a/samples/browseable/ActivitySceneTransitionBasic/res/layout/activity_main.xml b/samples/browseable/ActivitySceneTransitionBasic/res/layout/activity_main.xml new file mode 100755 index 000000000..be1aa49d9 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/res/layout/activity_main.xml @@ -0,0 +1,36 @@ + + + + + + + + + diff --git a/samples/browseable/ActivitySceneTransitionBasic/res/layout/details.xml b/samples/browseable/ActivitySceneTransitionBasic/res/layout/details.xml new file mode 100644 index 000000000..e61212ed2 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/res/layout/details.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/browseable/ActivitySceneTransitionBasic/res/layout/grid.xml b/samples/browseable/ActivitySceneTransitionBasic/res/layout/grid.xml new file mode 100644 index 000000000..4dded953f --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/res/layout/grid.xml @@ -0,0 +1,27 @@ + + + + diff --git a/samples/browseable/ActivitySceneTransitionBasic/res/layout/grid_item.xml b/samples/browseable/ActivitySceneTransitionBasic/res/layout/grid_item.xml new file mode 100644 index 000000000..1d28dbada --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/res/layout/grid_item.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/browseable/ActivitySceneTransitionBasic/res/transition/grid_detail_transition.xml b/samples/browseable/ActivitySceneTransitionBasic/res/transition/grid_detail_transition.xml new file mode 100644 index 000000000..40be3d468 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/res/transition/grid_detail_transition.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/browseable/ActivitySceneTransitionBasic/res/values-sw600dp/template-dimens.xml b/samples/browseable/ActivitySceneTransitionBasic/res/values-sw600dp/template-dimens.xml new file mode 100644 index 000000000..22074a2bd --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/res/values-sw600dp/template-dimens.xml @@ -0,0 +1,24 @@ + + + + + + + @dimen/margin_huge + @dimen/margin_medium + + diff --git a/samples/browseable/ActivitySceneTransitionBasic/res/values-sw600dp/template-styles.xml b/samples/browseable/ActivitySceneTransitionBasic/res/values-sw600dp/template-styles.xml new file mode 100644 index 000000000..03d197418 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/res/values-sw600dp/template-styles.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/samples/browseable/ActivitySceneTransitionBasic/res/values-v11/template-styles.xml b/samples/browseable/ActivitySceneTransitionBasic/res/values-v11/template-styles.xml new file mode 100644 index 000000000..8c1ea66f2 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/res/values-v11/template-styles.xml @@ -0,0 +1,22 @@ + + + + + + + + \ No newline at end of file diff --git a/samples/browseable/ActivitySceneTransitionBasic/res/values-v21/template-styles.xml b/samples/browseable/ActivitySceneTransitionBasic/res/values-v21/template-styles.xml new file mode 100644 index 000000000..134fcd9d3 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/res/values-v21/template-styles.xml @@ -0,0 +1,22 @@ + + + + + + + + + + diff --git a/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/DetailActivity.java b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/DetailActivity.java new file mode 100644 index 000000000..741cd26ea --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/DetailActivity.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.activityscenetransitionbasic; + +import com.android.volley.toolbox.ImageLoader; +import com.android.volley.toolbox.NetworkImageView; +import com.android.volley.toolbox.Volley; + +import android.app.Activity; +import android.graphics.Bitmap; +import android.os.Bundle; +import android.widget.TextView; + +/** + * Our secondary Activity which is launched from {@link MainActivity}. Has a simple detail UI + * which has a large banner image, title and body text. + */ +public class DetailActivity extends Activity { + + // Extra name for the ID parameter + public static final String EXTRA_PARAM_ID = "detail:_id"; + + // View name of the header image. Used for activity scene transitions + public static final String VIEW_NAME_HEADER_IMAGE = "detail:header:image"; + + // View name of the header title. Used for activity scene transitions + public static final String VIEW_NAME_HEADER_TITLE = "detail:header:title"; + + private NetworkImageView mHeaderImageView; + private TextView mHeaderTitle; + + private ImageLoader mImageLoader; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.details); + + // Construct an ImageLoader instance so that we can load images from the network + mImageLoader = new ImageLoader(Volley.newRequestQueue(this), ImageMemoryCache.INSTANCE); + + // Retrieve the correct Item instance, using the ID provided in the Intent + Item item = Item.getItem(getIntent().getIntExtra(EXTRA_PARAM_ID, 0)); + + mHeaderImageView = (NetworkImageView) findViewById(R.id.imageview_header); + mHeaderTitle = (TextView) findViewById(R.id.textview_title); + + // BEGIN_INCLUDE(detail_set_view_name) + /** + * Set the name of the view's which will be transition to, using the static values above. + * This could be done in the layout XML, but exposing it via static variables allows easy + * querying from other Activities + */ + mHeaderImageView.setViewName(VIEW_NAME_HEADER_IMAGE); + mHeaderTitle.setViewName(VIEW_NAME_HEADER_TITLE); + // END_INCLUDE(detail_set_view_name) + + loadItem(item); + } + + private void loadItem(Item item) { + // Set the title TextView to the item's name and author + mHeaderTitle.setText(getString(R.string.image_header, item.getName(), item.getAuthor())); + + final ImageMemoryCache cache = ImageMemoryCache.INSTANCE; + Bitmap thumbnailImage = cache.getBitmapFromUrl(item.getThumbnailUrl()); + + // Check to see if we already have the thumbnail sized image in the cache. If so, start + // loading the full size image and display the thumbnail as a placeholder. + if (thumbnailImage != null) { + mHeaderImageView.setImageUrl(item.getPhotoUrl(), mImageLoader); + mHeaderImageView.setImageBitmap(thumbnailImage); + return; + } + + // If we get here then we do not have either the full size or the thumbnail in the cache. + // Here we just load the full size and make do. + mHeaderImageView.setImageUrl(item.getPhotoUrl(), mImageLoader); + } + +} diff --git a/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/ImageMemoryCache.java b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/ImageMemoryCache.java new file mode 100644 index 000000000..53d47bae1 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/ImageMemoryCache.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.activityscenetransitionbasic; + +import com.android.volley.toolbox.ImageLoader; + +import android.graphics.Bitmap; +import android.util.LruCache; + +import java.util.Map; + +/** + * An image memory cache implementation for Volley which allows the retrieval of entires via a URL. + * Volley internally inserts items with a key which is a combination of a the size of the image, + * and the url. + * + * This class provide the method {@link #getBitmapFromUrl(String)} which allows the retrieval of + * a bitmap solely on the URL. + */ +public class ImageMemoryCache extends LruCache implements ImageLoader.ImageCache { + + /** + * Singleton instance which has it's maximum size set to be 1/8th of the allowed memory size. + */ + public static final ImageMemoryCache INSTANCE = new ImageMemoryCache( + (int) (Runtime.getRuntime().maxMemory() / 8)); + + // Cache the last created snapshot + private Map mLastSnapshot; + + private ImageMemoryCache(int maxSize) { + super(maxSize); + } + + public Bitmap getBitmapFromUrl(String url) { + // If we do not have a snapshot to use, generate one + if (mLastSnapshot == null) { + mLastSnapshot = snapshot(); + } + + // Iterate through the snapshot to find any entries which match our url + for (Map.Entry entry : mLastSnapshot.entrySet()) { + if (url.equals(extractUrl(entry.getKey()))) { + // We've found an entry with the same url, return the bitmap + return entry.getValue(); + } + } + + // We didn't find an entry, so return null + return null; + } + + @Override + public Bitmap getBitmap(String key) { + return get(key); + } + + @Override + public void putBitmap(String key, Bitmap bitmap) { + put(key, bitmap); + + // An entry has been added, so invalidate the snapshot + mLastSnapshot = null; + } + + @Override + protected void entryRemoved(boolean evicted, String key, Bitmap oldValue, Bitmap newValue) { + super.entryRemoved(evicted, key, oldValue, newValue); + + // An entry has been removed, so invalidate the snapshot + mLastSnapshot = null; + } + + private static String extractUrl(String key) { + return key.substring(key.indexOf("http")); + } + + @Override + protected int sizeOf(String key, Bitmap value) { + return value.getAllocationByteCount(); + } +} diff --git a/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/Item.java b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/Item.java new file mode 100644 index 000000000..e21188674 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/Item.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.activityscenetransitionbasic; + +/** + * Represents an Item in our application. Each item has a name, id, full size image url and + * thumbnail url. + */ +public class Item { + + private static final String LARGE_BASE_URL = "http://storage.googleapis.com/androiddevelopers/sample_data/activity_transition/large/"; + private static final String THUMB_BASE_URL = "http://storage.googleapis.com/androiddevelopers/sample_data/activity_transition/thumbs/"; + + public static Item[] ITEMS = new Item[] { + new Item("Flying in the Light", "Romain Guy", "flying_in_the_light.jpg"), + new Item("Caterpillar", "Romain Guy", "caterpillar.jpg"), + new Item("Look Me in the Eye", "Romain Guy", "look_me_in_the_eye.jpg"), + new Item("Flamingo", "Romain Guy", "flamingo.jpg"), + new Item("Rainbow", "Romain Guy", "rainbow.jpg"), + new Item("Over there", "Romain Guy", "over_there.jpg"), + new Item("Jelly Fish 2", "Romain Guy", "jelly_fish_2.jpg"), + new Item("Lone Pine Sunset", "Romain Guy", "lone_pine_sunset.jpg"), + }; + + public static Item getItem(int id) { + for (Item item : ITEMS) { + if (item.getId() == id) { + return item; + } + } + return null; + } + + private final String mName; + private final String mAuthor; + private final String mFileName; + + Item (String name, String author, String fileName) { + mName = name; + mAuthor = author; + mFileName = fileName; + } + + public int getId() { + return mName.hashCode() + mFileName.hashCode(); + } + + public String getAuthor() { + return mAuthor; + } + + public String getName() { + return mName; + } + + public String getPhotoUrl() { + return LARGE_BASE_URL + mFileName; + } + + public String getThumbnailUrl() { + return THUMB_BASE_URL + mFileName; + } + +} diff --git a/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/MainActivity.java b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/MainActivity.java new file mode 100644 index 000000000..363099038 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/MainActivity.java @@ -0,0 +1,145 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.activityscenetransitionbasic; + +import com.android.volley.toolbox.ImageLoader; +import com.android.volley.toolbox.NetworkImageView; +import com.android.volley.toolbox.Volley; + +import android.app.Activity; +import android.app.ActivityOptions; +import android.content.Intent; +import android.os.Bundle; +import android.util.Pair; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.GridView; +import android.widget.TextView; + +/** + * Our main Activity in this sample. Displays a grid of items which an image and title. When the + * user clicks on an item, {@link DetailActivity} is launched, using the Activity Scene Transitions + * framework to animatedly do so. + */ +public class MainActivity extends Activity implements AdapterView.OnItemClickListener { + + private GridView mGridView; + private GridAdapter mAdapter; + + private ImageLoader mImageLoader; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.grid); + + // Retrieve the ImageLoader we are going to use for NetworkImageView + mImageLoader = new ImageLoader(Volley.newRequestQueue(this), ImageMemoryCache.INSTANCE); + + // Setup the GridView and set the adapter + mGridView = (GridView) findViewById(R.id.grid); + mGridView.setOnItemClickListener(this); + mAdapter = new GridAdapter(); + mGridView.setAdapter(mAdapter); + } + + /** + * Called when an item in the {@link android.widget.GridView} is clicked. Here will launch the + * {@link DetailActivity}, using the Scene Transition animation functionality. + */ + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long id) { + Item item = (Item) adapterView.getItemAtPosition(position); + + // Construct an Intent as normal + Intent intent = new Intent(this, DetailActivity.class); + intent.putExtra(DetailActivity.EXTRA_PARAM_ID, item.getId()); + + // BEGIN_INCLUDE(start_activity) + /** + * Now create an {@link android.app.ActivityOptions} instance using the + * {@link android.app.ActivityOptions#makeSceneTransitionAnimation(android.app.Activity, android.util.Pair[])} factory method. + */ + ActivityOptions activityOptions = ActivityOptions.makeSceneTransitionAnimation( + this, + + // Now we provide a list of Pair items which contain the view we can transitioning + // from, and the name of the view it is transitioning to, in the launched activity + new Pair( + view.findViewById(R.id.imageview_item), + DetailActivity.VIEW_NAME_HEADER_IMAGE), + new Pair( + view.findViewById(R.id.textview_name), + DetailActivity.VIEW_NAME_HEADER_TITLE) + ); + + // Now we can start the Activity, providing the activity options as a bundle + startActivity(intent, activityOptions.toBundle()); + // END_INCLUDE(start_activity) + } + + /** + * {@link android.widget.BaseAdapter} which displays items. + */ + private class GridAdapter extends BaseAdapter { + + @Override + public int getCount() { + return Item.ITEMS.length; + } + + @Override + public Item getItem(int position) { + return Item.ITEMS[position]; + } + + @Override + public long getItemId(int position) { + return getItem(position).getId(); + } + + @Override + public View getView(int position, View view, ViewGroup viewGroup) { + if (view == null) { + view = getLayoutInflater().inflate(R.layout.grid_item, viewGroup, false); + } + + final Item item = getItem(position); + + // Load the thumbnail image + NetworkImageView image = (NetworkImageView) view.findViewById(R.id.imageview_item); + image.setImageUrl(item.getThumbnailUrl(), mImageLoader); + + // Set the TextView's contents + TextView name = (TextView) view.findViewById(R.id.textview_name); + name.setText(item.getName()); + + // BEGIN_INCLUDE(grid_set_view_name) + /** + * As we're in an adapter we need to set each view's name dynamically, using the + * item's ID so that the names are unique. + */ + image.setViewName("grid:image:" + item.getId()); + name.setViewName("grid:name:" + item.getId()); + // END_INCLUDE(grid_set_view_name) + + return view; + } + } +} diff --git a/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/SquareFrameLayout.java b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/SquareFrameLayout.java new file mode 100644 index 000000000..eece73eb8 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.activityscenetransitionbasic/SquareFrameLayout.java @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.activityscenetransitionbasic; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.FrameLayout; + +/** + * {@link android.widget.FrameLayout} which forces itself to be laid out as square. + */ +public class SquareFrameLayout extends FrameLayout { + + public SquareFrameLayout(Context context) { + super(context); + } + + public SquareFrameLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public SquareFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public SquareFrameLayout(Context context, AttributeSet attrs, + int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final int widthSize = MeasureSpec.getSize(widthMeasureSpec); + final int heightSize = MeasureSpec.getSize(heightMeasureSpec); + + if (widthSize == 0 && heightSize == 0) { + // If there are no constraints on size, let FrameLayout measure + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + + // Now use the smallest of the measured dimensions for both dimensions + final int minSize = Math.min(getMeasuredWidth(), getMeasuredHeight()); + setMeasuredDimension(minSize, minSize); + return; + } + + final int size; + if (widthSize == 0 || heightSize == 0) { + // If one of the dimensions has no restriction on size, set both dimensions to be the + // on that does + size = Math.max(widthSize, heightSize); + } else { + // Both dimensions have restrictions on size, set both dimensions to be the + // smallest of the two + size = Math.min(widthSize, heightSize); + } + + final int newMeasureSpec = MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY); + super.onMeasure(newMeasureSpec, newMeasureSpec); + } +} diff --git a/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/Log.java b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/Log.java new file mode 100644 index 000000000..17503c568 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/Log.java @@ -0,0 +1,236 @@ +/* + * 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. + */ +package com.example.android.common.logger; + +/** + * Helper class for a list (or tree) of LoggerNodes. + * + *

When this is set as the head of the list, + * an instance of it can function as a drop-in replacement for {@link android.util.Log}. + * Most of the methods in this class server only to map a method call in Log to its equivalent + * in LogNode.

+ */ +public class Log { + // Grabbing the native values from Android's native logging facilities, + // to make for easy migration and interop. + public static final int NONE = -1; + public static final int VERBOSE = android.util.Log.VERBOSE; + public static final int DEBUG = android.util.Log.DEBUG; + public static final int INFO = android.util.Log.INFO; + public static final int WARN = android.util.Log.WARN; + public static final int ERROR = android.util.Log.ERROR; + public static final int ASSERT = android.util.Log.ASSERT; + + // Stores the beginning of the LogNode topology. + private static LogNode mLogNode; + + /** + * Returns the next LogNode in the linked list. + */ + public static LogNode getLogNode() { + return mLogNode; + } + + /** + * Sets the LogNode data will be sent to. + */ + public static void setLogNode(LogNode node) { + mLogNode = node; + } + + /** + * Instructs the LogNode to print the log data provided. Other LogNodes can + * be chained to the end of the LogNode as desired. + * + * @param priority Log level of the data being logged. Verbose, Error, etc. + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. + * @param tr If an exception was thrown, this can be sent along for the logging facilities + * to extract and print useful information. + */ + public static void println(int priority, String tag, String msg, Throwable tr) { + if (mLogNode != null) { + mLogNode.println(priority, tag, msg, tr); + } + } + + /** + * Instructs the LogNode to print the log data provided. Other LogNodes can + * be chained to the end of the LogNode as desired. + * + * @param priority Log level of the data being logged. Verbose, Error, etc. + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. The actual message to be logged. + */ + public static void println(int priority, String tag, String msg) { + println(priority, tag, msg, null); + } + + /** + * Prints a message at VERBOSE priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. + * @param tr If an exception was thrown, this can be sent along for the logging facilities + * to extract and print useful information. + */ + public static void v(String tag, String msg, Throwable tr) { + println(VERBOSE, tag, msg, tr); + } + + /** + * Prints a message at VERBOSE priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. + */ + public static void v(String tag, String msg) { + v(tag, msg, null); + } + + + /** + * Prints a message at DEBUG priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. + * @param tr If an exception was thrown, this can be sent along for the logging facilities + * to extract and print useful information. + */ + public static void d(String tag, String msg, Throwable tr) { + println(DEBUG, tag, msg, tr); + } + + /** + * Prints a message at DEBUG priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. + */ + public static void d(String tag, String msg) { + d(tag, msg, null); + } + + /** + * Prints a message at INFO priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. + * @param tr If an exception was thrown, this can be sent along for the logging facilities + * to extract and print useful information. + */ + public static void i(String tag, String msg, Throwable tr) { + println(INFO, tag, msg, tr); + } + + /** + * Prints a message at INFO priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. + */ + public static void i(String tag, String msg) { + i(tag, msg, null); + } + + /** + * Prints a message at WARN priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. + * @param tr If an exception was thrown, this can be sent along for the logging facilities + * to extract and print useful information. + */ + public static void w(String tag, String msg, Throwable tr) { + println(WARN, tag, msg, tr); + } + + /** + * Prints a message at WARN priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. + */ + public static void w(String tag, String msg) { + w(tag, msg, null); + } + + /** + * Prints a message at WARN priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param tr If an exception was thrown, this can be sent along for the logging facilities + * to extract and print useful information. + */ + public static void w(String tag, Throwable tr) { + w(tag, null, tr); + } + + /** + * Prints a message at ERROR priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. + * @param tr If an exception was thrown, this can be sent along for the logging facilities + * to extract and print useful information. + */ + public static void e(String tag, String msg, Throwable tr) { + println(ERROR, tag, msg, tr); + } + + /** + * Prints a message at ERROR priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. + */ + public static void e(String tag, String msg) { + e(tag, msg, null); + } + + /** + * Prints a message at ASSERT priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. + * @param tr If an exception was thrown, this can be sent along for the logging facilities + * to extract and print useful information. + */ + public static void wtf(String tag, String msg, Throwable tr) { + println(ASSERT, tag, msg, tr); + } + + /** + * Prints a message at ASSERT priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. + */ + public static void wtf(String tag, String msg) { + wtf(tag, msg, null); + } + + /** + * Prints a message at ASSERT priority. + * + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param tr If an exception was thrown, this can be sent along for the logging facilities + * to extract and print useful information. + */ + public static void wtf(String tag, Throwable tr) { + wtf(tag, null, tr); + } +} diff --git a/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogFragment.java b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogFragment.java new file mode 100644 index 000000000..b302acd4b --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogFragment.java @@ -0,0 +1,109 @@ +/* +* Copyright 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. +*/ +/* + * Copyright 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. + */ + +package com.example.android.common.logger; + +import android.graphics.Typeface; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ScrollView; + +/** + * Simple fraggment which contains a LogView and uses is to output log data it receives + * through the LogNode interface. + */ +public class LogFragment extends Fragment { + + private LogView mLogView; + private ScrollView mScrollView; + + public LogFragment() {} + + public View inflateViews() { + mScrollView = new ScrollView(getActivity()); + ViewGroup.LayoutParams scrollParams = new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT); + mScrollView.setLayoutParams(scrollParams); + + mLogView = new LogView(getActivity()); + ViewGroup.LayoutParams logParams = new ViewGroup.LayoutParams(scrollParams); + logParams.height = ViewGroup.LayoutParams.WRAP_CONTENT; + mLogView.setLayoutParams(logParams); + mLogView.setClickable(true); + mLogView.setFocusable(true); + mLogView.setTypeface(Typeface.MONOSPACE); + + // Want to set padding as 16 dips, setPadding takes pixels. Hooray math! + int paddingDips = 16; + double scale = getResources().getDisplayMetrics().density; + int paddingPixels = (int) ((paddingDips * (scale)) + .5); + mLogView.setPadding(paddingPixels, paddingPixels, paddingPixels, paddingPixels); + mLogView.setCompoundDrawablePadding(paddingPixels); + + mLogView.setGravity(Gravity.BOTTOM); + mLogView.setTextAppearance(getActivity(), android.R.style.TextAppearance_Holo_Medium); + + mScrollView.addView(mLogView); + return mScrollView; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + + View result = inflateViews(); + + mLogView.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) {} + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) {} + + @Override + public void afterTextChanged(Editable s) { + mScrollView.fullScroll(ScrollView.FOCUS_DOWN); + } + }); + return result; + } + + public LogView getLogView() { + return mLogView; + } +} \ No newline at end of file diff --git a/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogNode.java b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogNode.java new file mode 100644 index 000000000..bc37cabc0 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogNode.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2012 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.example.android.common.logger; + +/** + * Basic interface for a logging system that can output to one or more targets. + * Note that in addition to classes that will output these logs in some format, + * one can also implement this interface over a filter and insert that in the chain, + * such that no targets further down see certain data, or see manipulated forms of the data. + * You could, for instance, write a "ToHtmlLoggerNode" that just converted all the log data + * it received to HTML and sent it along to the next node in the chain, without printing it + * anywhere. + */ +public interface LogNode { + + /** + * Instructs first LogNode in the list to print the log data provided. + * @param priority Log level of the data being logged. Verbose, Error, etc. + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. The actual message to be logged. + * @param tr If an exception was thrown, this can be sent along for the logging facilities + * to extract and print useful information. + */ + public void println(int priority, String tag, String msg, Throwable tr); + +} diff --git a/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogView.java b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogView.java new file mode 100644 index 000000000..c01542b91 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogView.java @@ -0,0 +1,145 @@ +/* + * 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. + */ +package com.example.android.common.logger; + +import android.app.Activity; +import android.content.Context; +import android.util.*; +import android.widget.TextView; + +/** Simple TextView which is used to output log data received through the LogNode interface. +*/ +public class LogView extends TextView implements LogNode { + + public LogView(Context context) { + super(context); + } + + public LogView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public LogView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + /** + * Formats the log data and prints it out to the LogView. + * @param priority Log level of the data being logged. Verbose, Error, etc. + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. The actual message to be logged. + * @param tr If an exception was thrown, this can be sent along for the logging facilities + * to extract and print useful information. + */ + @Override + public void println(int priority, String tag, String msg, Throwable tr) { + + + String priorityStr = null; + + // For the purposes of this View, we want to print the priority as readable text. + switch(priority) { + case android.util.Log.VERBOSE: + priorityStr = "VERBOSE"; + break; + case android.util.Log.DEBUG: + priorityStr = "DEBUG"; + break; + case android.util.Log.INFO: + priorityStr = "INFO"; + break; + case android.util.Log.WARN: + priorityStr = "WARN"; + break; + case android.util.Log.ERROR: + priorityStr = "ERROR"; + break; + case android.util.Log.ASSERT: + priorityStr = "ASSERT"; + break; + default: + break; + } + + // Handily, the Log class has a facility for converting a stack trace into a usable string. + String exceptionStr = null; + if (tr != null) { + exceptionStr = android.util.Log.getStackTraceString(tr); + } + + // Take the priority, tag, message, and exception, and concatenate as necessary + // into one usable line of text. + final StringBuilder outputBuilder = new StringBuilder(); + + String delimiter = "\t"; + appendIfNotNull(outputBuilder, priorityStr, delimiter); + appendIfNotNull(outputBuilder, tag, delimiter); + appendIfNotNull(outputBuilder, msg, delimiter); + appendIfNotNull(outputBuilder, exceptionStr, delimiter); + + // In case this was originally called from an AsyncTask or some other off-UI thread, + // make sure the update occurs within the UI thread. + ((Activity) getContext()).runOnUiThread( (new Thread(new Runnable() { + @Override + public void run() { + // Display the text we just generated within the LogView. + appendToLog(outputBuilder.toString()); + } + }))); + + if (mNext != null) { + mNext.println(priority, tag, msg, tr); + } + } + + public LogNode getNext() { + return mNext; + } + + public void setNext(LogNode node) { + mNext = node; + } + + /** Takes a string and adds to it, with a separator, if the bit to be added isn't null. Since + * the logger takes so many arguments that might be null, this method helps cut out some of the + * agonizing tedium of writing the same 3 lines over and over. + * @param source StringBuilder containing the text to append to. + * @param addStr The String to append + * @param delimiter The String to separate the source and appended strings. A tab or comma, + * for instance. + * @return The fully concatenated String as a StringBuilder + */ + private StringBuilder appendIfNotNull(StringBuilder source, String addStr, String delimiter) { + if (addStr != null) { + if (addStr.length() == 0) { + delimiter = ""; + } + + return source.append(addStr).append(delimiter); + } + return source; + } + + // The next LogNode in the chain. + LogNode mNext; + + /** Outputs the string as a new line of log data in the LogView. */ + public void appendToLog(String s) { + append("\n" + s); + } + + +} diff --git a/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogWrapper.java b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogWrapper.java new file mode 100644 index 000000000..16a9e7ba2 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/LogWrapper.java @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2012 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.example.android.common.logger; + +import android.util.Log; + +/** + * Helper class which wraps Android's native Log utility in the Logger interface. This way + * normal DDMS output can be one of the many targets receiving and outputting logs simultaneously. + */ +public class LogWrapper implements LogNode { + + // For piping: The next node to receive Log data after this one has done its work. + private LogNode mNext; + + /** + * Returns the next LogNode in the linked list. + */ + public LogNode getNext() { + return mNext; + } + + /** + * Sets the LogNode data will be sent to.. + */ + public void setNext(LogNode node) { + mNext = node; + } + + /** + * Prints data out to the console using Android's native log mechanism. + * @param priority Log level of the data being logged. Verbose, Error, etc. + * @param tag Tag for for the log data. Can be used to organize log statements. + * @param msg The actual message to be logged. The actual message to be logged. + * @param tr If an exception was thrown, this can be sent along for the logging facilities + * to extract and print useful information. + */ + @Override + public void println(int priority, String tag, String msg, Throwable tr) { + // There actually are log methods that don't take a msg parameter. For now, + // if that's the case, just convert null to the empty string and move on. + String useMsg = msg; + if (useMsg == null) { + useMsg = ""; + } + + // If an exeption was provided, convert that exception to a usable string and attach + // it to the end of the msg method. + if (tr != null) { + msg += "\n" + Log.getStackTraceString(tr); + } + + // This is functionally identical to Log.x(tag, useMsg); + // For instance, if priority were Log.VERBOSE, this would be the same as Log.v(tag, useMsg) + Log.println(priority, tag, useMsg); + + // If this isn't the last node in the chain, move things along. + if (mNext != null) { + mNext.println(priority, tag, msg, tr); + } + } +} diff --git a/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/MessageOnlyLogFilter.java b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/MessageOnlyLogFilter.java new file mode 100644 index 000000000..19967dcd4 --- /dev/null +++ b/samples/browseable/ActivitySceneTransitionBasic/src/com.example.android.common.logger/MessageOnlyLogFilter.java @@ -0,0 +1,60 @@ +/* + * 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. + */ +package com.example.android.common.logger; + +/** + * Simple {@link LogNode} filter, removes everything except the message. + * Useful for situations like on-screen log output where you don't want a lot of metadata displayed, + * just easy-to-read message updates as they're happening. + */ +public class MessageOnlyLogFilter implements LogNode { + + LogNode mNext; + + /** + * Takes the "next" LogNode as a parameter, to simplify chaining. + * + * @param next The next LogNode in the pipeline. + */ + public MessageOnlyLogFilter(LogNode next) { + mNext = next; + } + + public MessageOnlyLogFilter() { + } + + @Override + public void println(int priority, String tag, String msg, Throwable tr) { + if (mNext != null) { + getNext().println(Log.NONE, null, msg, null); + } + } + + /** + * Returns the next LogNode in the chain. + */ + public LogNode getNext() { + return mNext; + } + + /** + * Sets the LogNode data will be sent to.. + */ + public void setNext(LogNode node) { + mNext = node; + } + +} diff --git a/samples/browseable/AppRestrictionEnforcer/AndroidManifest.xml b/samples/browseable/AppRestrictionEnforcer/AndroidManifest.xml new file mode 100644 index 000000000..c66b4b33e --- /dev/null +++ b/samples/browseable/AppRestrictionEnforcer/AndroidManifest.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/browseable/AppRestrictionEnforcer/_index.jd b/samples/browseable/AppRestrictionEnforcer/_index.jd new file mode 100644 index 000000000..f25084a06 --- /dev/null +++ b/samples/browseable/AppRestrictionEnforcer/_index.jd @@ -0,0 +1,10 @@ +page.tags="AppRestrictionEnforcer" +sample.group=Admin +@jd:body + +

+ + This sample demonstrates how to set restrictions to other apps as a profile owner. + Use AppRestrictionSchema sample as a app with available restrictions. + +

diff --git a/samples/browseable/AppRestrictionEnforcer/res/drawable-hdpi/ic_launcher.png b/samples/browseable/AppRestrictionEnforcer/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e7bd161ef3092d2c4f99c3f755ec754e4ae796d1 GIT binary patch literal 3667 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 VvwRn8zxx0H002ovPDHLkV1m3~U+w?^ literal 0 HcmV?d00001 diff --git a/samples/browseable/AppRestrictionEnforcer/res/drawable-xhdpi/ic_launcher.png b/samples/browseable/AppRestrictionEnforcer/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec33688864ff78c8fd1f38503f1e001b2af0ba1 GIT binary patch literal 5098 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 + + + + + + + + diff --git a/samples/browseable/AppRestrictionEnforcer/res/layout/activity_main_real.xml b/samples/browseable/AppRestrictionEnforcer/res/layout/activity_main_real.xml new file mode 100644 index 000000000..d36c2b6ad --- /dev/null +++ b/samples/browseable/AppRestrictionEnforcer/res/layout/activity_main_real.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/browseable/AppRestrictionEnforcer/res/layout/fragment_app_restriction_enforcer.xml b/samples/browseable/AppRestrictionEnforcer/res/layout/fragment_app_restriction_enforcer.xml new file mode 100644 index 000000000..e6c50a245 --- /dev/null +++ b/samples/browseable/AppRestrictionEnforcer/res/layout/fragment_app_restriction_enforcer.xml @@ -0,0 +1,44 @@ + + + + + + +